├── .gitignore ├── .prettierrc ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── manifest.json ├── package-lock.json ├── package.json ├── rollup.config.js ├── src ├── components │ ├── CustomHeader.tsx │ ├── DataGrid.tsx │ ├── ErrorBoundary.tsx │ ├── FileCellRenderer.tsx │ ├── TagsCellRenderer.tsx │ ├── URLCellRenderer.tsx │ └── prompt │ │ ├── GenericWideInputPropmt.ts │ │ └── YesNoPrompt.ts ├── database │ └── index.ts ├── i18n │ ├── index.ts │ └── locales │ │ ├── en.ts │ │ └── zh-cn.ts ├── main.ts ├── shimes.d.ts ├── styles │ └── TableView.css ├── types │ └── index.ts ├── utils │ └── index.ts └── views │ └── TableView.tsx └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | main.js 4 | styles.css 5 | obsidian-agtable.zip 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "tabWidth": 2, 4 | "semi": false, 5 | "singleQuote": true, 6 | "trailingComma": "es5", 7 | "bracketSpacing": true, 8 | "arrowParens": "always" 9 | } 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "[javascript]": { 4 | "editor.defaultFormatter": "esbenp.prettier-vscode" 5 | }, 6 | "editor.formatOnType": true, 7 | "editor.formatOnSave": true 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Liam Cain 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AGtable 2 | 3 | 一个用于提供数据网格(data-grid)的 obsidian 插件。该插件基于[ag-grid](https://github.com/ag-grid/ag-grid)构建。 4 | 5 | 该插件处于测试阶段,我将测试大约一个月,并添加部分单元测试,以保证未来稳定版数据不会丢失和混乱。介意者谨慎安装。所有数据都在`.obsidian/agtable.json`,请定时备份。 6 | 7 | # 主要功能 8 | 9 | - 创建数据网格 10 | - 在编辑模式下使用命令`add new agtable` 11 | - 列 12 | - 双击重命名列 13 | - 行排序图标:列名右侧第一个图标点击后按当且列降序,升序,还原三种方式切换排序,并不改变原始数据顺序 14 | - 列菜单图标:顾名思义 15 | - 行拖拽排序 16 | - 行 17 | - 行拖拽排序图标 18 | - 单元格编辑 19 | - 鼠标框选单元格 20 | - ctrl+左击点选单元格 21 | - 右键菜单:顾名思义 22 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | {"id":"Obsidian-Agtable","name":"Obsidian Agtable","version":"0.0.3","minAppVersion":"0.9.12","description":"Help user use markdwon table","author":"windily-cloud","authorUrl":"","isDesktopOnly":false} -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "obsidian-agtable", 3 | "version": "0.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "obsidian-agtable", 9 | "version": "0.0.1", 10 | "license": "ISC", 11 | "dependencies": { 12 | "ag-grid-community": "^28.1.0", 13 | "ag-grid-enterprise": "^28.1.0", 14 | "ag-grid-react": "^28.1.0", 15 | "axios": "^0.27.2", 16 | "lowdb": "^3.0.0", 17 | "react": "^17.0.2", 18 | "react-dom": "^17.0.2" 19 | }, 20 | "devDependencies": { 21 | "@rollup/plugin-commonjs": "^21.0.2", 22 | "@rollup/plugin-node-resolve": "^13.1.3", 23 | "@rollup/plugin-typescript": "^8.3.0", 24 | "@types/node": "^17.0.20", 25 | "@types/react": "^17.0.39", 26 | "@types/react-dom": "^17.0.11", 27 | "obsidian": "^0.13.26", 28 | "prettier": "^2.6.0", 29 | "rollup": "^2.68.0", 30 | "rollup-plugin-postcss": "^4.0.2", 31 | "rollup-plugin-terser": "^7.0.2", 32 | "tslib": "^2.3.1", 33 | "typescript": "^4.5.5" 34 | } 35 | }, 36 | "node_modules/@babel/code-frame": { 37 | "version": "7.18.6", 38 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 39 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 40 | "dev": true, 41 | "dependencies": { 42 | "@babel/highlight": "^7.18.6" 43 | }, 44 | "engines": { 45 | "node": ">=6.9.0" 46 | } 47 | }, 48 | "node_modules/@babel/helper-validator-identifier": { 49 | "version": "7.18.6", 50 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 51 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 52 | "dev": true, 53 | "engines": { 54 | "node": ">=6.9.0" 55 | } 56 | }, 57 | "node_modules/@babel/highlight": { 58 | "version": "7.18.6", 59 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 60 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 61 | "dev": true, 62 | "dependencies": { 63 | "@babel/helper-validator-identifier": "^7.18.6", 64 | "chalk": "^2.0.0", 65 | "js-tokens": "^4.0.0" 66 | }, 67 | "engines": { 68 | "node": ">=6.9.0" 69 | } 70 | }, 71 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 72 | "version": "3.2.1", 73 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 74 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 75 | "dev": true, 76 | "dependencies": { 77 | "color-convert": "^1.9.0" 78 | }, 79 | "engines": { 80 | "node": ">=4" 81 | } 82 | }, 83 | "node_modules/@babel/highlight/node_modules/chalk": { 84 | "version": "2.4.2", 85 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 86 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 87 | "dev": true, 88 | "dependencies": { 89 | "ansi-styles": "^3.2.1", 90 | "escape-string-regexp": "^1.0.5", 91 | "supports-color": "^5.3.0" 92 | }, 93 | "engines": { 94 | "node": ">=4" 95 | } 96 | }, 97 | "node_modules/@babel/highlight/node_modules/color-convert": { 98 | "version": "1.9.3", 99 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 100 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 101 | "dev": true, 102 | "dependencies": { 103 | "color-name": "1.1.3" 104 | } 105 | }, 106 | "node_modules/@babel/highlight/node_modules/color-name": { 107 | "version": "1.1.3", 108 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 109 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 110 | "dev": true 111 | }, 112 | "node_modules/@babel/highlight/node_modules/has-flag": { 113 | "version": "3.0.0", 114 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 115 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 116 | "dev": true, 117 | "engines": { 118 | "node": ">=4" 119 | } 120 | }, 121 | "node_modules/@babel/highlight/node_modules/supports-color": { 122 | "version": "5.5.0", 123 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 124 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 125 | "dev": true, 126 | "dependencies": { 127 | "has-flag": "^3.0.0" 128 | }, 129 | "engines": { 130 | "node": ">=4" 131 | } 132 | }, 133 | "node_modules/@codemirror/rangeset": { 134 | "version": "0.19.9", 135 | "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz", 136 | "integrity": "sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ==", 137 | "deprecated": "As of 0.20.0, this package has been merged into @codemirror/state", 138 | "dev": true, 139 | "dependencies": { 140 | "@codemirror/state": "^0.19.0" 141 | } 142 | }, 143 | "node_modules/@codemirror/state": { 144 | "version": "0.19.9", 145 | "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz", 146 | "integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==", 147 | "dev": true, 148 | "dependencies": { 149 | "@codemirror/text": "^0.19.0" 150 | } 151 | }, 152 | "node_modules/@codemirror/text": { 153 | "version": "0.19.6", 154 | "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz", 155 | "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==", 156 | "deprecated": "As of 0.20.0, this package has been merged into @codemirror/state", 157 | "dev": true 158 | }, 159 | "node_modules/@codemirror/view": { 160 | "version": "0.19.48", 161 | "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.48.tgz", 162 | "integrity": "sha512-0eg7D2Nz4S8/caetCTz61rK0tkHI17V/d15Jy0kLOT8dTLGGNJUponDnW28h2B6bERmPlVHKh8MJIr5OCp1nGw==", 163 | "dev": true, 164 | "dependencies": { 165 | "@codemirror/rangeset": "^0.19.5", 166 | "@codemirror/state": "^0.19.3", 167 | "@codemirror/text": "^0.19.0", 168 | "style-mod": "^4.0.0", 169 | "w3c-keyname": "^2.2.4" 170 | } 171 | }, 172 | "node_modules/@jridgewell/gen-mapping": { 173 | "version": "0.3.2", 174 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 175 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 176 | "dev": true, 177 | "dependencies": { 178 | "@jridgewell/set-array": "^1.0.1", 179 | "@jridgewell/sourcemap-codec": "^1.4.10", 180 | "@jridgewell/trace-mapping": "^0.3.9" 181 | }, 182 | "engines": { 183 | "node": ">=6.0.0" 184 | } 185 | }, 186 | "node_modules/@jridgewell/resolve-uri": { 187 | "version": "3.1.0", 188 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 189 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 190 | "dev": true, 191 | "engines": { 192 | "node": ">=6.0.0" 193 | } 194 | }, 195 | "node_modules/@jridgewell/set-array": { 196 | "version": "1.1.2", 197 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 198 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 199 | "dev": true, 200 | "engines": { 201 | "node": ">=6.0.0" 202 | } 203 | }, 204 | "node_modules/@jridgewell/source-map": { 205 | "version": "0.3.2", 206 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", 207 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", 208 | "dev": true, 209 | "dependencies": { 210 | "@jridgewell/gen-mapping": "^0.3.0", 211 | "@jridgewell/trace-mapping": "^0.3.9" 212 | } 213 | }, 214 | "node_modules/@jridgewell/sourcemap-codec": { 215 | "version": "1.4.14", 216 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 217 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 218 | "dev": true 219 | }, 220 | "node_modules/@jridgewell/trace-mapping": { 221 | "version": "0.3.15", 222 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", 223 | "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", 224 | "dev": true, 225 | "dependencies": { 226 | "@jridgewell/resolve-uri": "^3.0.3", 227 | "@jridgewell/sourcemap-codec": "^1.4.10" 228 | } 229 | }, 230 | "node_modules/@rollup/plugin-commonjs": { 231 | "version": "21.1.0", 232 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz", 233 | "integrity": "sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==", 234 | "dev": true, 235 | "dependencies": { 236 | "@rollup/pluginutils": "^3.1.0", 237 | "commondir": "^1.0.1", 238 | "estree-walker": "^2.0.1", 239 | "glob": "^7.1.6", 240 | "is-reference": "^1.2.1", 241 | "magic-string": "^0.25.7", 242 | "resolve": "^1.17.0" 243 | }, 244 | "engines": { 245 | "node": ">= 8.0.0" 246 | }, 247 | "peerDependencies": { 248 | "rollup": "^2.38.3" 249 | } 250 | }, 251 | "node_modules/@rollup/plugin-node-resolve": { 252 | "version": "13.3.0", 253 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", 254 | "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", 255 | "dev": true, 256 | "dependencies": { 257 | "@rollup/pluginutils": "^3.1.0", 258 | "@types/resolve": "1.17.1", 259 | "deepmerge": "^4.2.2", 260 | "is-builtin-module": "^3.1.0", 261 | "is-module": "^1.0.0", 262 | "resolve": "^1.19.0" 263 | }, 264 | "engines": { 265 | "node": ">= 10.0.0" 266 | }, 267 | "peerDependencies": { 268 | "rollup": "^2.42.0" 269 | } 270 | }, 271 | "node_modules/@rollup/plugin-typescript": { 272 | "version": "8.3.4", 273 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.4.tgz", 274 | "integrity": "sha512-wt7JnYE9antX6BOXtsxGoeVSu4dZfw0dU3xykfOQ4hC3EddxRbVG/K0xiY1Wup7QOHJcjLYXWAn0Kx9Z1SBHHg==", 275 | "dev": true, 276 | "dependencies": { 277 | "@rollup/pluginutils": "^3.1.0", 278 | "resolve": "^1.17.0" 279 | }, 280 | "engines": { 281 | "node": ">=8.0.0" 282 | }, 283 | "peerDependencies": { 284 | "rollup": "^2.14.0", 285 | "tslib": "*", 286 | "typescript": ">=3.7.0" 287 | }, 288 | "peerDependenciesMeta": { 289 | "tslib": { 290 | "optional": true 291 | } 292 | } 293 | }, 294 | "node_modules/@rollup/pluginutils": { 295 | "version": "3.1.0", 296 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 297 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 298 | "dev": true, 299 | "dependencies": { 300 | "@types/estree": "0.0.39", 301 | "estree-walker": "^1.0.1", 302 | "picomatch": "^2.2.2" 303 | }, 304 | "engines": { 305 | "node": ">= 8.0.0" 306 | }, 307 | "peerDependencies": { 308 | "rollup": "^1.20.0||^2.0.0" 309 | } 310 | }, 311 | "node_modules/@rollup/pluginutils/node_modules/estree-walker": { 312 | "version": "1.0.1", 313 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 314 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 315 | "dev": true 316 | }, 317 | "node_modules/@trysound/sax": { 318 | "version": "0.2.0", 319 | "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", 320 | "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", 321 | "dev": true, 322 | "engines": { 323 | "node": ">=10.13.0" 324 | } 325 | }, 326 | "node_modules/@types/codemirror": { 327 | "version": "0.0.108", 328 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", 329 | "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", 330 | "dev": true, 331 | "dependencies": { 332 | "@types/tern": "*" 333 | } 334 | }, 335 | "node_modules/@types/estree": { 336 | "version": "0.0.39", 337 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 338 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 339 | "dev": true 340 | }, 341 | "node_modules/@types/node": { 342 | "version": "17.0.45", 343 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", 344 | "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", 345 | "dev": true 346 | }, 347 | "node_modules/@types/prop-types": { 348 | "version": "15.7.5", 349 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 350 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 351 | "dev": true 352 | }, 353 | "node_modules/@types/react": { 354 | "version": "17.0.48", 355 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", 356 | "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", 357 | "dev": true, 358 | "dependencies": { 359 | "@types/prop-types": "*", 360 | "@types/scheduler": "*", 361 | "csstype": "^3.0.2" 362 | } 363 | }, 364 | "node_modules/@types/react-dom": { 365 | "version": "17.0.17", 366 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", 367 | "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", 368 | "dev": true, 369 | "dependencies": { 370 | "@types/react": "^17" 371 | } 372 | }, 373 | "node_modules/@types/resolve": { 374 | "version": "1.17.1", 375 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", 376 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", 377 | "dev": true, 378 | "dependencies": { 379 | "@types/node": "*" 380 | } 381 | }, 382 | "node_modules/@types/scheduler": { 383 | "version": "0.16.2", 384 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 385 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 386 | "dev": true 387 | }, 388 | "node_modules/@types/tern": { 389 | "version": "0.23.4", 390 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", 391 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", 392 | "dev": true, 393 | "dependencies": { 394 | "@types/estree": "*" 395 | } 396 | }, 397 | "node_modules/acorn": { 398 | "version": "8.8.0", 399 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 400 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 401 | "dev": true, 402 | "bin": { 403 | "acorn": "bin/acorn" 404 | }, 405 | "engines": { 406 | "node": ">=0.4.0" 407 | } 408 | }, 409 | "node_modules/ag-grid-community": { 410 | "version": "28.1.0", 411 | "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-28.1.0.tgz", 412 | "integrity": "sha512-iCrdRWImvj6pOKaRQXdaPfZ0EI4fCQgTVv5PiCP9otbDPQBxyxjFVn+jEoV0umOqpqPAMoDIbG9poKyWuHl/EA==" 413 | }, 414 | "node_modules/ag-grid-enterprise": { 415 | "version": "28.1.0", 416 | "resolved": "https://registry.npmjs.org/ag-grid-enterprise/-/ag-grid-enterprise-28.1.0.tgz", 417 | "integrity": "sha512-TMiVi5MlkOiinZ7yvybHygmEcsaanNYLwjBR7CilTs+3bRvpVlCZ/Zjo+ekVgM/Lc59DE8SUDtbxW6RPgA/Uqg==" 418 | }, 419 | "node_modules/ag-grid-react": { 420 | "version": "28.1.0", 421 | "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-28.1.0.tgz", 422 | "integrity": "sha512-4Z/7T5kYKWqUhDrSY6bgseiKLiuMwjG4zHYIVtZwGwma7hb5e2CYwDdnfoWKArR6a7TzF86JiRpzd2WlLaARdQ==", 423 | "dependencies": { 424 | "prop-types": "^15.8.1" 425 | }, 426 | "peerDependencies": { 427 | "ag-grid-community": "~28.1.0", 428 | "react": "^16.3.0 || ^17.0.0 || ^18.0.0", 429 | "react-dom": "^16.3.0 || ^17.0.0 || ^18.0.0" 430 | } 431 | }, 432 | "node_modules/ansi-styles": { 433 | "version": "4.3.0", 434 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 435 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 436 | "dev": true, 437 | "dependencies": { 438 | "color-convert": "^2.0.1" 439 | }, 440 | "engines": { 441 | "node": ">=8" 442 | }, 443 | "funding": { 444 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 445 | } 446 | }, 447 | "node_modules/asynckit": { 448 | "version": "0.4.0", 449 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 450 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 451 | }, 452 | "node_modules/axios": { 453 | "version": "0.27.2", 454 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 455 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 456 | "dependencies": { 457 | "follow-redirects": "^1.14.9", 458 | "form-data": "^4.0.0" 459 | } 460 | }, 461 | "node_modules/balanced-match": { 462 | "version": "1.0.2", 463 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 464 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 465 | "dev": true 466 | }, 467 | "node_modules/boolbase": { 468 | "version": "1.0.0", 469 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 470 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", 471 | "dev": true 472 | }, 473 | "node_modules/brace-expansion": { 474 | "version": "1.1.11", 475 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 476 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 477 | "dev": true, 478 | "dependencies": { 479 | "balanced-match": "^1.0.0", 480 | "concat-map": "0.0.1" 481 | } 482 | }, 483 | "node_modules/browserslist": { 484 | "version": "4.21.3", 485 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", 486 | "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", 487 | "dev": true, 488 | "funding": [ 489 | { 490 | "type": "opencollective", 491 | "url": "https://opencollective.com/browserslist" 492 | }, 493 | { 494 | "type": "tidelift", 495 | "url": "https://tidelift.com/funding/github/npm/browserslist" 496 | } 497 | ], 498 | "dependencies": { 499 | "caniuse-lite": "^1.0.30001370", 500 | "electron-to-chromium": "^1.4.202", 501 | "node-releases": "^2.0.6", 502 | "update-browserslist-db": "^1.0.5" 503 | }, 504 | "bin": { 505 | "browserslist": "cli.js" 506 | }, 507 | "engines": { 508 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 509 | } 510 | }, 511 | "node_modules/buffer-from": { 512 | "version": "1.1.2", 513 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 514 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 515 | "dev": true 516 | }, 517 | "node_modules/builtin-modules": { 518 | "version": "3.3.0", 519 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 520 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 521 | "dev": true, 522 | "engines": { 523 | "node": ">=6" 524 | }, 525 | "funding": { 526 | "url": "https://github.com/sponsors/sindresorhus" 527 | } 528 | }, 529 | "node_modules/caniuse-api": { 530 | "version": "3.0.0", 531 | "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", 532 | "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", 533 | "dev": true, 534 | "dependencies": { 535 | "browserslist": "^4.0.0", 536 | "caniuse-lite": "^1.0.0", 537 | "lodash.memoize": "^4.1.2", 538 | "lodash.uniq": "^4.5.0" 539 | } 540 | }, 541 | "node_modules/caniuse-lite": { 542 | "version": "1.0.30001378", 543 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001378.tgz", 544 | "integrity": "sha512-JVQnfoO7FK7WvU4ZkBRbPjaot4+YqxogSDosHv0Hv5mWpUESmN+UubMU6L/hGz8QlQ2aY5U0vR6MOs6j/CXpNA==", 545 | "dev": true, 546 | "funding": [ 547 | { 548 | "type": "opencollective", 549 | "url": "https://opencollective.com/browserslist" 550 | }, 551 | { 552 | "type": "tidelift", 553 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 554 | } 555 | ] 556 | }, 557 | "node_modules/chalk": { 558 | "version": "4.1.2", 559 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 560 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 561 | "dev": true, 562 | "dependencies": { 563 | "ansi-styles": "^4.1.0", 564 | "supports-color": "^7.1.0" 565 | }, 566 | "engines": { 567 | "node": ">=10" 568 | }, 569 | "funding": { 570 | "url": "https://github.com/chalk/chalk?sponsor=1" 571 | } 572 | }, 573 | "node_modules/color-convert": { 574 | "version": "2.0.1", 575 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 576 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 577 | "dev": true, 578 | "dependencies": { 579 | "color-name": "~1.1.4" 580 | }, 581 | "engines": { 582 | "node": ">=7.0.0" 583 | } 584 | }, 585 | "node_modules/color-name": { 586 | "version": "1.1.4", 587 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 588 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 589 | "dev": true 590 | }, 591 | "node_modules/colord": { 592 | "version": "2.9.3", 593 | "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", 594 | "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", 595 | "dev": true 596 | }, 597 | "node_modules/combined-stream": { 598 | "version": "1.0.8", 599 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 600 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 601 | "dependencies": { 602 | "delayed-stream": "~1.0.0" 603 | }, 604 | "engines": { 605 | "node": ">= 0.8" 606 | } 607 | }, 608 | "node_modules/commander": { 609 | "version": "7.2.0", 610 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 611 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 612 | "dev": true, 613 | "engines": { 614 | "node": ">= 10" 615 | } 616 | }, 617 | "node_modules/commondir": { 618 | "version": "1.0.1", 619 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 620 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 621 | "dev": true 622 | }, 623 | "node_modules/concat-map": { 624 | "version": "0.0.1", 625 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 626 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 627 | "dev": true 628 | }, 629 | "node_modules/concat-with-sourcemaps": { 630 | "version": "1.1.0", 631 | "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", 632 | "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", 633 | "dev": true, 634 | "dependencies": { 635 | "source-map": "^0.6.1" 636 | } 637 | }, 638 | "node_modules/css-declaration-sorter": { 639 | "version": "6.3.0", 640 | "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", 641 | "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", 642 | "dev": true, 643 | "engines": { 644 | "node": "^10 || ^12 || >=14" 645 | }, 646 | "peerDependencies": { 647 | "postcss": "^8.0.9" 648 | } 649 | }, 650 | "node_modules/css-select": { 651 | "version": "4.3.0", 652 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", 653 | "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", 654 | "dev": true, 655 | "dependencies": { 656 | "boolbase": "^1.0.0", 657 | "css-what": "^6.0.1", 658 | "domhandler": "^4.3.1", 659 | "domutils": "^2.8.0", 660 | "nth-check": "^2.0.1" 661 | }, 662 | "funding": { 663 | "url": "https://github.com/sponsors/fb55" 664 | } 665 | }, 666 | "node_modules/css-tree": { 667 | "version": "1.1.3", 668 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", 669 | "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", 670 | "dev": true, 671 | "dependencies": { 672 | "mdn-data": "2.0.14", 673 | "source-map": "^0.6.1" 674 | }, 675 | "engines": { 676 | "node": ">=8.0.0" 677 | } 678 | }, 679 | "node_modules/css-what": { 680 | "version": "6.1.0", 681 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", 682 | "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", 683 | "dev": true, 684 | "engines": { 685 | "node": ">= 6" 686 | }, 687 | "funding": { 688 | "url": "https://github.com/sponsors/fb55" 689 | } 690 | }, 691 | "node_modules/cssesc": { 692 | "version": "3.0.0", 693 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 694 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 695 | "dev": true, 696 | "bin": { 697 | "cssesc": "bin/cssesc" 698 | }, 699 | "engines": { 700 | "node": ">=4" 701 | } 702 | }, 703 | "node_modules/cssnano": { 704 | "version": "5.1.13", 705 | "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", 706 | "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", 707 | "dev": true, 708 | "dependencies": { 709 | "cssnano-preset-default": "^5.2.12", 710 | "lilconfig": "^2.0.3", 711 | "yaml": "^1.10.2" 712 | }, 713 | "engines": { 714 | "node": "^10 || ^12 || >=14.0" 715 | }, 716 | "funding": { 717 | "type": "opencollective", 718 | "url": "https://opencollective.com/cssnano" 719 | }, 720 | "peerDependencies": { 721 | "postcss": "^8.2.15" 722 | } 723 | }, 724 | "node_modules/cssnano-preset-default": { 725 | "version": "5.2.12", 726 | "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", 727 | "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", 728 | "dev": true, 729 | "dependencies": { 730 | "css-declaration-sorter": "^6.3.0", 731 | "cssnano-utils": "^3.1.0", 732 | "postcss-calc": "^8.2.3", 733 | "postcss-colormin": "^5.3.0", 734 | "postcss-convert-values": "^5.1.2", 735 | "postcss-discard-comments": "^5.1.2", 736 | "postcss-discard-duplicates": "^5.1.0", 737 | "postcss-discard-empty": "^5.1.1", 738 | "postcss-discard-overridden": "^5.1.0", 739 | "postcss-merge-longhand": "^5.1.6", 740 | "postcss-merge-rules": "^5.1.2", 741 | "postcss-minify-font-values": "^5.1.0", 742 | "postcss-minify-gradients": "^5.1.1", 743 | "postcss-minify-params": "^5.1.3", 744 | "postcss-minify-selectors": "^5.2.1", 745 | "postcss-normalize-charset": "^5.1.0", 746 | "postcss-normalize-display-values": "^5.1.0", 747 | "postcss-normalize-positions": "^5.1.1", 748 | "postcss-normalize-repeat-style": "^5.1.1", 749 | "postcss-normalize-string": "^5.1.0", 750 | "postcss-normalize-timing-functions": "^5.1.0", 751 | "postcss-normalize-unicode": "^5.1.0", 752 | "postcss-normalize-url": "^5.1.0", 753 | "postcss-normalize-whitespace": "^5.1.1", 754 | "postcss-ordered-values": "^5.1.3", 755 | "postcss-reduce-initial": "^5.1.0", 756 | "postcss-reduce-transforms": "^5.1.0", 757 | "postcss-svgo": "^5.1.0", 758 | "postcss-unique-selectors": "^5.1.1" 759 | }, 760 | "engines": { 761 | "node": "^10 || ^12 || >=14.0" 762 | }, 763 | "peerDependencies": { 764 | "postcss": "^8.2.15" 765 | } 766 | }, 767 | "node_modules/cssnano-utils": { 768 | "version": "3.1.0", 769 | "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", 770 | "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", 771 | "dev": true, 772 | "engines": { 773 | "node": "^10 || ^12 || >=14.0" 774 | }, 775 | "peerDependencies": { 776 | "postcss": "^8.2.15" 777 | } 778 | }, 779 | "node_modules/csso": { 780 | "version": "4.2.0", 781 | "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", 782 | "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", 783 | "dev": true, 784 | "dependencies": { 785 | "css-tree": "^1.1.2" 786 | }, 787 | "engines": { 788 | "node": ">=8.0.0" 789 | } 790 | }, 791 | "node_modules/csstype": { 792 | "version": "3.1.0", 793 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", 794 | "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", 795 | "dev": true 796 | }, 797 | "node_modules/deepmerge": { 798 | "version": "4.2.2", 799 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 800 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 801 | "dev": true, 802 | "engines": { 803 | "node": ">=0.10.0" 804 | } 805 | }, 806 | "node_modules/delayed-stream": { 807 | "version": "1.0.0", 808 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 809 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 810 | "engines": { 811 | "node": ">=0.4.0" 812 | } 813 | }, 814 | "node_modules/dom-serializer": { 815 | "version": "1.4.1", 816 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", 817 | "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", 818 | "dev": true, 819 | "dependencies": { 820 | "domelementtype": "^2.0.1", 821 | "domhandler": "^4.2.0", 822 | "entities": "^2.0.0" 823 | }, 824 | "funding": { 825 | "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" 826 | } 827 | }, 828 | "node_modules/domelementtype": { 829 | "version": "2.3.0", 830 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 831 | "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", 832 | "dev": true, 833 | "funding": [ 834 | { 835 | "type": "github", 836 | "url": "https://github.com/sponsors/fb55" 837 | } 838 | ] 839 | }, 840 | "node_modules/domhandler": { 841 | "version": "4.3.1", 842 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", 843 | "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", 844 | "dev": true, 845 | "dependencies": { 846 | "domelementtype": "^2.2.0" 847 | }, 848 | "engines": { 849 | "node": ">= 4" 850 | }, 851 | "funding": { 852 | "url": "https://github.com/fb55/domhandler?sponsor=1" 853 | } 854 | }, 855 | "node_modules/domutils": { 856 | "version": "2.8.0", 857 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", 858 | "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", 859 | "dev": true, 860 | "dependencies": { 861 | "dom-serializer": "^1.0.1", 862 | "domelementtype": "^2.2.0", 863 | "domhandler": "^4.2.0" 864 | }, 865 | "funding": { 866 | "url": "https://github.com/fb55/domutils?sponsor=1" 867 | } 868 | }, 869 | "node_modules/electron-to-chromium": { 870 | "version": "1.4.225", 871 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.225.tgz", 872 | "integrity": "sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw==", 873 | "dev": true 874 | }, 875 | "node_modules/entities": { 876 | "version": "2.2.0", 877 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 878 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", 879 | "dev": true, 880 | "funding": { 881 | "url": "https://github.com/fb55/entities?sponsor=1" 882 | } 883 | }, 884 | "node_modules/escalade": { 885 | "version": "3.1.1", 886 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 887 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 888 | "dev": true, 889 | "engines": { 890 | "node": ">=6" 891 | } 892 | }, 893 | "node_modules/escape-string-regexp": { 894 | "version": "1.0.5", 895 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 896 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 897 | "dev": true, 898 | "engines": { 899 | "node": ">=0.8.0" 900 | } 901 | }, 902 | "node_modules/estree-walker": { 903 | "version": "2.0.2", 904 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 905 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 906 | "dev": true 907 | }, 908 | "node_modules/eventemitter3": { 909 | "version": "4.0.7", 910 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 911 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 912 | "dev": true 913 | }, 914 | "node_modules/follow-redirects": { 915 | "version": "1.15.1", 916 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", 917 | "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", 918 | "funding": [ 919 | { 920 | "type": "individual", 921 | "url": "https://github.com/sponsors/RubenVerborgh" 922 | } 923 | ], 924 | "engines": { 925 | "node": ">=4.0" 926 | }, 927 | "peerDependenciesMeta": { 928 | "debug": { 929 | "optional": true 930 | } 931 | } 932 | }, 933 | "node_modules/form-data": { 934 | "version": "4.0.0", 935 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 936 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 937 | "dependencies": { 938 | "asynckit": "^0.4.0", 939 | "combined-stream": "^1.0.8", 940 | "mime-types": "^2.1.12" 941 | }, 942 | "engines": { 943 | "node": ">= 6" 944 | } 945 | }, 946 | "node_modules/fs.realpath": { 947 | "version": "1.0.0", 948 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 949 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 950 | "dev": true 951 | }, 952 | "node_modules/fsevents": { 953 | "version": "2.3.2", 954 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 955 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 956 | "dev": true, 957 | "hasInstallScript": true, 958 | "optional": true, 959 | "os": [ 960 | "darwin" 961 | ], 962 | "engines": { 963 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 964 | } 965 | }, 966 | "node_modules/function-bind": { 967 | "version": "1.1.1", 968 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 969 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 970 | "dev": true 971 | }, 972 | "node_modules/generic-names": { 973 | "version": "4.0.0", 974 | "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", 975 | "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", 976 | "dev": true, 977 | "dependencies": { 978 | "loader-utils": "^3.2.0" 979 | } 980 | }, 981 | "node_modules/glob": { 982 | "version": "7.2.3", 983 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 984 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 985 | "dev": true, 986 | "dependencies": { 987 | "fs.realpath": "^1.0.0", 988 | "inflight": "^1.0.4", 989 | "inherits": "2", 990 | "minimatch": "^3.1.1", 991 | "once": "^1.3.0", 992 | "path-is-absolute": "^1.0.0" 993 | }, 994 | "engines": { 995 | "node": "*" 996 | }, 997 | "funding": { 998 | "url": "https://github.com/sponsors/isaacs" 999 | } 1000 | }, 1001 | "node_modules/has": { 1002 | "version": "1.0.3", 1003 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1004 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1005 | "dev": true, 1006 | "dependencies": { 1007 | "function-bind": "^1.1.1" 1008 | }, 1009 | "engines": { 1010 | "node": ">= 0.4.0" 1011 | } 1012 | }, 1013 | "node_modules/has-flag": { 1014 | "version": "4.0.0", 1015 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1016 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1017 | "dev": true, 1018 | "engines": { 1019 | "node": ">=8" 1020 | } 1021 | }, 1022 | "node_modules/icss-replace-symbols": { 1023 | "version": "1.1.0", 1024 | "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", 1025 | "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", 1026 | "dev": true 1027 | }, 1028 | "node_modules/icss-utils": { 1029 | "version": "5.1.0", 1030 | "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", 1031 | "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", 1032 | "dev": true, 1033 | "engines": { 1034 | "node": "^10 || ^12 || >= 14" 1035 | }, 1036 | "peerDependencies": { 1037 | "postcss": "^8.1.0" 1038 | } 1039 | }, 1040 | "node_modules/import-cwd": { 1041 | "version": "3.0.0", 1042 | "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", 1043 | "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", 1044 | "dev": true, 1045 | "dependencies": { 1046 | "import-from": "^3.0.0" 1047 | }, 1048 | "engines": { 1049 | "node": ">=8" 1050 | } 1051 | }, 1052 | "node_modules/import-from": { 1053 | "version": "3.0.0", 1054 | "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", 1055 | "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", 1056 | "dev": true, 1057 | "dependencies": { 1058 | "resolve-from": "^5.0.0" 1059 | }, 1060 | "engines": { 1061 | "node": ">=8" 1062 | } 1063 | }, 1064 | "node_modules/inflight": { 1065 | "version": "1.0.6", 1066 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1067 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1068 | "dev": true, 1069 | "dependencies": { 1070 | "once": "^1.3.0", 1071 | "wrappy": "1" 1072 | } 1073 | }, 1074 | "node_modules/inherits": { 1075 | "version": "2.0.4", 1076 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1077 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1078 | "dev": true 1079 | }, 1080 | "node_modules/is-builtin-module": { 1081 | "version": "3.2.0", 1082 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", 1083 | "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", 1084 | "dev": true, 1085 | "dependencies": { 1086 | "builtin-modules": "^3.3.0" 1087 | }, 1088 | "engines": { 1089 | "node": ">=6" 1090 | }, 1091 | "funding": { 1092 | "url": "https://github.com/sponsors/sindresorhus" 1093 | } 1094 | }, 1095 | "node_modules/is-core-module": { 1096 | "version": "2.10.0", 1097 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", 1098 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", 1099 | "dev": true, 1100 | "dependencies": { 1101 | "has": "^1.0.3" 1102 | }, 1103 | "funding": { 1104 | "url": "https://github.com/sponsors/ljharb" 1105 | } 1106 | }, 1107 | "node_modules/is-module": { 1108 | "version": "1.0.0", 1109 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1110 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 1111 | "dev": true 1112 | }, 1113 | "node_modules/is-reference": { 1114 | "version": "1.2.1", 1115 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 1116 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 1117 | "dev": true, 1118 | "dependencies": { 1119 | "@types/estree": "*" 1120 | } 1121 | }, 1122 | "node_modules/jest-worker": { 1123 | "version": "26.6.2", 1124 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", 1125 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", 1126 | "dev": true, 1127 | "dependencies": { 1128 | "@types/node": "*", 1129 | "merge-stream": "^2.0.0", 1130 | "supports-color": "^7.0.0" 1131 | }, 1132 | "engines": { 1133 | "node": ">= 10.13.0" 1134 | } 1135 | }, 1136 | "node_modules/js-tokens": { 1137 | "version": "4.0.0", 1138 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1139 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1140 | }, 1141 | "node_modules/lilconfig": { 1142 | "version": "2.0.6", 1143 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", 1144 | "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", 1145 | "dev": true, 1146 | "engines": { 1147 | "node": ">=10" 1148 | } 1149 | }, 1150 | "node_modules/loader-utils": { 1151 | "version": "3.2.0", 1152 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", 1153 | "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", 1154 | "dev": true, 1155 | "engines": { 1156 | "node": ">= 12.13.0" 1157 | } 1158 | }, 1159 | "node_modules/lodash.camelcase": { 1160 | "version": "4.3.0", 1161 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 1162 | "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", 1163 | "dev": true 1164 | }, 1165 | "node_modules/lodash.memoize": { 1166 | "version": "4.1.2", 1167 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", 1168 | "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", 1169 | "dev": true 1170 | }, 1171 | "node_modules/lodash.uniq": { 1172 | "version": "4.5.0", 1173 | "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", 1174 | "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", 1175 | "dev": true 1176 | }, 1177 | "node_modules/loose-envify": { 1178 | "version": "1.4.0", 1179 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1180 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1181 | "dependencies": { 1182 | "js-tokens": "^3.0.0 || ^4.0.0" 1183 | }, 1184 | "bin": { 1185 | "loose-envify": "cli.js" 1186 | } 1187 | }, 1188 | "node_modules/lowdb": { 1189 | "version": "3.0.0", 1190 | "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-3.0.0.tgz", 1191 | "integrity": "sha512-9KZRulmIcU8fZuWiaM0d5e2/nPnrFyXkeXVpqT+MJS+vgbgOf1EbtvgQmba8HwUFgDl1oeZR6XqEJnkJmQdKmg==", 1192 | "dependencies": { 1193 | "steno": "^2.1.0" 1194 | }, 1195 | "engines": { 1196 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1197 | }, 1198 | "funding": { 1199 | "url": "https://github.com/sponsors/typicode" 1200 | } 1201 | }, 1202 | "node_modules/magic-string": { 1203 | "version": "0.25.9", 1204 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 1205 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 1206 | "dev": true, 1207 | "dependencies": { 1208 | "sourcemap-codec": "^1.4.8" 1209 | } 1210 | }, 1211 | "node_modules/mdn-data": { 1212 | "version": "2.0.14", 1213 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", 1214 | "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", 1215 | "dev": true 1216 | }, 1217 | "node_modules/merge-stream": { 1218 | "version": "2.0.0", 1219 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1220 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1221 | "dev": true 1222 | }, 1223 | "node_modules/mime-db": { 1224 | "version": "1.52.0", 1225 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1226 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1227 | "engines": { 1228 | "node": ">= 0.6" 1229 | } 1230 | }, 1231 | "node_modules/mime-types": { 1232 | "version": "2.1.35", 1233 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1234 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1235 | "dependencies": { 1236 | "mime-db": "1.52.0" 1237 | }, 1238 | "engines": { 1239 | "node": ">= 0.6" 1240 | } 1241 | }, 1242 | "node_modules/minimatch": { 1243 | "version": "3.1.2", 1244 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1245 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1246 | "dev": true, 1247 | "dependencies": { 1248 | "brace-expansion": "^1.1.7" 1249 | }, 1250 | "engines": { 1251 | "node": "*" 1252 | } 1253 | }, 1254 | "node_modules/moment": { 1255 | "version": "2.29.1", 1256 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 1257 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", 1258 | "dev": true, 1259 | "engines": { 1260 | "node": "*" 1261 | } 1262 | }, 1263 | "node_modules/nanoid": { 1264 | "version": "3.3.4", 1265 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1266 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 1267 | "dev": true, 1268 | "peer": true, 1269 | "bin": { 1270 | "nanoid": "bin/nanoid.cjs" 1271 | }, 1272 | "engines": { 1273 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1274 | } 1275 | }, 1276 | "node_modules/node-releases": { 1277 | "version": "2.0.6", 1278 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 1279 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", 1280 | "dev": true 1281 | }, 1282 | "node_modules/normalize-url": { 1283 | "version": "6.1.0", 1284 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 1285 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", 1286 | "dev": true, 1287 | "engines": { 1288 | "node": ">=10" 1289 | }, 1290 | "funding": { 1291 | "url": "https://github.com/sponsors/sindresorhus" 1292 | } 1293 | }, 1294 | "node_modules/nth-check": { 1295 | "version": "2.1.1", 1296 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 1297 | "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 1298 | "dev": true, 1299 | "dependencies": { 1300 | "boolbase": "^1.0.0" 1301 | }, 1302 | "funding": { 1303 | "url": "https://github.com/fb55/nth-check?sponsor=1" 1304 | } 1305 | }, 1306 | "node_modules/object-assign": { 1307 | "version": "4.1.1", 1308 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1309 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1310 | "engines": { 1311 | "node": ">=0.10.0" 1312 | } 1313 | }, 1314 | "node_modules/obsidian": { 1315 | "version": "0.13.30", 1316 | "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-0.13.30.tgz", 1317 | "integrity": "sha512-uAOrIyeHE9qYzg1Qjfpy/qlyLUFX9oyKWeHYO8NVDoI+pm5VUTMe7XWcsXPwb9iVsVmggVJcdV15Vqm9bljhxQ==", 1318 | "dev": true, 1319 | "dependencies": { 1320 | "@codemirror/state": "^0.19.6", 1321 | "@codemirror/view": "^0.19.31", 1322 | "@types/codemirror": "0.0.108", 1323 | "moment": "2.29.1" 1324 | } 1325 | }, 1326 | "node_modules/once": { 1327 | "version": "1.4.0", 1328 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1329 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1330 | "dev": true, 1331 | "dependencies": { 1332 | "wrappy": "1" 1333 | } 1334 | }, 1335 | "node_modules/p-finally": { 1336 | "version": "1.0.0", 1337 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 1338 | "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", 1339 | "dev": true, 1340 | "engines": { 1341 | "node": ">=4" 1342 | } 1343 | }, 1344 | "node_modules/p-queue": { 1345 | "version": "6.6.2", 1346 | "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", 1347 | "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", 1348 | "dev": true, 1349 | "dependencies": { 1350 | "eventemitter3": "^4.0.4", 1351 | "p-timeout": "^3.2.0" 1352 | }, 1353 | "engines": { 1354 | "node": ">=8" 1355 | }, 1356 | "funding": { 1357 | "url": "https://github.com/sponsors/sindresorhus" 1358 | } 1359 | }, 1360 | "node_modules/p-timeout": { 1361 | "version": "3.2.0", 1362 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", 1363 | "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", 1364 | "dev": true, 1365 | "dependencies": { 1366 | "p-finally": "^1.0.0" 1367 | }, 1368 | "engines": { 1369 | "node": ">=8" 1370 | } 1371 | }, 1372 | "node_modules/path-is-absolute": { 1373 | "version": "1.0.1", 1374 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1375 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1376 | "dev": true, 1377 | "engines": { 1378 | "node": ">=0.10.0" 1379 | } 1380 | }, 1381 | "node_modules/path-parse": { 1382 | "version": "1.0.7", 1383 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1384 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1385 | "dev": true 1386 | }, 1387 | "node_modules/picocolors": { 1388 | "version": "1.0.0", 1389 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1390 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1391 | "dev": true 1392 | }, 1393 | "node_modules/picomatch": { 1394 | "version": "2.3.1", 1395 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1396 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1397 | "dev": true, 1398 | "engines": { 1399 | "node": ">=8.6" 1400 | }, 1401 | "funding": { 1402 | "url": "https://github.com/sponsors/jonschlinkert" 1403 | } 1404 | }, 1405 | "node_modules/pify": { 1406 | "version": "5.0.0", 1407 | "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", 1408 | "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", 1409 | "dev": true, 1410 | "engines": { 1411 | "node": ">=10" 1412 | }, 1413 | "funding": { 1414 | "url": "https://github.com/sponsors/sindresorhus" 1415 | } 1416 | }, 1417 | "node_modules/postcss": { 1418 | "version": "8.4.16", 1419 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", 1420 | "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", 1421 | "dev": true, 1422 | "funding": [ 1423 | { 1424 | "type": "opencollective", 1425 | "url": "https://opencollective.com/postcss/" 1426 | }, 1427 | { 1428 | "type": "tidelift", 1429 | "url": "https://tidelift.com/funding/github/npm/postcss" 1430 | } 1431 | ], 1432 | "peer": true, 1433 | "dependencies": { 1434 | "nanoid": "^3.3.4", 1435 | "picocolors": "^1.0.0", 1436 | "source-map-js": "^1.0.2" 1437 | }, 1438 | "engines": { 1439 | "node": "^10 || ^12 || >=14" 1440 | } 1441 | }, 1442 | "node_modules/postcss-calc": { 1443 | "version": "8.2.4", 1444 | "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", 1445 | "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", 1446 | "dev": true, 1447 | "dependencies": { 1448 | "postcss-selector-parser": "^6.0.9", 1449 | "postcss-value-parser": "^4.2.0" 1450 | }, 1451 | "peerDependencies": { 1452 | "postcss": "^8.2.2" 1453 | } 1454 | }, 1455 | "node_modules/postcss-colormin": { 1456 | "version": "5.3.0", 1457 | "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", 1458 | "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", 1459 | "dev": true, 1460 | "dependencies": { 1461 | "browserslist": "^4.16.6", 1462 | "caniuse-api": "^3.0.0", 1463 | "colord": "^2.9.1", 1464 | "postcss-value-parser": "^4.2.0" 1465 | }, 1466 | "engines": { 1467 | "node": "^10 || ^12 || >=14.0" 1468 | }, 1469 | "peerDependencies": { 1470 | "postcss": "^8.2.15" 1471 | } 1472 | }, 1473 | "node_modules/postcss-convert-values": { 1474 | "version": "5.1.2", 1475 | "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", 1476 | "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", 1477 | "dev": true, 1478 | "dependencies": { 1479 | "browserslist": "^4.20.3", 1480 | "postcss-value-parser": "^4.2.0" 1481 | }, 1482 | "engines": { 1483 | "node": "^10 || ^12 || >=14.0" 1484 | }, 1485 | "peerDependencies": { 1486 | "postcss": "^8.2.15" 1487 | } 1488 | }, 1489 | "node_modules/postcss-discard-comments": { 1490 | "version": "5.1.2", 1491 | "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", 1492 | "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", 1493 | "dev": true, 1494 | "engines": { 1495 | "node": "^10 || ^12 || >=14.0" 1496 | }, 1497 | "peerDependencies": { 1498 | "postcss": "^8.2.15" 1499 | } 1500 | }, 1501 | "node_modules/postcss-discard-duplicates": { 1502 | "version": "5.1.0", 1503 | "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", 1504 | "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", 1505 | "dev": true, 1506 | "engines": { 1507 | "node": "^10 || ^12 || >=14.0" 1508 | }, 1509 | "peerDependencies": { 1510 | "postcss": "^8.2.15" 1511 | } 1512 | }, 1513 | "node_modules/postcss-discard-empty": { 1514 | "version": "5.1.1", 1515 | "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", 1516 | "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", 1517 | "dev": true, 1518 | "engines": { 1519 | "node": "^10 || ^12 || >=14.0" 1520 | }, 1521 | "peerDependencies": { 1522 | "postcss": "^8.2.15" 1523 | } 1524 | }, 1525 | "node_modules/postcss-discard-overridden": { 1526 | "version": "5.1.0", 1527 | "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", 1528 | "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", 1529 | "dev": true, 1530 | "engines": { 1531 | "node": "^10 || ^12 || >=14.0" 1532 | }, 1533 | "peerDependencies": { 1534 | "postcss": "^8.2.15" 1535 | } 1536 | }, 1537 | "node_modules/postcss-load-config": { 1538 | "version": "3.1.4", 1539 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 1540 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 1541 | "dev": true, 1542 | "dependencies": { 1543 | "lilconfig": "^2.0.5", 1544 | "yaml": "^1.10.2" 1545 | }, 1546 | "engines": { 1547 | "node": ">= 10" 1548 | }, 1549 | "funding": { 1550 | "type": "opencollective", 1551 | "url": "https://opencollective.com/postcss/" 1552 | }, 1553 | "peerDependencies": { 1554 | "postcss": ">=8.0.9", 1555 | "ts-node": ">=9.0.0" 1556 | }, 1557 | "peerDependenciesMeta": { 1558 | "postcss": { 1559 | "optional": true 1560 | }, 1561 | "ts-node": { 1562 | "optional": true 1563 | } 1564 | } 1565 | }, 1566 | "node_modules/postcss-merge-longhand": { 1567 | "version": "5.1.6", 1568 | "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", 1569 | "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", 1570 | "dev": true, 1571 | "dependencies": { 1572 | "postcss-value-parser": "^4.2.0", 1573 | "stylehacks": "^5.1.0" 1574 | }, 1575 | "engines": { 1576 | "node": "^10 || ^12 || >=14.0" 1577 | }, 1578 | "peerDependencies": { 1579 | "postcss": "^8.2.15" 1580 | } 1581 | }, 1582 | "node_modules/postcss-merge-rules": { 1583 | "version": "5.1.2", 1584 | "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", 1585 | "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", 1586 | "dev": true, 1587 | "dependencies": { 1588 | "browserslist": "^4.16.6", 1589 | "caniuse-api": "^3.0.0", 1590 | "cssnano-utils": "^3.1.0", 1591 | "postcss-selector-parser": "^6.0.5" 1592 | }, 1593 | "engines": { 1594 | "node": "^10 || ^12 || >=14.0" 1595 | }, 1596 | "peerDependencies": { 1597 | "postcss": "^8.2.15" 1598 | } 1599 | }, 1600 | "node_modules/postcss-minify-font-values": { 1601 | "version": "5.1.0", 1602 | "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", 1603 | "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", 1604 | "dev": true, 1605 | "dependencies": { 1606 | "postcss-value-parser": "^4.2.0" 1607 | }, 1608 | "engines": { 1609 | "node": "^10 || ^12 || >=14.0" 1610 | }, 1611 | "peerDependencies": { 1612 | "postcss": "^8.2.15" 1613 | } 1614 | }, 1615 | "node_modules/postcss-minify-gradients": { 1616 | "version": "5.1.1", 1617 | "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", 1618 | "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", 1619 | "dev": true, 1620 | "dependencies": { 1621 | "colord": "^2.9.1", 1622 | "cssnano-utils": "^3.1.0", 1623 | "postcss-value-parser": "^4.2.0" 1624 | }, 1625 | "engines": { 1626 | "node": "^10 || ^12 || >=14.0" 1627 | }, 1628 | "peerDependencies": { 1629 | "postcss": "^8.2.15" 1630 | } 1631 | }, 1632 | "node_modules/postcss-minify-params": { 1633 | "version": "5.1.3", 1634 | "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", 1635 | "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", 1636 | "dev": true, 1637 | "dependencies": { 1638 | "browserslist": "^4.16.6", 1639 | "cssnano-utils": "^3.1.0", 1640 | "postcss-value-parser": "^4.2.0" 1641 | }, 1642 | "engines": { 1643 | "node": "^10 || ^12 || >=14.0" 1644 | }, 1645 | "peerDependencies": { 1646 | "postcss": "^8.2.15" 1647 | } 1648 | }, 1649 | "node_modules/postcss-minify-selectors": { 1650 | "version": "5.2.1", 1651 | "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", 1652 | "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", 1653 | "dev": true, 1654 | "dependencies": { 1655 | "postcss-selector-parser": "^6.0.5" 1656 | }, 1657 | "engines": { 1658 | "node": "^10 || ^12 || >=14.0" 1659 | }, 1660 | "peerDependencies": { 1661 | "postcss": "^8.2.15" 1662 | } 1663 | }, 1664 | "node_modules/postcss-modules": { 1665 | "version": "4.3.1", 1666 | "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", 1667 | "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", 1668 | "dev": true, 1669 | "dependencies": { 1670 | "generic-names": "^4.0.0", 1671 | "icss-replace-symbols": "^1.1.0", 1672 | "lodash.camelcase": "^4.3.0", 1673 | "postcss-modules-extract-imports": "^3.0.0", 1674 | "postcss-modules-local-by-default": "^4.0.0", 1675 | "postcss-modules-scope": "^3.0.0", 1676 | "postcss-modules-values": "^4.0.0", 1677 | "string-hash": "^1.1.1" 1678 | }, 1679 | "peerDependencies": { 1680 | "postcss": "^8.0.0" 1681 | } 1682 | }, 1683 | "node_modules/postcss-modules-extract-imports": { 1684 | "version": "3.0.0", 1685 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", 1686 | "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", 1687 | "dev": true, 1688 | "engines": { 1689 | "node": "^10 || ^12 || >= 14" 1690 | }, 1691 | "peerDependencies": { 1692 | "postcss": "^8.1.0" 1693 | } 1694 | }, 1695 | "node_modules/postcss-modules-local-by-default": { 1696 | "version": "4.0.0", 1697 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", 1698 | "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", 1699 | "dev": true, 1700 | "dependencies": { 1701 | "icss-utils": "^5.0.0", 1702 | "postcss-selector-parser": "^6.0.2", 1703 | "postcss-value-parser": "^4.1.0" 1704 | }, 1705 | "engines": { 1706 | "node": "^10 || ^12 || >= 14" 1707 | }, 1708 | "peerDependencies": { 1709 | "postcss": "^8.1.0" 1710 | } 1711 | }, 1712 | "node_modules/postcss-modules-scope": { 1713 | "version": "3.0.0", 1714 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", 1715 | "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", 1716 | "dev": true, 1717 | "dependencies": { 1718 | "postcss-selector-parser": "^6.0.4" 1719 | }, 1720 | "engines": { 1721 | "node": "^10 || ^12 || >= 14" 1722 | }, 1723 | "peerDependencies": { 1724 | "postcss": "^8.1.0" 1725 | } 1726 | }, 1727 | "node_modules/postcss-modules-values": { 1728 | "version": "4.0.0", 1729 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", 1730 | "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", 1731 | "dev": true, 1732 | "dependencies": { 1733 | "icss-utils": "^5.0.0" 1734 | }, 1735 | "engines": { 1736 | "node": "^10 || ^12 || >= 14" 1737 | }, 1738 | "peerDependencies": { 1739 | "postcss": "^8.1.0" 1740 | } 1741 | }, 1742 | "node_modules/postcss-normalize-charset": { 1743 | "version": "5.1.0", 1744 | "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", 1745 | "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", 1746 | "dev": true, 1747 | "engines": { 1748 | "node": "^10 || ^12 || >=14.0" 1749 | }, 1750 | "peerDependencies": { 1751 | "postcss": "^8.2.15" 1752 | } 1753 | }, 1754 | "node_modules/postcss-normalize-display-values": { 1755 | "version": "5.1.0", 1756 | "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", 1757 | "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", 1758 | "dev": true, 1759 | "dependencies": { 1760 | "postcss-value-parser": "^4.2.0" 1761 | }, 1762 | "engines": { 1763 | "node": "^10 || ^12 || >=14.0" 1764 | }, 1765 | "peerDependencies": { 1766 | "postcss": "^8.2.15" 1767 | } 1768 | }, 1769 | "node_modules/postcss-normalize-positions": { 1770 | "version": "5.1.1", 1771 | "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", 1772 | "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", 1773 | "dev": true, 1774 | "dependencies": { 1775 | "postcss-value-parser": "^4.2.0" 1776 | }, 1777 | "engines": { 1778 | "node": "^10 || ^12 || >=14.0" 1779 | }, 1780 | "peerDependencies": { 1781 | "postcss": "^8.2.15" 1782 | } 1783 | }, 1784 | "node_modules/postcss-normalize-repeat-style": { 1785 | "version": "5.1.1", 1786 | "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", 1787 | "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", 1788 | "dev": true, 1789 | "dependencies": { 1790 | "postcss-value-parser": "^4.2.0" 1791 | }, 1792 | "engines": { 1793 | "node": "^10 || ^12 || >=14.0" 1794 | }, 1795 | "peerDependencies": { 1796 | "postcss": "^8.2.15" 1797 | } 1798 | }, 1799 | "node_modules/postcss-normalize-string": { 1800 | "version": "5.1.0", 1801 | "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", 1802 | "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", 1803 | "dev": true, 1804 | "dependencies": { 1805 | "postcss-value-parser": "^4.2.0" 1806 | }, 1807 | "engines": { 1808 | "node": "^10 || ^12 || >=14.0" 1809 | }, 1810 | "peerDependencies": { 1811 | "postcss": "^8.2.15" 1812 | } 1813 | }, 1814 | "node_modules/postcss-normalize-timing-functions": { 1815 | "version": "5.1.0", 1816 | "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", 1817 | "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", 1818 | "dev": true, 1819 | "dependencies": { 1820 | "postcss-value-parser": "^4.2.0" 1821 | }, 1822 | "engines": { 1823 | "node": "^10 || ^12 || >=14.0" 1824 | }, 1825 | "peerDependencies": { 1826 | "postcss": "^8.2.15" 1827 | } 1828 | }, 1829 | "node_modules/postcss-normalize-unicode": { 1830 | "version": "5.1.0", 1831 | "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", 1832 | "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", 1833 | "dev": true, 1834 | "dependencies": { 1835 | "browserslist": "^4.16.6", 1836 | "postcss-value-parser": "^4.2.0" 1837 | }, 1838 | "engines": { 1839 | "node": "^10 || ^12 || >=14.0" 1840 | }, 1841 | "peerDependencies": { 1842 | "postcss": "^8.2.15" 1843 | } 1844 | }, 1845 | "node_modules/postcss-normalize-url": { 1846 | "version": "5.1.0", 1847 | "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", 1848 | "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", 1849 | "dev": true, 1850 | "dependencies": { 1851 | "normalize-url": "^6.0.1", 1852 | "postcss-value-parser": "^4.2.0" 1853 | }, 1854 | "engines": { 1855 | "node": "^10 || ^12 || >=14.0" 1856 | }, 1857 | "peerDependencies": { 1858 | "postcss": "^8.2.15" 1859 | } 1860 | }, 1861 | "node_modules/postcss-normalize-whitespace": { 1862 | "version": "5.1.1", 1863 | "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", 1864 | "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", 1865 | "dev": true, 1866 | "dependencies": { 1867 | "postcss-value-parser": "^4.2.0" 1868 | }, 1869 | "engines": { 1870 | "node": "^10 || ^12 || >=14.0" 1871 | }, 1872 | "peerDependencies": { 1873 | "postcss": "^8.2.15" 1874 | } 1875 | }, 1876 | "node_modules/postcss-ordered-values": { 1877 | "version": "5.1.3", 1878 | "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", 1879 | "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", 1880 | "dev": true, 1881 | "dependencies": { 1882 | "cssnano-utils": "^3.1.0", 1883 | "postcss-value-parser": "^4.2.0" 1884 | }, 1885 | "engines": { 1886 | "node": "^10 || ^12 || >=14.0" 1887 | }, 1888 | "peerDependencies": { 1889 | "postcss": "^8.2.15" 1890 | } 1891 | }, 1892 | "node_modules/postcss-reduce-initial": { 1893 | "version": "5.1.0", 1894 | "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", 1895 | "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", 1896 | "dev": true, 1897 | "dependencies": { 1898 | "browserslist": "^4.16.6", 1899 | "caniuse-api": "^3.0.0" 1900 | }, 1901 | "engines": { 1902 | "node": "^10 || ^12 || >=14.0" 1903 | }, 1904 | "peerDependencies": { 1905 | "postcss": "^8.2.15" 1906 | } 1907 | }, 1908 | "node_modules/postcss-reduce-transforms": { 1909 | "version": "5.1.0", 1910 | "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", 1911 | "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", 1912 | "dev": true, 1913 | "dependencies": { 1914 | "postcss-value-parser": "^4.2.0" 1915 | }, 1916 | "engines": { 1917 | "node": "^10 || ^12 || >=14.0" 1918 | }, 1919 | "peerDependencies": { 1920 | "postcss": "^8.2.15" 1921 | } 1922 | }, 1923 | "node_modules/postcss-selector-parser": { 1924 | "version": "6.0.10", 1925 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 1926 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 1927 | "dev": true, 1928 | "dependencies": { 1929 | "cssesc": "^3.0.0", 1930 | "util-deprecate": "^1.0.2" 1931 | }, 1932 | "engines": { 1933 | "node": ">=4" 1934 | } 1935 | }, 1936 | "node_modules/postcss-svgo": { 1937 | "version": "5.1.0", 1938 | "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", 1939 | "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", 1940 | "dev": true, 1941 | "dependencies": { 1942 | "postcss-value-parser": "^4.2.0", 1943 | "svgo": "^2.7.0" 1944 | }, 1945 | "engines": { 1946 | "node": "^10 || ^12 || >=14.0" 1947 | }, 1948 | "peerDependencies": { 1949 | "postcss": "^8.2.15" 1950 | } 1951 | }, 1952 | "node_modules/postcss-unique-selectors": { 1953 | "version": "5.1.1", 1954 | "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", 1955 | "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", 1956 | "dev": true, 1957 | "dependencies": { 1958 | "postcss-selector-parser": "^6.0.5" 1959 | }, 1960 | "engines": { 1961 | "node": "^10 || ^12 || >=14.0" 1962 | }, 1963 | "peerDependencies": { 1964 | "postcss": "^8.2.15" 1965 | } 1966 | }, 1967 | "node_modules/postcss-value-parser": { 1968 | "version": "4.2.0", 1969 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 1970 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 1971 | "dev": true 1972 | }, 1973 | "node_modules/prettier": { 1974 | "version": "2.7.1", 1975 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", 1976 | "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", 1977 | "dev": true, 1978 | "bin": { 1979 | "prettier": "bin-prettier.js" 1980 | }, 1981 | "engines": { 1982 | "node": ">=10.13.0" 1983 | }, 1984 | "funding": { 1985 | "url": "https://github.com/prettier/prettier?sponsor=1" 1986 | } 1987 | }, 1988 | "node_modules/promise.series": { 1989 | "version": "0.2.0", 1990 | "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", 1991 | "integrity": "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==", 1992 | "dev": true, 1993 | "engines": { 1994 | "node": ">=0.12" 1995 | } 1996 | }, 1997 | "node_modules/prop-types": { 1998 | "version": "15.8.1", 1999 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 2000 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 2001 | "dependencies": { 2002 | "loose-envify": "^1.4.0", 2003 | "object-assign": "^4.1.1", 2004 | "react-is": "^16.13.1" 2005 | } 2006 | }, 2007 | "node_modules/randombytes": { 2008 | "version": "2.1.0", 2009 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2010 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2011 | "dev": true, 2012 | "dependencies": { 2013 | "safe-buffer": "^5.1.0" 2014 | } 2015 | }, 2016 | "node_modules/react": { 2017 | "version": "17.0.2", 2018 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 2019 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 2020 | "dependencies": { 2021 | "loose-envify": "^1.1.0", 2022 | "object-assign": "^4.1.1" 2023 | }, 2024 | "engines": { 2025 | "node": ">=0.10.0" 2026 | } 2027 | }, 2028 | "node_modules/react-dom": { 2029 | "version": "17.0.2", 2030 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 2031 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 2032 | "dependencies": { 2033 | "loose-envify": "^1.1.0", 2034 | "object-assign": "^4.1.1", 2035 | "scheduler": "^0.20.2" 2036 | }, 2037 | "peerDependencies": { 2038 | "react": "17.0.2" 2039 | } 2040 | }, 2041 | "node_modules/react-is": { 2042 | "version": "16.13.1", 2043 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2044 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 2045 | }, 2046 | "node_modules/resolve": { 2047 | "version": "1.22.1", 2048 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2049 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2050 | "dev": true, 2051 | "dependencies": { 2052 | "is-core-module": "^2.9.0", 2053 | "path-parse": "^1.0.7", 2054 | "supports-preserve-symlinks-flag": "^1.0.0" 2055 | }, 2056 | "bin": { 2057 | "resolve": "bin/resolve" 2058 | }, 2059 | "funding": { 2060 | "url": "https://github.com/sponsors/ljharb" 2061 | } 2062 | }, 2063 | "node_modules/resolve-from": { 2064 | "version": "5.0.0", 2065 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 2066 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 2067 | "dev": true, 2068 | "engines": { 2069 | "node": ">=8" 2070 | } 2071 | }, 2072 | "node_modules/rollup": { 2073 | "version": "2.78.0", 2074 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.0.tgz", 2075 | "integrity": "sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==", 2076 | "dev": true, 2077 | "bin": { 2078 | "rollup": "dist/bin/rollup" 2079 | }, 2080 | "engines": { 2081 | "node": ">=10.0.0" 2082 | }, 2083 | "optionalDependencies": { 2084 | "fsevents": "~2.3.2" 2085 | } 2086 | }, 2087 | "node_modules/rollup-plugin-postcss": { 2088 | "version": "4.0.2", 2089 | "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz", 2090 | "integrity": "sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==", 2091 | "dev": true, 2092 | "dependencies": { 2093 | "chalk": "^4.1.0", 2094 | "concat-with-sourcemaps": "^1.1.0", 2095 | "cssnano": "^5.0.1", 2096 | "import-cwd": "^3.0.0", 2097 | "p-queue": "^6.6.2", 2098 | "pify": "^5.0.0", 2099 | "postcss-load-config": "^3.0.0", 2100 | "postcss-modules": "^4.0.0", 2101 | "promise.series": "^0.2.0", 2102 | "resolve": "^1.19.0", 2103 | "rollup-pluginutils": "^2.8.2", 2104 | "safe-identifier": "^0.4.2", 2105 | "style-inject": "^0.3.0" 2106 | }, 2107 | "engines": { 2108 | "node": ">=10" 2109 | }, 2110 | "peerDependencies": { 2111 | "postcss": "8.x" 2112 | } 2113 | }, 2114 | "node_modules/rollup-plugin-terser": { 2115 | "version": "7.0.2", 2116 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", 2117 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", 2118 | "dev": true, 2119 | "dependencies": { 2120 | "@babel/code-frame": "^7.10.4", 2121 | "jest-worker": "^26.2.1", 2122 | "serialize-javascript": "^4.0.0", 2123 | "terser": "^5.0.0" 2124 | }, 2125 | "peerDependencies": { 2126 | "rollup": "^2.0.0" 2127 | } 2128 | }, 2129 | "node_modules/rollup-pluginutils": { 2130 | "version": "2.8.2", 2131 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 2132 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 2133 | "dev": true, 2134 | "dependencies": { 2135 | "estree-walker": "^0.6.1" 2136 | } 2137 | }, 2138 | "node_modules/rollup-pluginutils/node_modules/estree-walker": { 2139 | "version": "0.6.1", 2140 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 2141 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 2142 | "dev": true 2143 | }, 2144 | "node_modules/safe-buffer": { 2145 | "version": "5.2.1", 2146 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2147 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2148 | "dev": true, 2149 | "funding": [ 2150 | { 2151 | "type": "github", 2152 | "url": "https://github.com/sponsors/feross" 2153 | }, 2154 | { 2155 | "type": "patreon", 2156 | "url": "https://www.patreon.com/feross" 2157 | }, 2158 | { 2159 | "type": "consulting", 2160 | "url": "https://feross.org/support" 2161 | } 2162 | ] 2163 | }, 2164 | "node_modules/safe-identifier": { 2165 | "version": "0.4.2", 2166 | "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", 2167 | "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", 2168 | "dev": true 2169 | }, 2170 | "node_modules/scheduler": { 2171 | "version": "0.20.2", 2172 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 2173 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 2174 | "dependencies": { 2175 | "loose-envify": "^1.1.0", 2176 | "object-assign": "^4.1.1" 2177 | } 2178 | }, 2179 | "node_modules/serialize-javascript": { 2180 | "version": "4.0.0", 2181 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", 2182 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", 2183 | "dev": true, 2184 | "dependencies": { 2185 | "randombytes": "^2.1.0" 2186 | } 2187 | }, 2188 | "node_modules/source-map": { 2189 | "version": "0.6.1", 2190 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2191 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2192 | "dev": true, 2193 | "engines": { 2194 | "node": ">=0.10.0" 2195 | } 2196 | }, 2197 | "node_modules/source-map-js": { 2198 | "version": "1.0.2", 2199 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2200 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2201 | "dev": true, 2202 | "peer": true, 2203 | "engines": { 2204 | "node": ">=0.10.0" 2205 | } 2206 | }, 2207 | "node_modules/source-map-support": { 2208 | "version": "0.5.21", 2209 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 2210 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 2211 | "dev": true, 2212 | "dependencies": { 2213 | "buffer-from": "^1.0.0", 2214 | "source-map": "^0.6.0" 2215 | } 2216 | }, 2217 | "node_modules/sourcemap-codec": { 2218 | "version": "1.4.8", 2219 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 2220 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 2221 | "dev": true 2222 | }, 2223 | "node_modules/stable": { 2224 | "version": "0.1.8", 2225 | "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", 2226 | "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", 2227 | "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", 2228 | "dev": true 2229 | }, 2230 | "node_modules/steno": { 2231 | "version": "2.1.0", 2232 | "resolved": "https://registry.npmjs.org/steno/-/steno-2.1.0.tgz", 2233 | "integrity": "sha512-mauOsiaqTNGFkWqIfwcm3y/fq+qKKaIWf1vf3ocOuTdco9XoHCO2AGF1gFYXuZFSWuP38Q8LBHBGJv2KnJSXyA==", 2234 | "engines": { 2235 | "node": "^14.13.1 || >=16.0.0" 2236 | }, 2237 | "funding": { 2238 | "url": "https://github.com/sponsors/typicode" 2239 | } 2240 | }, 2241 | "node_modules/string-hash": { 2242 | "version": "1.1.3", 2243 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 2244 | "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", 2245 | "dev": true 2246 | }, 2247 | "node_modules/style-inject": { 2248 | "version": "0.3.0", 2249 | "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", 2250 | "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", 2251 | "dev": true 2252 | }, 2253 | "node_modules/style-mod": { 2254 | "version": "4.0.0", 2255 | "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", 2256 | "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", 2257 | "dev": true 2258 | }, 2259 | "node_modules/stylehacks": { 2260 | "version": "5.1.0", 2261 | "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", 2262 | "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", 2263 | "dev": true, 2264 | "dependencies": { 2265 | "browserslist": "^4.16.6", 2266 | "postcss-selector-parser": "^6.0.4" 2267 | }, 2268 | "engines": { 2269 | "node": "^10 || ^12 || >=14.0" 2270 | }, 2271 | "peerDependencies": { 2272 | "postcss": "^8.2.15" 2273 | } 2274 | }, 2275 | "node_modules/supports-color": { 2276 | "version": "7.2.0", 2277 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2278 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2279 | "dev": true, 2280 | "dependencies": { 2281 | "has-flag": "^4.0.0" 2282 | }, 2283 | "engines": { 2284 | "node": ">=8" 2285 | } 2286 | }, 2287 | "node_modules/supports-preserve-symlinks-flag": { 2288 | "version": "1.0.0", 2289 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2290 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2291 | "dev": true, 2292 | "engines": { 2293 | "node": ">= 0.4" 2294 | }, 2295 | "funding": { 2296 | "url": "https://github.com/sponsors/ljharb" 2297 | } 2298 | }, 2299 | "node_modules/svgo": { 2300 | "version": "2.8.0", 2301 | "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", 2302 | "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", 2303 | "dev": true, 2304 | "dependencies": { 2305 | "@trysound/sax": "0.2.0", 2306 | "commander": "^7.2.0", 2307 | "css-select": "^4.1.3", 2308 | "css-tree": "^1.1.3", 2309 | "csso": "^4.2.0", 2310 | "picocolors": "^1.0.0", 2311 | "stable": "^0.1.8" 2312 | }, 2313 | "bin": { 2314 | "svgo": "bin/svgo" 2315 | }, 2316 | "engines": { 2317 | "node": ">=10.13.0" 2318 | } 2319 | }, 2320 | "node_modules/terser": { 2321 | "version": "5.15.0", 2322 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", 2323 | "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", 2324 | "dev": true, 2325 | "dependencies": { 2326 | "@jridgewell/source-map": "^0.3.2", 2327 | "acorn": "^8.5.0", 2328 | "commander": "^2.20.0", 2329 | "source-map-support": "~0.5.20" 2330 | }, 2331 | "bin": { 2332 | "terser": "bin/terser" 2333 | }, 2334 | "engines": { 2335 | "node": ">=10" 2336 | } 2337 | }, 2338 | "node_modules/terser/node_modules/commander": { 2339 | "version": "2.20.3", 2340 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 2341 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 2342 | "dev": true 2343 | }, 2344 | "node_modules/tslib": { 2345 | "version": "2.4.0", 2346 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 2347 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 2348 | "dev": true 2349 | }, 2350 | "node_modules/typescript": { 2351 | "version": "4.7.4", 2352 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 2353 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 2354 | "dev": true, 2355 | "bin": { 2356 | "tsc": "bin/tsc", 2357 | "tsserver": "bin/tsserver" 2358 | }, 2359 | "engines": { 2360 | "node": ">=4.2.0" 2361 | } 2362 | }, 2363 | "node_modules/update-browserslist-db": { 2364 | "version": "1.0.5", 2365 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", 2366 | "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", 2367 | "dev": true, 2368 | "funding": [ 2369 | { 2370 | "type": "opencollective", 2371 | "url": "https://opencollective.com/browserslist" 2372 | }, 2373 | { 2374 | "type": "tidelift", 2375 | "url": "https://tidelift.com/funding/github/npm/browserslist" 2376 | } 2377 | ], 2378 | "dependencies": { 2379 | "escalade": "^3.1.1", 2380 | "picocolors": "^1.0.0" 2381 | }, 2382 | "bin": { 2383 | "browserslist-lint": "cli.js" 2384 | }, 2385 | "peerDependencies": { 2386 | "browserslist": ">= 4.21.0" 2387 | } 2388 | }, 2389 | "node_modules/util-deprecate": { 2390 | "version": "1.0.2", 2391 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2392 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2393 | "dev": true 2394 | }, 2395 | "node_modules/w3c-keyname": { 2396 | "version": "2.2.6", 2397 | "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", 2398 | "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", 2399 | "dev": true 2400 | }, 2401 | "node_modules/wrappy": { 2402 | "version": "1.0.2", 2403 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2404 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2405 | "dev": true 2406 | }, 2407 | "node_modules/yaml": { 2408 | "version": "1.10.2", 2409 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 2410 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 2411 | "dev": true, 2412 | "engines": { 2413 | "node": ">= 6" 2414 | } 2415 | } 2416 | }, 2417 | "dependencies": { 2418 | "@babel/code-frame": { 2419 | "version": "7.18.6", 2420 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 2421 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 2422 | "dev": true, 2423 | "requires": { 2424 | "@babel/highlight": "^7.18.6" 2425 | } 2426 | }, 2427 | "@babel/helper-validator-identifier": { 2428 | "version": "7.18.6", 2429 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 2430 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 2431 | "dev": true 2432 | }, 2433 | "@babel/highlight": { 2434 | "version": "7.18.6", 2435 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 2436 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 2437 | "dev": true, 2438 | "requires": { 2439 | "@babel/helper-validator-identifier": "^7.18.6", 2440 | "chalk": "^2.0.0", 2441 | "js-tokens": "^4.0.0" 2442 | }, 2443 | "dependencies": { 2444 | "ansi-styles": { 2445 | "version": "3.2.1", 2446 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2447 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2448 | "dev": true, 2449 | "requires": { 2450 | "color-convert": "^1.9.0" 2451 | } 2452 | }, 2453 | "chalk": { 2454 | "version": "2.4.2", 2455 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2456 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2457 | "dev": true, 2458 | "requires": { 2459 | "ansi-styles": "^3.2.1", 2460 | "escape-string-regexp": "^1.0.5", 2461 | "supports-color": "^5.3.0" 2462 | } 2463 | }, 2464 | "color-convert": { 2465 | "version": "1.9.3", 2466 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2467 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2468 | "dev": true, 2469 | "requires": { 2470 | "color-name": "1.1.3" 2471 | } 2472 | }, 2473 | "color-name": { 2474 | "version": "1.1.3", 2475 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2476 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2477 | "dev": true 2478 | }, 2479 | "has-flag": { 2480 | "version": "3.0.0", 2481 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2482 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2483 | "dev": true 2484 | }, 2485 | "supports-color": { 2486 | "version": "5.5.0", 2487 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2488 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2489 | "dev": true, 2490 | "requires": { 2491 | "has-flag": "^3.0.0" 2492 | } 2493 | } 2494 | } 2495 | }, 2496 | "@codemirror/rangeset": { 2497 | "version": "0.19.9", 2498 | "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz", 2499 | "integrity": "sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ==", 2500 | "dev": true, 2501 | "requires": { 2502 | "@codemirror/state": "^0.19.0" 2503 | } 2504 | }, 2505 | "@codemirror/state": { 2506 | "version": "0.19.9", 2507 | "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz", 2508 | "integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==", 2509 | "dev": true, 2510 | "requires": { 2511 | "@codemirror/text": "^0.19.0" 2512 | } 2513 | }, 2514 | "@codemirror/text": { 2515 | "version": "0.19.6", 2516 | "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz", 2517 | "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==", 2518 | "dev": true 2519 | }, 2520 | "@codemirror/view": { 2521 | "version": "0.19.48", 2522 | "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.48.tgz", 2523 | "integrity": "sha512-0eg7D2Nz4S8/caetCTz61rK0tkHI17V/d15Jy0kLOT8dTLGGNJUponDnW28h2B6bERmPlVHKh8MJIr5OCp1nGw==", 2524 | "dev": true, 2525 | "requires": { 2526 | "@codemirror/rangeset": "^0.19.5", 2527 | "@codemirror/state": "^0.19.3", 2528 | "@codemirror/text": "^0.19.0", 2529 | "style-mod": "^4.0.0", 2530 | "w3c-keyname": "^2.2.4" 2531 | } 2532 | }, 2533 | "@jridgewell/gen-mapping": { 2534 | "version": "0.3.2", 2535 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 2536 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 2537 | "dev": true, 2538 | "requires": { 2539 | "@jridgewell/set-array": "^1.0.1", 2540 | "@jridgewell/sourcemap-codec": "^1.4.10", 2541 | "@jridgewell/trace-mapping": "^0.3.9" 2542 | } 2543 | }, 2544 | "@jridgewell/resolve-uri": { 2545 | "version": "3.1.0", 2546 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 2547 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 2548 | "dev": true 2549 | }, 2550 | "@jridgewell/set-array": { 2551 | "version": "1.1.2", 2552 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 2553 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 2554 | "dev": true 2555 | }, 2556 | "@jridgewell/source-map": { 2557 | "version": "0.3.2", 2558 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", 2559 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", 2560 | "dev": true, 2561 | "requires": { 2562 | "@jridgewell/gen-mapping": "^0.3.0", 2563 | "@jridgewell/trace-mapping": "^0.3.9" 2564 | } 2565 | }, 2566 | "@jridgewell/sourcemap-codec": { 2567 | "version": "1.4.14", 2568 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 2569 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 2570 | "dev": true 2571 | }, 2572 | "@jridgewell/trace-mapping": { 2573 | "version": "0.3.15", 2574 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", 2575 | "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", 2576 | "dev": true, 2577 | "requires": { 2578 | "@jridgewell/resolve-uri": "^3.0.3", 2579 | "@jridgewell/sourcemap-codec": "^1.4.10" 2580 | } 2581 | }, 2582 | "@rollup/plugin-commonjs": { 2583 | "version": "21.1.0", 2584 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz", 2585 | "integrity": "sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==", 2586 | "dev": true, 2587 | "requires": { 2588 | "@rollup/pluginutils": "^3.1.0", 2589 | "commondir": "^1.0.1", 2590 | "estree-walker": "^2.0.1", 2591 | "glob": "^7.1.6", 2592 | "is-reference": "^1.2.1", 2593 | "magic-string": "^0.25.7", 2594 | "resolve": "^1.17.0" 2595 | } 2596 | }, 2597 | "@rollup/plugin-node-resolve": { 2598 | "version": "13.3.0", 2599 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", 2600 | "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", 2601 | "dev": true, 2602 | "requires": { 2603 | "@rollup/pluginutils": "^3.1.0", 2604 | "@types/resolve": "1.17.1", 2605 | "deepmerge": "^4.2.2", 2606 | "is-builtin-module": "^3.1.0", 2607 | "is-module": "^1.0.0", 2608 | "resolve": "^1.19.0" 2609 | } 2610 | }, 2611 | "@rollup/plugin-typescript": { 2612 | "version": "8.3.4", 2613 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.4.tgz", 2614 | "integrity": "sha512-wt7JnYE9antX6BOXtsxGoeVSu4dZfw0dU3xykfOQ4hC3EddxRbVG/K0xiY1Wup7QOHJcjLYXWAn0Kx9Z1SBHHg==", 2615 | "dev": true, 2616 | "requires": { 2617 | "@rollup/pluginutils": "^3.1.0", 2618 | "resolve": "^1.17.0" 2619 | } 2620 | }, 2621 | "@rollup/pluginutils": { 2622 | "version": "3.1.0", 2623 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 2624 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 2625 | "dev": true, 2626 | "requires": { 2627 | "@types/estree": "0.0.39", 2628 | "estree-walker": "^1.0.1", 2629 | "picomatch": "^2.2.2" 2630 | }, 2631 | "dependencies": { 2632 | "estree-walker": { 2633 | "version": "1.0.1", 2634 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 2635 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 2636 | "dev": true 2637 | } 2638 | } 2639 | }, 2640 | "@trysound/sax": { 2641 | "version": "0.2.0", 2642 | "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", 2643 | "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", 2644 | "dev": true 2645 | }, 2646 | "@types/codemirror": { 2647 | "version": "0.0.108", 2648 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", 2649 | "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", 2650 | "dev": true, 2651 | "requires": { 2652 | "@types/tern": "*" 2653 | } 2654 | }, 2655 | "@types/estree": { 2656 | "version": "0.0.39", 2657 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 2658 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 2659 | "dev": true 2660 | }, 2661 | "@types/node": { 2662 | "version": "17.0.45", 2663 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", 2664 | "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", 2665 | "dev": true 2666 | }, 2667 | "@types/prop-types": { 2668 | "version": "15.7.5", 2669 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 2670 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 2671 | "dev": true 2672 | }, 2673 | "@types/react": { 2674 | "version": "17.0.48", 2675 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", 2676 | "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", 2677 | "dev": true, 2678 | "requires": { 2679 | "@types/prop-types": "*", 2680 | "@types/scheduler": "*", 2681 | "csstype": "^3.0.2" 2682 | } 2683 | }, 2684 | "@types/react-dom": { 2685 | "version": "17.0.17", 2686 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", 2687 | "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", 2688 | "dev": true, 2689 | "requires": { 2690 | "@types/react": "^17" 2691 | } 2692 | }, 2693 | "@types/resolve": { 2694 | "version": "1.17.1", 2695 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", 2696 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", 2697 | "dev": true, 2698 | "requires": { 2699 | "@types/node": "*" 2700 | } 2701 | }, 2702 | "@types/scheduler": { 2703 | "version": "0.16.2", 2704 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 2705 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 2706 | "dev": true 2707 | }, 2708 | "@types/tern": { 2709 | "version": "0.23.4", 2710 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", 2711 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", 2712 | "dev": true, 2713 | "requires": { 2714 | "@types/estree": "*" 2715 | } 2716 | }, 2717 | "acorn": { 2718 | "version": "8.8.0", 2719 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 2720 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 2721 | "dev": true 2722 | }, 2723 | "ag-grid-community": { 2724 | "version": "28.1.0", 2725 | "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-28.1.0.tgz", 2726 | "integrity": "sha512-iCrdRWImvj6pOKaRQXdaPfZ0EI4fCQgTVv5PiCP9otbDPQBxyxjFVn+jEoV0umOqpqPAMoDIbG9poKyWuHl/EA==" 2727 | }, 2728 | "ag-grid-enterprise": { 2729 | "version": "28.1.0", 2730 | "resolved": "https://registry.npmjs.org/ag-grid-enterprise/-/ag-grid-enterprise-28.1.0.tgz", 2731 | "integrity": "sha512-TMiVi5MlkOiinZ7yvybHygmEcsaanNYLwjBR7CilTs+3bRvpVlCZ/Zjo+ekVgM/Lc59DE8SUDtbxW6RPgA/Uqg==" 2732 | }, 2733 | "ag-grid-react": { 2734 | "version": "28.1.0", 2735 | "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-28.1.0.tgz", 2736 | "integrity": "sha512-4Z/7T5kYKWqUhDrSY6bgseiKLiuMwjG4zHYIVtZwGwma7hb5e2CYwDdnfoWKArR6a7TzF86JiRpzd2WlLaARdQ==", 2737 | "requires": { 2738 | "prop-types": "^15.8.1" 2739 | } 2740 | }, 2741 | "ansi-styles": { 2742 | "version": "4.3.0", 2743 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2744 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2745 | "dev": true, 2746 | "requires": { 2747 | "color-convert": "^2.0.1" 2748 | } 2749 | }, 2750 | "asynckit": { 2751 | "version": "0.4.0", 2752 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 2753 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 2754 | }, 2755 | "axios": { 2756 | "version": "0.27.2", 2757 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 2758 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 2759 | "requires": { 2760 | "follow-redirects": "^1.14.9", 2761 | "form-data": "^4.0.0" 2762 | } 2763 | }, 2764 | "balanced-match": { 2765 | "version": "1.0.2", 2766 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2767 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2768 | "dev": true 2769 | }, 2770 | "boolbase": { 2771 | "version": "1.0.0", 2772 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 2773 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", 2774 | "dev": true 2775 | }, 2776 | "brace-expansion": { 2777 | "version": "1.1.11", 2778 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2779 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2780 | "dev": true, 2781 | "requires": { 2782 | "balanced-match": "^1.0.0", 2783 | "concat-map": "0.0.1" 2784 | } 2785 | }, 2786 | "browserslist": { 2787 | "version": "4.21.3", 2788 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", 2789 | "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", 2790 | "dev": true, 2791 | "requires": { 2792 | "caniuse-lite": "^1.0.30001370", 2793 | "electron-to-chromium": "^1.4.202", 2794 | "node-releases": "^2.0.6", 2795 | "update-browserslist-db": "^1.0.5" 2796 | } 2797 | }, 2798 | "buffer-from": { 2799 | "version": "1.1.2", 2800 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 2801 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 2802 | "dev": true 2803 | }, 2804 | "builtin-modules": { 2805 | "version": "3.3.0", 2806 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 2807 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 2808 | "dev": true 2809 | }, 2810 | "caniuse-api": { 2811 | "version": "3.0.0", 2812 | "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", 2813 | "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", 2814 | "dev": true, 2815 | "requires": { 2816 | "browserslist": "^4.0.0", 2817 | "caniuse-lite": "^1.0.0", 2818 | "lodash.memoize": "^4.1.2", 2819 | "lodash.uniq": "^4.5.0" 2820 | } 2821 | }, 2822 | "caniuse-lite": { 2823 | "version": "1.0.30001378", 2824 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001378.tgz", 2825 | "integrity": "sha512-JVQnfoO7FK7WvU4ZkBRbPjaot4+YqxogSDosHv0Hv5mWpUESmN+UubMU6L/hGz8QlQ2aY5U0vR6MOs6j/CXpNA==", 2826 | "dev": true 2827 | }, 2828 | "chalk": { 2829 | "version": "4.1.2", 2830 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2831 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2832 | "dev": true, 2833 | "requires": { 2834 | "ansi-styles": "^4.1.0", 2835 | "supports-color": "^7.1.0" 2836 | } 2837 | }, 2838 | "color-convert": { 2839 | "version": "2.0.1", 2840 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2841 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2842 | "dev": true, 2843 | "requires": { 2844 | "color-name": "~1.1.4" 2845 | } 2846 | }, 2847 | "color-name": { 2848 | "version": "1.1.4", 2849 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2850 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2851 | "dev": true 2852 | }, 2853 | "colord": { 2854 | "version": "2.9.3", 2855 | "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", 2856 | "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", 2857 | "dev": true 2858 | }, 2859 | "combined-stream": { 2860 | "version": "1.0.8", 2861 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 2862 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 2863 | "requires": { 2864 | "delayed-stream": "~1.0.0" 2865 | } 2866 | }, 2867 | "commander": { 2868 | "version": "7.2.0", 2869 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 2870 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 2871 | "dev": true 2872 | }, 2873 | "commondir": { 2874 | "version": "1.0.1", 2875 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 2876 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 2877 | "dev": true 2878 | }, 2879 | "concat-map": { 2880 | "version": "0.0.1", 2881 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2882 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 2883 | "dev": true 2884 | }, 2885 | "concat-with-sourcemaps": { 2886 | "version": "1.1.0", 2887 | "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", 2888 | "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", 2889 | "dev": true, 2890 | "requires": { 2891 | "source-map": "^0.6.1" 2892 | } 2893 | }, 2894 | "css-declaration-sorter": { 2895 | "version": "6.3.0", 2896 | "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", 2897 | "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", 2898 | "dev": true, 2899 | "requires": {} 2900 | }, 2901 | "css-select": { 2902 | "version": "4.3.0", 2903 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", 2904 | "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", 2905 | "dev": true, 2906 | "requires": { 2907 | "boolbase": "^1.0.0", 2908 | "css-what": "^6.0.1", 2909 | "domhandler": "^4.3.1", 2910 | "domutils": "^2.8.0", 2911 | "nth-check": "^2.0.1" 2912 | } 2913 | }, 2914 | "css-tree": { 2915 | "version": "1.1.3", 2916 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", 2917 | "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", 2918 | "dev": true, 2919 | "requires": { 2920 | "mdn-data": "2.0.14", 2921 | "source-map": "^0.6.1" 2922 | } 2923 | }, 2924 | "css-what": { 2925 | "version": "6.1.0", 2926 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", 2927 | "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", 2928 | "dev": true 2929 | }, 2930 | "cssesc": { 2931 | "version": "3.0.0", 2932 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 2933 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 2934 | "dev": true 2935 | }, 2936 | "cssnano": { 2937 | "version": "5.1.13", 2938 | "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", 2939 | "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", 2940 | "dev": true, 2941 | "requires": { 2942 | "cssnano-preset-default": "^5.2.12", 2943 | "lilconfig": "^2.0.3", 2944 | "yaml": "^1.10.2" 2945 | } 2946 | }, 2947 | "cssnano-preset-default": { 2948 | "version": "5.2.12", 2949 | "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", 2950 | "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", 2951 | "dev": true, 2952 | "requires": { 2953 | "css-declaration-sorter": "^6.3.0", 2954 | "cssnano-utils": "^3.1.0", 2955 | "postcss-calc": "^8.2.3", 2956 | "postcss-colormin": "^5.3.0", 2957 | "postcss-convert-values": "^5.1.2", 2958 | "postcss-discard-comments": "^5.1.2", 2959 | "postcss-discard-duplicates": "^5.1.0", 2960 | "postcss-discard-empty": "^5.1.1", 2961 | "postcss-discard-overridden": "^5.1.0", 2962 | "postcss-merge-longhand": "^5.1.6", 2963 | "postcss-merge-rules": "^5.1.2", 2964 | "postcss-minify-font-values": "^5.1.0", 2965 | "postcss-minify-gradients": "^5.1.1", 2966 | "postcss-minify-params": "^5.1.3", 2967 | "postcss-minify-selectors": "^5.2.1", 2968 | "postcss-normalize-charset": "^5.1.0", 2969 | "postcss-normalize-display-values": "^5.1.0", 2970 | "postcss-normalize-positions": "^5.1.1", 2971 | "postcss-normalize-repeat-style": "^5.1.1", 2972 | "postcss-normalize-string": "^5.1.0", 2973 | "postcss-normalize-timing-functions": "^5.1.0", 2974 | "postcss-normalize-unicode": "^5.1.0", 2975 | "postcss-normalize-url": "^5.1.0", 2976 | "postcss-normalize-whitespace": "^5.1.1", 2977 | "postcss-ordered-values": "^5.1.3", 2978 | "postcss-reduce-initial": "^5.1.0", 2979 | "postcss-reduce-transforms": "^5.1.0", 2980 | "postcss-svgo": "^5.1.0", 2981 | "postcss-unique-selectors": "^5.1.1" 2982 | } 2983 | }, 2984 | "cssnano-utils": { 2985 | "version": "3.1.0", 2986 | "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", 2987 | "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", 2988 | "dev": true, 2989 | "requires": {} 2990 | }, 2991 | "csso": { 2992 | "version": "4.2.0", 2993 | "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", 2994 | "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", 2995 | "dev": true, 2996 | "requires": { 2997 | "css-tree": "^1.1.2" 2998 | } 2999 | }, 3000 | "csstype": { 3001 | "version": "3.1.0", 3002 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", 3003 | "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", 3004 | "dev": true 3005 | }, 3006 | "deepmerge": { 3007 | "version": "4.2.2", 3008 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 3009 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 3010 | "dev": true 3011 | }, 3012 | "delayed-stream": { 3013 | "version": "1.0.0", 3014 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 3015 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 3016 | }, 3017 | "dom-serializer": { 3018 | "version": "1.4.1", 3019 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", 3020 | "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", 3021 | "dev": true, 3022 | "requires": { 3023 | "domelementtype": "^2.0.1", 3024 | "domhandler": "^4.2.0", 3025 | "entities": "^2.0.0" 3026 | } 3027 | }, 3028 | "domelementtype": { 3029 | "version": "2.3.0", 3030 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 3031 | "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", 3032 | "dev": true 3033 | }, 3034 | "domhandler": { 3035 | "version": "4.3.1", 3036 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", 3037 | "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", 3038 | "dev": true, 3039 | "requires": { 3040 | "domelementtype": "^2.2.0" 3041 | } 3042 | }, 3043 | "domutils": { 3044 | "version": "2.8.0", 3045 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", 3046 | "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", 3047 | "dev": true, 3048 | "requires": { 3049 | "dom-serializer": "^1.0.1", 3050 | "domelementtype": "^2.2.0", 3051 | "domhandler": "^4.2.0" 3052 | } 3053 | }, 3054 | "electron-to-chromium": { 3055 | "version": "1.4.225", 3056 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.225.tgz", 3057 | "integrity": "sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw==", 3058 | "dev": true 3059 | }, 3060 | "entities": { 3061 | "version": "2.2.0", 3062 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 3063 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", 3064 | "dev": true 3065 | }, 3066 | "escalade": { 3067 | "version": "3.1.1", 3068 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 3069 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 3070 | "dev": true 3071 | }, 3072 | "escape-string-regexp": { 3073 | "version": "1.0.5", 3074 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 3075 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 3076 | "dev": true 3077 | }, 3078 | "estree-walker": { 3079 | "version": "2.0.2", 3080 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 3081 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 3082 | "dev": true 3083 | }, 3084 | "eventemitter3": { 3085 | "version": "4.0.7", 3086 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 3087 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 3088 | "dev": true 3089 | }, 3090 | "follow-redirects": { 3091 | "version": "1.15.1", 3092 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", 3093 | "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" 3094 | }, 3095 | "form-data": { 3096 | "version": "4.0.0", 3097 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 3098 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 3099 | "requires": { 3100 | "asynckit": "^0.4.0", 3101 | "combined-stream": "^1.0.8", 3102 | "mime-types": "^2.1.12" 3103 | } 3104 | }, 3105 | "fs.realpath": { 3106 | "version": "1.0.0", 3107 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 3108 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 3109 | "dev": true 3110 | }, 3111 | "fsevents": { 3112 | "version": "2.3.2", 3113 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 3114 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 3115 | "dev": true, 3116 | "optional": true 3117 | }, 3118 | "function-bind": { 3119 | "version": "1.1.1", 3120 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 3121 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 3122 | "dev": true 3123 | }, 3124 | "generic-names": { 3125 | "version": "4.0.0", 3126 | "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", 3127 | "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", 3128 | "dev": true, 3129 | "requires": { 3130 | "loader-utils": "^3.2.0" 3131 | } 3132 | }, 3133 | "glob": { 3134 | "version": "7.2.3", 3135 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 3136 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 3137 | "dev": true, 3138 | "requires": { 3139 | "fs.realpath": "^1.0.0", 3140 | "inflight": "^1.0.4", 3141 | "inherits": "2", 3142 | "minimatch": "^3.1.1", 3143 | "once": "^1.3.0", 3144 | "path-is-absolute": "^1.0.0" 3145 | } 3146 | }, 3147 | "has": { 3148 | "version": "1.0.3", 3149 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 3150 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 3151 | "dev": true, 3152 | "requires": { 3153 | "function-bind": "^1.1.1" 3154 | } 3155 | }, 3156 | "has-flag": { 3157 | "version": "4.0.0", 3158 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3159 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3160 | "dev": true 3161 | }, 3162 | "icss-replace-symbols": { 3163 | "version": "1.1.0", 3164 | "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", 3165 | "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", 3166 | "dev": true 3167 | }, 3168 | "icss-utils": { 3169 | "version": "5.1.0", 3170 | "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", 3171 | "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", 3172 | "dev": true, 3173 | "requires": {} 3174 | }, 3175 | "import-cwd": { 3176 | "version": "3.0.0", 3177 | "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", 3178 | "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", 3179 | "dev": true, 3180 | "requires": { 3181 | "import-from": "^3.0.0" 3182 | } 3183 | }, 3184 | "import-from": { 3185 | "version": "3.0.0", 3186 | "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", 3187 | "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", 3188 | "dev": true, 3189 | "requires": { 3190 | "resolve-from": "^5.0.0" 3191 | } 3192 | }, 3193 | "inflight": { 3194 | "version": "1.0.6", 3195 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3196 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 3197 | "dev": true, 3198 | "requires": { 3199 | "once": "^1.3.0", 3200 | "wrappy": "1" 3201 | } 3202 | }, 3203 | "inherits": { 3204 | "version": "2.0.4", 3205 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3206 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3207 | "dev": true 3208 | }, 3209 | "is-builtin-module": { 3210 | "version": "3.2.0", 3211 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", 3212 | "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", 3213 | "dev": true, 3214 | "requires": { 3215 | "builtin-modules": "^3.3.0" 3216 | } 3217 | }, 3218 | "is-core-module": { 3219 | "version": "2.10.0", 3220 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", 3221 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", 3222 | "dev": true, 3223 | "requires": { 3224 | "has": "^1.0.3" 3225 | } 3226 | }, 3227 | "is-module": { 3228 | "version": "1.0.0", 3229 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 3230 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 3231 | "dev": true 3232 | }, 3233 | "is-reference": { 3234 | "version": "1.2.1", 3235 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 3236 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 3237 | "dev": true, 3238 | "requires": { 3239 | "@types/estree": "*" 3240 | } 3241 | }, 3242 | "jest-worker": { 3243 | "version": "26.6.2", 3244 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", 3245 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", 3246 | "dev": true, 3247 | "requires": { 3248 | "@types/node": "*", 3249 | "merge-stream": "^2.0.0", 3250 | "supports-color": "^7.0.0" 3251 | } 3252 | }, 3253 | "js-tokens": { 3254 | "version": "4.0.0", 3255 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3256 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 3257 | }, 3258 | "lilconfig": { 3259 | "version": "2.0.6", 3260 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", 3261 | "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", 3262 | "dev": true 3263 | }, 3264 | "loader-utils": { 3265 | "version": "3.2.0", 3266 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", 3267 | "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", 3268 | "dev": true 3269 | }, 3270 | "lodash.camelcase": { 3271 | "version": "4.3.0", 3272 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 3273 | "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", 3274 | "dev": true 3275 | }, 3276 | "lodash.memoize": { 3277 | "version": "4.1.2", 3278 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", 3279 | "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", 3280 | "dev": true 3281 | }, 3282 | "lodash.uniq": { 3283 | "version": "4.5.0", 3284 | "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", 3285 | "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", 3286 | "dev": true 3287 | }, 3288 | "loose-envify": { 3289 | "version": "1.4.0", 3290 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 3291 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 3292 | "requires": { 3293 | "js-tokens": "^3.0.0 || ^4.0.0" 3294 | } 3295 | }, 3296 | "lowdb": { 3297 | "version": "3.0.0", 3298 | "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-3.0.0.tgz", 3299 | "integrity": "sha512-9KZRulmIcU8fZuWiaM0d5e2/nPnrFyXkeXVpqT+MJS+vgbgOf1EbtvgQmba8HwUFgDl1oeZR6XqEJnkJmQdKmg==", 3300 | "requires": { 3301 | "steno": "^2.1.0" 3302 | } 3303 | }, 3304 | "magic-string": { 3305 | "version": "0.25.9", 3306 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 3307 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 3308 | "dev": true, 3309 | "requires": { 3310 | "sourcemap-codec": "^1.4.8" 3311 | } 3312 | }, 3313 | "mdn-data": { 3314 | "version": "2.0.14", 3315 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", 3316 | "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", 3317 | "dev": true 3318 | }, 3319 | "merge-stream": { 3320 | "version": "2.0.0", 3321 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 3322 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 3323 | "dev": true 3324 | }, 3325 | "mime-db": { 3326 | "version": "1.52.0", 3327 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 3328 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 3329 | }, 3330 | "mime-types": { 3331 | "version": "2.1.35", 3332 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 3333 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 3334 | "requires": { 3335 | "mime-db": "1.52.0" 3336 | } 3337 | }, 3338 | "minimatch": { 3339 | "version": "3.1.2", 3340 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3341 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3342 | "dev": true, 3343 | "requires": { 3344 | "brace-expansion": "^1.1.7" 3345 | } 3346 | }, 3347 | "moment": { 3348 | "version": "2.29.1", 3349 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 3350 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", 3351 | "dev": true 3352 | }, 3353 | "nanoid": { 3354 | "version": "3.3.4", 3355 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 3356 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 3357 | "dev": true, 3358 | "peer": true 3359 | }, 3360 | "node-releases": { 3361 | "version": "2.0.6", 3362 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 3363 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", 3364 | "dev": true 3365 | }, 3366 | "normalize-url": { 3367 | "version": "6.1.0", 3368 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 3369 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", 3370 | "dev": true 3371 | }, 3372 | "nth-check": { 3373 | "version": "2.1.1", 3374 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 3375 | "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 3376 | "dev": true, 3377 | "requires": { 3378 | "boolbase": "^1.0.0" 3379 | } 3380 | }, 3381 | "object-assign": { 3382 | "version": "4.1.1", 3383 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3384 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 3385 | }, 3386 | "obsidian": { 3387 | "version": "0.13.30", 3388 | "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-0.13.30.tgz", 3389 | "integrity": "sha512-uAOrIyeHE9qYzg1Qjfpy/qlyLUFX9oyKWeHYO8NVDoI+pm5VUTMe7XWcsXPwb9iVsVmggVJcdV15Vqm9bljhxQ==", 3390 | "dev": true, 3391 | "requires": { 3392 | "@codemirror/state": "^0.19.6", 3393 | "@codemirror/view": "^0.19.31", 3394 | "@types/codemirror": "0.0.108", 3395 | "moment": "2.29.1" 3396 | } 3397 | }, 3398 | "once": { 3399 | "version": "1.4.0", 3400 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3401 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3402 | "dev": true, 3403 | "requires": { 3404 | "wrappy": "1" 3405 | } 3406 | }, 3407 | "p-finally": { 3408 | "version": "1.0.0", 3409 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 3410 | "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", 3411 | "dev": true 3412 | }, 3413 | "p-queue": { 3414 | "version": "6.6.2", 3415 | "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", 3416 | "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", 3417 | "dev": true, 3418 | "requires": { 3419 | "eventemitter3": "^4.0.4", 3420 | "p-timeout": "^3.2.0" 3421 | } 3422 | }, 3423 | "p-timeout": { 3424 | "version": "3.2.0", 3425 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", 3426 | "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", 3427 | "dev": true, 3428 | "requires": { 3429 | "p-finally": "^1.0.0" 3430 | } 3431 | }, 3432 | "path-is-absolute": { 3433 | "version": "1.0.1", 3434 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3435 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 3436 | "dev": true 3437 | }, 3438 | "path-parse": { 3439 | "version": "1.0.7", 3440 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3441 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3442 | "dev": true 3443 | }, 3444 | "picocolors": { 3445 | "version": "1.0.0", 3446 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 3447 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 3448 | "dev": true 3449 | }, 3450 | "picomatch": { 3451 | "version": "2.3.1", 3452 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3453 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3454 | "dev": true 3455 | }, 3456 | "pify": { 3457 | "version": "5.0.0", 3458 | "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", 3459 | "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", 3460 | "dev": true 3461 | }, 3462 | "postcss": { 3463 | "version": "8.4.16", 3464 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", 3465 | "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", 3466 | "dev": true, 3467 | "peer": true, 3468 | "requires": { 3469 | "nanoid": "^3.3.4", 3470 | "picocolors": "^1.0.0", 3471 | "source-map-js": "^1.0.2" 3472 | } 3473 | }, 3474 | "postcss-calc": { 3475 | "version": "8.2.4", 3476 | "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", 3477 | "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", 3478 | "dev": true, 3479 | "requires": { 3480 | "postcss-selector-parser": "^6.0.9", 3481 | "postcss-value-parser": "^4.2.0" 3482 | } 3483 | }, 3484 | "postcss-colormin": { 3485 | "version": "5.3.0", 3486 | "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", 3487 | "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", 3488 | "dev": true, 3489 | "requires": { 3490 | "browserslist": "^4.16.6", 3491 | "caniuse-api": "^3.0.0", 3492 | "colord": "^2.9.1", 3493 | "postcss-value-parser": "^4.2.0" 3494 | } 3495 | }, 3496 | "postcss-convert-values": { 3497 | "version": "5.1.2", 3498 | "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", 3499 | "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", 3500 | "dev": true, 3501 | "requires": { 3502 | "browserslist": "^4.20.3", 3503 | "postcss-value-parser": "^4.2.0" 3504 | } 3505 | }, 3506 | "postcss-discard-comments": { 3507 | "version": "5.1.2", 3508 | "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", 3509 | "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", 3510 | "dev": true, 3511 | "requires": {} 3512 | }, 3513 | "postcss-discard-duplicates": { 3514 | "version": "5.1.0", 3515 | "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", 3516 | "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", 3517 | "dev": true, 3518 | "requires": {} 3519 | }, 3520 | "postcss-discard-empty": { 3521 | "version": "5.1.1", 3522 | "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", 3523 | "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", 3524 | "dev": true, 3525 | "requires": {} 3526 | }, 3527 | "postcss-discard-overridden": { 3528 | "version": "5.1.0", 3529 | "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", 3530 | "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", 3531 | "dev": true, 3532 | "requires": {} 3533 | }, 3534 | "postcss-load-config": { 3535 | "version": "3.1.4", 3536 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 3537 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 3538 | "dev": true, 3539 | "requires": { 3540 | "lilconfig": "^2.0.5", 3541 | "yaml": "^1.10.2" 3542 | } 3543 | }, 3544 | "postcss-merge-longhand": { 3545 | "version": "5.1.6", 3546 | "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", 3547 | "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", 3548 | "dev": true, 3549 | "requires": { 3550 | "postcss-value-parser": "^4.2.0", 3551 | "stylehacks": "^5.1.0" 3552 | } 3553 | }, 3554 | "postcss-merge-rules": { 3555 | "version": "5.1.2", 3556 | "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", 3557 | "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", 3558 | "dev": true, 3559 | "requires": { 3560 | "browserslist": "^4.16.6", 3561 | "caniuse-api": "^3.0.0", 3562 | "cssnano-utils": "^3.1.0", 3563 | "postcss-selector-parser": "^6.0.5" 3564 | } 3565 | }, 3566 | "postcss-minify-font-values": { 3567 | "version": "5.1.0", 3568 | "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", 3569 | "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", 3570 | "dev": true, 3571 | "requires": { 3572 | "postcss-value-parser": "^4.2.0" 3573 | } 3574 | }, 3575 | "postcss-minify-gradients": { 3576 | "version": "5.1.1", 3577 | "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", 3578 | "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", 3579 | "dev": true, 3580 | "requires": { 3581 | "colord": "^2.9.1", 3582 | "cssnano-utils": "^3.1.0", 3583 | "postcss-value-parser": "^4.2.0" 3584 | } 3585 | }, 3586 | "postcss-minify-params": { 3587 | "version": "5.1.3", 3588 | "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", 3589 | "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", 3590 | "dev": true, 3591 | "requires": { 3592 | "browserslist": "^4.16.6", 3593 | "cssnano-utils": "^3.1.0", 3594 | "postcss-value-parser": "^4.2.0" 3595 | } 3596 | }, 3597 | "postcss-minify-selectors": { 3598 | "version": "5.2.1", 3599 | "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", 3600 | "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", 3601 | "dev": true, 3602 | "requires": { 3603 | "postcss-selector-parser": "^6.0.5" 3604 | } 3605 | }, 3606 | "postcss-modules": { 3607 | "version": "4.3.1", 3608 | "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", 3609 | "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", 3610 | "dev": true, 3611 | "requires": { 3612 | "generic-names": "^4.0.0", 3613 | "icss-replace-symbols": "^1.1.0", 3614 | "lodash.camelcase": "^4.3.0", 3615 | "postcss-modules-extract-imports": "^3.0.0", 3616 | "postcss-modules-local-by-default": "^4.0.0", 3617 | "postcss-modules-scope": "^3.0.0", 3618 | "postcss-modules-values": "^4.0.0", 3619 | "string-hash": "^1.1.1" 3620 | } 3621 | }, 3622 | "postcss-modules-extract-imports": { 3623 | "version": "3.0.0", 3624 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", 3625 | "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", 3626 | "dev": true, 3627 | "requires": {} 3628 | }, 3629 | "postcss-modules-local-by-default": { 3630 | "version": "4.0.0", 3631 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", 3632 | "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", 3633 | "dev": true, 3634 | "requires": { 3635 | "icss-utils": "^5.0.0", 3636 | "postcss-selector-parser": "^6.0.2", 3637 | "postcss-value-parser": "^4.1.0" 3638 | } 3639 | }, 3640 | "postcss-modules-scope": { 3641 | "version": "3.0.0", 3642 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", 3643 | "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", 3644 | "dev": true, 3645 | "requires": { 3646 | "postcss-selector-parser": "^6.0.4" 3647 | } 3648 | }, 3649 | "postcss-modules-values": { 3650 | "version": "4.0.0", 3651 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", 3652 | "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", 3653 | "dev": true, 3654 | "requires": { 3655 | "icss-utils": "^5.0.0" 3656 | } 3657 | }, 3658 | "postcss-normalize-charset": { 3659 | "version": "5.1.0", 3660 | "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", 3661 | "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", 3662 | "dev": true, 3663 | "requires": {} 3664 | }, 3665 | "postcss-normalize-display-values": { 3666 | "version": "5.1.0", 3667 | "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", 3668 | "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", 3669 | "dev": true, 3670 | "requires": { 3671 | "postcss-value-parser": "^4.2.0" 3672 | } 3673 | }, 3674 | "postcss-normalize-positions": { 3675 | "version": "5.1.1", 3676 | "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", 3677 | "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", 3678 | "dev": true, 3679 | "requires": { 3680 | "postcss-value-parser": "^4.2.0" 3681 | } 3682 | }, 3683 | "postcss-normalize-repeat-style": { 3684 | "version": "5.1.1", 3685 | "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", 3686 | "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", 3687 | "dev": true, 3688 | "requires": { 3689 | "postcss-value-parser": "^4.2.0" 3690 | } 3691 | }, 3692 | "postcss-normalize-string": { 3693 | "version": "5.1.0", 3694 | "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", 3695 | "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", 3696 | "dev": true, 3697 | "requires": { 3698 | "postcss-value-parser": "^4.2.0" 3699 | } 3700 | }, 3701 | "postcss-normalize-timing-functions": { 3702 | "version": "5.1.0", 3703 | "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", 3704 | "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", 3705 | "dev": true, 3706 | "requires": { 3707 | "postcss-value-parser": "^4.2.0" 3708 | } 3709 | }, 3710 | "postcss-normalize-unicode": { 3711 | "version": "5.1.0", 3712 | "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", 3713 | "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", 3714 | "dev": true, 3715 | "requires": { 3716 | "browserslist": "^4.16.6", 3717 | "postcss-value-parser": "^4.2.0" 3718 | } 3719 | }, 3720 | "postcss-normalize-url": { 3721 | "version": "5.1.0", 3722 | "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", 3723 | "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", 3724 | "dev": true, 3725 | "requires": { 3726 | "normalize-url": "^6.0.1", 3727 | "postcss-value-parser": "^4.2.0" 3728 | } 3729 | }, 3730 | "postcss-normalize-whitespace": { 3731 | "version": "5.1.1", 3732 | "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", 3733 | "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", 3734 | "dev": true, 3735 | "requires": { 3736 | "postcss-value-parser": "^4.2.0" 3737 | } 3738 | }, 3739 | "postcss-ordered-values": { 3740 | "version": "5.1.3", 3741 | "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", 3742 | "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", 3743 | "dev": true, 3744 | "requires": { 3745 | "cssnano-utils": "^3.1.0", 3746 | "postcss-value-parser": "^4.2.0" 3747 | } 3748 | }, 3749 | "postcss-reduce-initial": { 3750 | "version": "5.1.0", 3751 | "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", 3752 | "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", 3753 | "dev": true, 3754 | "requires": { 3755 | "browserslist": "^4.16.6", 3756 | "caniuse-api": "^3.0.0" 3757 | } 3758 | }, 3759 | "postcss-reduce-transforms": { 3760 | "version": "5.1.0", 3761 | "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", 3762 | "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", 3763 | "dev": true, 3764 | "requires": { 3765 | "postcss-value-parser": "^4.2.0" 3766 | } 3767 | }, 3768 | "postcss-selector-parser": { 3769 | "version": "6.0.10", 3770 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 3771 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 3772 | "dev": true, 3773 | "requires": { 3774 | "cssesc": "^3.0.0", 3775 | "util-deprecate": "^1.0.2" 3776 | } 3777 | }, 3778 | "postcss-svgo": { 3779 | "version": "5.1.0", 3780 | "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", 3781 | "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", 3782 | "dev": true, 3783 | "requires": { 3784 | "postcss-value-parser": "^4.2.0", 3785 | "svgo": "^2.7.0" 3786 | } 3787 | }, 3788 | "postcss-unique-selectors": { 3789 | "version": "5.1.1", 3790 | "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", 3791 | "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", 3792 | "dev": true, 3793 | "requires": { 3794 | "postcss-selector-parser": "^6.0.5" 3795 | } 3796 | }, 3797 | "postcss-value-parser": { 3798 | "version": "4.2.0", 3799 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 3800 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 3801 | "dev": true 3802 | }, 3803 | "prettier": { 3804 | "version": "2.7.1", 3805 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", 3806 | "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", 3807 | "dev": true 3808 | }, 3809 | "promise.series": { 3810 | "version": "0.2.0", 3811 | "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", 3812 | "integrity": "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==", 3813 | "dev": true 3814 | }, 3815 | "prop-types": { 3816 | "version": "15.8.1", 3817 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 3818 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 3819 | "requires": { 3820 | "loose-envify": "^1.4.0", 3821 | "object-assign": "^4.1.1", 3822 | "react-is": "^16.13.1" 3823 | } 3824 | }, 3825 | "randombytes": { 3826 | "version": "2.1.0", 3827 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3828 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3829 | "dev": true, 3830 | "requires": { 3831 | "safe-buffer": "^5.1.0" 3832 | } 3833 | }, 3834 | "react": { 3835 | "version": "17.0.2", 3836 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 3837 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 3838 | "requires": { 3839 | "loose-envify": "^1.1.0", 3840 | "object-assign": "^4.1.1" 3841 | } 3842 | }, 3843 | "react-dom": { 3844 | "version": "17.0.2", 3845 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 3846 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 3847 | "requires": { 3848 | "loose-envify": "^1.1.0", 3849 | "object-assign": "^4.1.1", 3850 | "scheduler": "^0.20.2" 3851 | } 3852 | }, 3853 | "react-is": { 3854 | "version": "16.13.1", 3855 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 3856 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 3857 | }, 3858 | "resolve": { 3859 | "version": "1.22.1", 3860 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 3861 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 3862 | "dev": true, 3863 | "requires": { 3864 | "is-core-module": "^2.9.0", 3865 | "path-parse": "^1.0.7", 3866 | "supports-preserve-symlinks-flag": "^1.0.0" 3867 | } 3868 | }, 3869 | "resolve-from": { 3870 | "version": "5.0.0", 3871 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3872 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3873 | "dev": true 3874 | }, 3875 | "rollup": { 3876 | "version": "2.78.0", 3877 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.0.tgz", 3878 | "integrity": "sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==", 3879 | "dev": true, 3880 | "requires": { 3881 | "fsevents": "~2.3.2" 3882 | } 3883 | }, 3884 | "rollup-plugin-postcss": { 3885 | "version": "4.0.2", 3886 | "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz", 3887 | "integrity": "sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==", 3888 | "dev": true, 3889 | "requires": { 3890 | "chalk": "^4.1.0", 3891 | "concat-with-sourcemaps": "^1.1.0", 3892 | "cssnano": "^5.0.1", 3893 | "import-cwd": "^3.0.0", 3894 | "p-queue": "^6.6.2", 3895 | "pify": "^5.0.0", 3896 | "postcss-load-config": "^3.0.0", 3897 | "postcss-modules": "^4.0.0", 3898 | "promise.series": "^0.2.0", 3899 | "resolve": "^1.19.0", 3900 | "rollup-pluginutils": "^2.8.2", 3901 | "safe-identifier": "^0.4.2", 3902 | "style-inject": "^0.3.0" 3903 | } 3904 | }, 3905 | "rollup-plugin-terser": { 3906 | "version": "7.0.2", 3907 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", 3908 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", 3909 | "dev": true, 3910 | "requires": { 3911 | "@babel/code-frame": "^7.10.4", 3912 | "jest-worker": "^26.2.1", 3913 | "serialize-javascript": "^4.0.0", 3914 | "terser": "^5.0.0" 3915 | } 3916 | }, 3917 | "rollup-pluginutils": { 3918 | "version": "2.8.2", 3919 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 3920 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 3921 | "dev": true, 3922 | "requires": { 3923 | "estree-walker": "^0.6.1" 3924 | }, 3925 | "dependencies": { 3926 | "estree-walker": { 3927 | "version": "0.6.1", 3928 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 3929 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 3930 | "dev": true 3931 | } 3932 | } 3933 | }, 3934 | "safe-buffer": { 3935 | "version": "5.2.1", 3936 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3937 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3938 | "dev": true 3939 | }, 3940 | "safe-identifier": { 3941 | "version": "0.4.2", 3942 | "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", 3943 | "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", 3944 | "dev": true 3945 | }, 3946 | "scheduler": { 3947 | "version": "0.20.2", 3948 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 3949 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 3950 | "requires": { 3951 | "loose-envify": "^1.1.0", 3952 | "object-assign": "^4.1.1" 3953 | } 3954 | }, 3955 | "serialize-javascript": { 3956 | "version": "4.0.0", 3957 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", 3958 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", 3959 | "dev": true, 3960 | "requires": { 3961 | "randombytes": "^2.1.0" 3962 | } 3963 | }, 3964 | "source-map": { 3965 | "version": "0.6.1", 3966 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3967 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3968 | "dev": true 3969 | }, 3970 | "source-map-js": { 3971 | "version": "1.0.2", 3972 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 3973 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 3974 | "dev": true, 3975 | "peer": true 3976 | }, 3977 | "source-map-support": { 3978 | "version": "0.5.21", 3979 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 3980 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 3981 | "dev": true, 3982 | "requires": { 3983 | "buffer-from": "^1.0.0", 3984 | "source-map": "^0.6.0" 3985 | } 3986 | }, 3987 | "sourcemap-codec": { 3988 | "version": "1.4.8", 3989 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 3990 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 3991 | "dev": true 3992 | }, 3993 | "stable": { 3994 | "version": "0.1.8", 3995 | "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", 3996 | "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", 3997 | "dev": true 3998 | }, 3999 | "steno": { 4000 | "version": "2.1.0", 4001 | "resolved": "https://registry.npmjs.org/steno/-/steno-2.1.0.tgz", 4002 | "integrity": "sha512-mauOsiaqTNGFkWqIfwcm3y/fq+qKKaIWf1vf3ocOuTdco9XoHCO2AGF1gFYXuZFSWuP38Q8LBHBGJv2KnJSXyA==" 4003 | }, 4004 | "string-hash": { 4005 | "version": "1.1.3", 4006 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 4007 | "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", 4008 | "dev": true 4009 | }, 4010 | "style-inject": { 4011 | "version": "0.3.0", 4012 | "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", 4013 | "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", 4014 | "dev": true 4015 | }, 4016 | "style-mod": { 4017 | "version": "4.0.0", 4018 | "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", 4019 | "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", 4020 | "dev": true 4021 | }, 4022 | "stylehacks": { 4023 | "version": "5.1.0", 4024 | "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", 4025 | "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", 4026 | "dev": true, 4027 | "requires": { 4028 | "browserslist": "^4.16.6", 4029 | "postcss-selector-parser": "^6.0.4" 4030 | } 4031 | }, 4032 | "supports-color": { 4033 | "version": "7.2.0", 4034 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 4035 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 4036 | "dev": true, 4037 | "requires": { 4038 | "has-flag": "^4.0.0" 4039 | } 4040 | }, 4041 | "supports-preserve-symlinks-flag": { 4042 | "version": "1.0.0", 4043 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 4044 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 4045 | "dev": true 4046 | }, 4047 | "svgo": { 4048 | "version": "2.8.0", 4049 | "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", 4050 | "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", 4051 | "dev": true, 4052 | "requires": { 4053 | "@trysound/sax": "0.2.0", 4054 | "commander": "^7.2.0", 4055 | "css-select": "^4.1.3", 4056 | "css-tree": "^1.1.3", 4057 | "csso": "^4.2.0", 4058 | "picocolors": "^1.0.0", 4059 | "stable": "^0.1.8" 4060 | } 4061 | }, 4062 | "terser": { 4063 | "version": "5.15.0", 4064 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", 4065 | "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", 4066 | "dev": true, 4067 | "requires": { 4068 | "@jridgewell/source-map": "^0.3.2", 4069 | "acorn": "^8.5.0", 4070 | "commander": "^2.20.0", 4071 | "source-map-support": "~0.5.20" 4072 | }, 4073 | "dependencies": { 4074 | "commander": { 4075 | "version": "2.20.3", 4076 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 4077 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 4078 | "dev": true 4079 | } 4080 | } 4081 | }, 4082 | "tslib": { 4083 | "version": "2.4.0", 4084 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 4085 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 4086 | "dev": true 4087 | }, 4088 | "typescript": { 4089 | "version": "4.7.4", 4090 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 4091 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 4092 | "dev": true 4093 | }, 4094 | "update-browserslist-db": { 4095 | "version": "1.0.5", 4096 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", 4097 | "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", 4098 | "dev": true, 4099 | "requires": { 4100 | "escalade": "^3.1.1", 4101 | "picocolors": "^1.0.0" 4102 | } 4103 | }, 4104 | "util-deprecate": { 4105 | "version": "1.0.2", 4106 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4107 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 4108 | "dev": true 4109 | }, 4110 | "w3c-keyname": { 4111 | "version": "2.2.6", 4112 | "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", 4113 | "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", 4114 | "dev": true 4115 | }, 4116 | "wrappy": { 4117 | "version": "1.0.2", 4118 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4119 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 4120 | "dev": true 4121 | }, 4122 | "yaml": { 4123 | "version": "1.10.2", 4124 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 4125 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 4126 | "dev": true 4127 | } 4128 | } 4129 | } 4130 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "obsidian-agtable", 3 | "version": "0.0.1", 4 | "description": "ag-grid table for obsidian", 5 | "main": "./src/main.ts", 6 | "scripts": { 7 | "dev": "rollup --config rollup.config.js -w", 8 | "build": "rollup --config rollup.config.js" 9 | }, 10 | "author": "windily-cloud", 11 | "license": "ISC", 12 | "devDependencies": { 13 | "@rollup/plugin-commonjs": "^21.0.2", 14 | "@rollup/plugin-node-resolve": "^13.1.3", 15 | "@rollup/plugin-typescript": "^8.3.0", 16 | "@types/node": "^17.0.20", 17 | "@types/react": "^17.0.39", 18 | "@types/react-dom": "^17.0.11", 19 | "obsidian": "^0.13.26", 20 | "prettier": "^2.6.0", 21 | "rollup": "^2.68.0", 22 | "rollup-plugin-postcss": "^4.0.2", 23 | "rollup-plugin-terser": "^7.0.2", 24 | "tslib": "^2.3.1", 25 | "typescript": "^4.5.5" 26 | }, 27 | "dependencies": { 28 | "ag-grid-community": "^28.1.0", 29 | "ag-grid-enterprise": "^28.1.0", 30 | "ag-grid-react": "^28.1.0", 31 | "axios": "^0.27.2", 32 | "lowdb": "^3.0.0", 33 | "react": "^17.0.2", 34 | "react-dom": "^17.0.2" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from '@rollup/plugin-typescript' 2 | import { nodeResolve } from '@rollup/plugin-node-resolve' 3 | import commonjs from '@rollup/plugin-commonjs' 4 | import postcss from 'rollup-plugin-postcss' 5 | import { terser } from 'rollup-plugin-terser' 6 | 7 | const isProd = process.env.BUILD === 'production' 8 | 9 | export default { 10 | input: './src/main.ts', 11 | output: { 12 | dir: '.', 13 | sourcemap: 'inline', 14 | sourcemapExcludeSources: isProd, 15 | format: 'cjs', 16 | exports: 'default', 17 | }, 18 | external: ['obsidian'], 19 | plugins: [ 20 | typescript(), 21 | nodeResolve({ browser: true }), 22 | commonjs(), 23 | terser(), 24 | postcss({ 25 | extract: true, 26 | extract: 'styles.css', 27 | }), 28 | ], 29 | } 30 | -------------------------------------------------------------------------------- /src/components/CustomHeader.tsx: -------------------------------------------------------------------------------- 1 | import { ColDef, IHeaderParams } from 'ag-grid-community' 2 | import Database from 'database' 3 | import t from 'i18n' 4 | import { Menu, Notice, Point } from 'obsidian' 5 | import React, { useEffect, useRef, useState } from 'react' 6 | import { TableData } from 'types' 7 | 8 | interface HeaderParams extends IHeaderParams { 9 | database: Database 10 | tableId: string 11 | setColumnDefs: React.Dispatch[]>> 12 | } 13 | 14 | export default (props: HeaderParams) => { 15 | const refButton = useRef(null) 16 | const refInput = useRef(null) 17 | const [editable, setEditable] = useState(false) 18 | const [columnName, setColumnName] = useState(props.displayName) 19 | const [sortStatus, setSortStatus] = useState(props.column.getSort()) 20 | 21 | const onMenuClicked = (event: React.MouseEvent) => { 22 | // event.preventDefault() 23 | // event.stopPropagation() 24 | props.showColumnMenu(refButton.current) 25 | } 26 | 27 | const handleDoubleClick = () => { 28 | setEditable(true) 29 | } 30 | 31 | const handleInputChange = (event: React.ChangeEvent) => { 32 | setColumnName(event.target.value) 33 | } 34 | 35 | const handleInputBlur = () => { 36 | changeColumnName() 37 | setEditable(false) 38 | } 39 | 40 | const handleInputExit = (event: React.KeyboardEvent) => { 41 | if (event.key === 'Enter' || event.key === 'Escape') { 42 | changeColumnName() 43 | setEditable(false) 44 | } 45 | } 46 | 47 | const changeColumnName = () => { 48 | const selectedColName = props.column.getColId() 49 | if (!columnName) { 50 | return 51 | } 52 | const tableData = props.database.getTableByUID(props.tableId) as TableData 53 | const isColumnNameExist = tableData.columnDef.some((col) => { 54 | return col.field === columnName 55 | }) 56 | if (isColumnNameExist) { 57 | new Notice('Column Name cannot repeat!') 58 | return 59 | } 60 | const newTableData = props.database.changeColumnName( 61 | props.tableId, 62 | selectedColName, 63 | columnName 64 | ) 65 | props.setColumnDefs(newTableData.columnDef) 66 | props.api.setRowData(newTableData.rowData) 67 | } 68 | 69 | let sort = null 70 | const onSortRequested = (event: any) => { 71 | if (props.column.isSortNone()) { 72 | props.setSort('asc', event.shiftKey) 73 | setSortStatus('asc') 74 | } else if (props.column.isSortAscending()) { 75 | props.setSort('desc', event.shiftKey) 76 | setSortStatus('desc') 77 | } else if (props.column.isSortDescending()) { 78 | props.setSort(null, event.shiftKey) 79 | setSortStatus(null) 80 | } else { 81 | props.setSort(null, event.shiftKey) 82 | setSortStatus(null) 83 | } 84 | } 85 | if (props.enableSorting) { 86 | if (!sortStatus) { 87 | sort = ( 88 |
onSortRequested(event)} 90 | onTouchEnd={(event) => onSortRequested(event)} 91 | > 92 | 93 |
94 | ) 95 | } else if (sortStatus === 'asc') { 96 | sort = ( 97 |
onSortRequested(event)} 99 | onTouchEnd={(event) => onSortRequested(event)} 100 | > 101 | 102 |
103 | ) 104 | } else if (sortStatus === 'desc') { 105 | sort = ( 106 |
onSortRequested(event)} 108 | onTouchEnd={(event) => onSortRequested(event)} 109 | > 110 | 111 |
112 | ) 113 | } 114 | } 115 | 116 | let label = null 117 | label = editable ? ( 118 | 127 | ) : ( 128 | props.displayName 129 | ) 130 | 131 | useEffect(() => { 132 | let isUnmount = false 133 | if (refInput.current && !isUnmount) { 134 | refInput.current.focus() 135 | } 136 | return () => { 137 | isUnmount = true 138 | } 139 | }, [editable]) 140 | 141 | const handleContextMenu = (event: React.MouseEvent) => { 142 | event.preventDefault() 143 | const menu = new Menu(app) 144 | menu.addItem((item) => 145 | item 146 | .setTitle(t('addColumn')) 147 | .setIcon('right-arrow') 148 | .onClick(() => { 149 | const newColumnDefs = props.database.addNewColumn(props.tableId) 150 | props.setColumnDefs(newColumnDefs) 151 | }) 152 | ) 153 | 154 | menu.addItem((item) => { 155 | item 156 | .setTitle(t('deleteThisColumn')) 157 | .setIcon('trash') 158 | .onClick(() => { 159 | const colId = props.column.getColId() 160 | console.log(colId) 161 | const tableData = props.database.deleteThisColumn( 162 | props.tableId, 163 | colId 164 | ) 165 | props.setColumnDefs(tableData.columnDef) 166 | props.api.setRowData(tableData.rowData) 167 | }) 168 | }) 169 | 170 | const x = event.clientX 171 | const y = event.clientY 172 | menu.showAtPosition({ x, y } as Point) 173 | } 174 | 175 | return ( 176 |
181 |
{label}
182 | {sort} 183 |
188 | 189 |
190 |
191 | ) 192 | } 193 | -------------------------------------------------------------------------------- /src/components/DataGrid.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useRef, useEffect, useMemo, useCallback } from 'react' 2 | import { AgGridReact } from 'ag-grid-react' // the AG Grid React Component 3 | import 'ag-grid-enterprise' 4 | import 'ag-grid-community/dist/styles/ag-grid.css' 5 | import 'ag-grid-community/dist/styles/ag-theme-alpine-dark.css' 6 | import 'ag-grid-community/dist/styles/ag-theme-alpine.css' 7 | import { AgtableSettings } from 'main' 8 | 9 | import { csvToObject, isDarkMode } from 'utils' 10 | import Database from 'database' 11 | import { TableData } from 'types' 12 | import { 13 | ColDef, 14 | GetContextMenuItemsParams, 15 | GetMainMenuItemsParams, 16 | MenuItemDef, 17 | } from 'ag-grid-enterprise' 18 | import CustomHeader from './CustomHeader' 19 | import t from 'i18n' 20 | import { 21 | CellEditingStoppedEvent, 22 | CellValueChangedEvent, 23 | ColumnMovedEvent, 24 | DragStoppedEvent, 25 | PasteEndEvent, 26 | RowDragEndEvent, 27 | } from 'ag-grid-community' 28 | import URLCellRenderer from './URLCellRenderer' 29 | import FileCellRenderer from './FileCellRenderer' 30 | import TagsCellRenderer from './TagsCellRenderer' 31 | import GenericWideInputPrompt from './prompt/GenericWideInputPropmt' 32 | 33 | const DataGrid = (props: { 34 | settings: AgtableSettings 35 | tableId: string 36 | database: Database 37 | }) => { 38 | const gridRef = useRef() 39 | const tableData = props.database.getTableByUID(props.tableId) as TableData 40 | tableData.columnDef[0]['rowDrag'] = true 41 | const [rowData, setRowData] = useState(tableData.rowData) 42 | const [columnDefs, setColumnDefs] = useState(tableData.columnDef) 43 | 44 | //DefaultColDef sets props common to all Columns 45 | const defaultColDef = useMemo( 46 | () => ({ 47 | sortable: true, 48 | editable: true, 49 | resizable: true, 50 | cellEditorPopup: true, 51 | filter: 'agTextColumnFilter', 52 | headerComponent: CustomHeader, 53 | headerComponentParams: { 54 | database: props.database, 55 | tableId: props.tableId, 56 | setColumnDefs: setColumnDefs, 57 | }, 58 | menuTabs: ['generalMenuTab', 'filterMenuTab', 'columnsMenuTab'], 59 | }), 60 | [] 61 | ) 62 | 63 | const columnTypes = { 64 | Text: {}, 65 | Url: { 66 | cellRenderer: URLCellRenderer, 67 | }, 68 | File: { 69 | cellRenderer: FileCellRenderer, 70 | }, 71 | Tags: { 72 | cellRenderer: TagsCellRenderer, 73 | }, 74 | } 75 | 76 | const getMainMenuItems = useCallback( 77 | (params: GetMainMenuItemsParams): (string | MenuItemDef)[] => { 78 | const colDef = params.column.getColDef() 79 | const customMenuItems: (MenuItemDef | string)[] = 80 | params.defaultItems.slice(0) 81 | 82 | customMenuItems.unshift({ 83 | name: 'Type', 84 | subMenu: [ 85 | { 86 | name: 'Text', 87 | action: () => { 88 | const newColumnDefs = props.database.changeColumnType( 89 | props.tableId, 90 | colDef, 91 | 'Text' 92 | ) 93 | newColumnDefs[0]['rowDrag'] = true 94 | setColumnDefs(newColumnDefs) 95 | }, 96 | checked: colDef.type === 'Text', 97 | }, 98 | { 99 | name: 'File', 100 | action: () => { 101 | const newColumnDefs = props.database.changeColumnType( 102 | props.tableId, 103 | colDef, 104 | 'File' 105 | ) 106 | newColumnDefs[0]['rowDrag'] = true 107 | setColumnDefs(newColumnDefs) 108 | }, 109 | checked: colDef.type === 'File', 110 | }, 111 | { 112 | name: 'Tags', 113 | action: () => { 114 | const newColumnDefs = props.database.changeColumnType( 115 | props.tableId, 116 | colDef, 117 | 'Tags' 118 | ) 119 | newColumnDefs[0]['rowDrag'] = true 120 | setColumnDefs(newColumnDefs) 121 | }, 122 | checked: colDef.type === 'Tags', 123 | }, 124 | { 125 | name: 'Url', 126 | action: () => { 127 | const newColumnDefs = props.database.changeColumnType( 128 | props.tableId, 129 | colDef, 130 | 'Url' 131 | ) 132 | newColumnDefs[0]['rowDrag'] = true 133 | setColumnDefs(newColumnDefs) 134 | }, 135 | checked: colDef.type === 'Url', 136 | }, 137 | ], 138 | }) 139 | return customMenuItems 140 | }, 141 | [] 142 | ) 143 | 144 | const getContextMenuItems = useCallback( 145 | (params: GetContextMenuItemsParams): (string | MenuItemDef)[] => { 146 | //console.log(params) 147 | let result: (string | MenuItemDef)[] = [ 148 | { 149 | // custom item 150 | name: t('addRowBelow'), 151 | action: () => { 152 | let rowIndex: number | null 153 | try { 154 | rowIndex = params.node.rowIndex 155 | } catch { 156 | rowIndex = null 157 | } 158 | const newRowData = props.database.addRowBelow( 159 | props.tableId, 160 | rowIndex 161 | ) 162 | setRowData(newRowData) 163 | }, 164 | }, 165 | { 166 | // custom item 167 | name: t('deleteThisRow'), 168 | action: () => { 169 | const rowindex = params.node.rowIndex 170 | const newRowData = props.database.deleteThisRow( 171 | props.tableId, 172 | rowindex 173 | ) 174 | setRowData(newRowData) 175 | }, 176 | }, 177 | 'copy', 178 | 'copyWithHeaders', 179 | 'paste', 180 | 'separator', 181 | { 182 | name: 'import', 183 | action: async () => { 184 | const inputValue = await GenericWideInputPrompt.Prompt( 185 | app, 186 | 'Input csv format', 187 | '' 188 | ) 189 | const csvList = csvToObject(inputValue) 190 | console.log(csvList) 191 | const columnDefs = Object.keys(csvList[0]).map((key: string) => { 192 | return { 193 | field: key, 194 | type: 'Text', 195 | } 196 | }) 197 | csvList.shift() 198 | const tableData = { 199 | columnDef: columnDefs, 200 | rowData: csvList, 201 | } as TableData 202 | props.database.updateTable(props.tableId, tableData) 203 | params.api.setColumnDefs(tableData.columnDef) 204 | setRowData(tableData.rowData) 205 | }, 206 | }, 207 | 'export', 208 | ] 209 | return result 210 | }, 211 | [] 212 | ) 213 | 214 | const onCellEditingStopped = (event: CellEditingStoppedEvent) => { 215 | const newValue = event.newValue 216 | const rowIndex = event.rowIndex 217 | const colKey = event.column.getColId() 218 | const tableData = props.database.getTableByUID(props.tableId) as TableData 219 | 220 | tableData.rowData[rowIndex][colKey] = newValue 221 | //console.log(rowIndex, event, colKey, tableData) 222 | const updataStatus = props.database.updateTable(props.tableId, tableData) 223 | if (!updataStatus) { 224 | console.log('Update table failed!') 225 | console.log('colKey:', colKey) 226 | console.log('tableData:', tableData) 227 | } 228 | } 229 | 230 | // const onColumnMoved = (event: ColumnMovedEvent) => { 231 | // const toIndex = event.toIndex 232 | // const colId = event.column.getColId() 233 | // props.database.dragColumn(props.tableId, colId, toIndex) 234 | // const newTableData = props.database.getTableByUID( 235 | // props.tableId 236 | // ) as TableData 237 | // newTableData.columnDef[0]['rowDrag'] = true 238 | // event.api.setColumnDefs(newTableData.columnDef) 239 | // event.api.setRowData(newTableData.rowData) 240 | // } 241 | let clickedColumn = '' 242 | let clickedColumnIndex: number = undefined 243 | let isColumnDrag = false 244 | const onColumnMoved = (event: ColumnMovedEvent) => { 245 | clickedColumn = event.column.getColId() 246 | clickedColumnIndex = event.toIndex 247 | isColumnDrag = true 248 | } 249 | 250 | const onDragStopped = (event: DragStoppedEvent) => { 251 | if (isColumnDrag && clickedColumn && clickedColumnIndex) { 252 | props.database.dragColumn( 253 | props.tableId, 254 | clickedColumn, 255 | clickedColumnIndex 256 | ) 257 | const newTableData = props.database.getTableByUID( 258 | props.tableId 259 | ) as TableData 260 | newTableData.columnDef[0]['rowDrag'] = true 261 | event.api.setColumnDefs(newTableData.columnDef) 262 | event.api.setRowData(newTableData.rowData) 263 | } 264 | } 265 | 266 | const onRowDragEnd = (event: RowDragEndEvent) => { 267 | const srcRow = event.node.data 268 | const toIndex = event.overIndex 269 | props.database.dragRow(props.tableId, srcRow, toIndex) 270 | } 271 | 272 | const statusBar = { 273 | statusPanels: [ 274 | { 275 | statusPanel: 'agTotalAndFilteredRowCountComponent', 276 | align: 'left', 277 | }, 278 | { 279 | statusPanel: 'agAggregationComponent', 280 | statusPanelParams: { 281 | // possible values are: 'count', 'sum', 'min', 'max', 'avg' 282 | aggFuncs: ['avg', 'sum'], 283 | }, 284 | align: 'left', 285 | }, 286 | ], 287 | } 288 | 289 | const onCellValueChanged = useCallback((params: CellValueChangedEvent) => { 290 | if (params.source != 'paste') { 291 | return 292 | } 293 | const rowIndex = params.rowIndex 294 | const pasteData = params.data 295 | const tableData = props.database.getTableByUID(props.tableId) as TableData 296 | const newRowData = tableData.rowData.map((row, index) => { 297 | if (index === rowIndex) { 298 | return pasteData 299 | } else { 300 | return row 301 | } 302 | }) 303 | tableData.rowData = newRowData 304 | props.database.updateTable(props.tableId, tableData) 305 | }, []) 306 | 307 | const onGridReady = useCallback(() => {}, []) 308 | 309 | return ( 310 |
315 | 339 |
340 | ) 341 | } 342 | 343 | export default DataGrid 344 | -------------------------------------------------------------------------------- /src/components/ErrorBoundary.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from "react"; 2 | import { ErrorInfo } from "react"; 3 | 4 | interface Props { 5 | children: ReactNode; 6 | } 7 | 8 | interface State { 9 | hasError: boolean; 10 | } 11 | 12 | export default class ErrorBoundary extends React.Component { 13 | public state: State = { 14 | hasError: false 15 | }; 16 | 17 | public static getDerivedStateFromError(_: Error): State { 18 | // Update state so the next render will show the fallback UI. 19 | return { hasError: true }; 20 | } 21 | 22 | public componentDidCatch(error: Error, errorInfo: ErrorInfo) { 23 | console.error("Uncaught error:", error, errorInfo); 24 | } 25 | 26 | public render() { 27 | if (this.state.hasError) { 28 | return

Sorry.. there was an error

; 29 | } 30 | 31 | return this.props.children; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/components/FileCellRenderer.tsx: -------------------------------------------------------------------------------- 1 | import { ICellRendererParams } from 'ag-grid-community' 2 | import { Notice } from 'obsidian' 3 | import React from 'react' 4 | import { hoverFile } from 'utils' 5 | 6 | const FileCellRenderer = (props: ICellRendererParams) => { 7 | const cellValue = props.value 8 | if (!cellValue) { 9 | return 10 | } 11 | //@ts-ignore 12 | const filePath = app.metadataCache.getLinkpathDest(cellValue, '')[0] 13 | 14 | const handleClickFileName = () => { 15 | if (filePath) { 16 | app.workspace.getUnpinnedLeaf().openFile(filePath) 17 | } else { 18 | new Notice('File does not exist!') 19 | } 20 | } 21 | 22 | const handleHover = (event: any) => { 23 | hoverFile(event, filePath) 24 | } 25 | 26 | let linkComponent = null 27 | if (filePath) { 28 | linkComponent = ( 29 | { 32 | handleHover(event) 33 | }} 34 | onClick={() => { 35 | handleClickFileName() 36 | }} 37 | > 38 | {cellValue} 39 | 40 | ) 41 | } else { 42 | linkComponent = ( 43 | {cellValue} 44 | ) 45 | } 46 | 47 | return {linkComponent} 48 | } 49 | 50 | export default FileCellRenderer 51 | -------------------------------------------------------------------------------- /src/components/TagsCellRenderer.tsx: -------------------------------------------------------------------------------- 1 | import { ICellRendererParams } from 'ag-grid-community' 2 | import React from 'react' 3 | 4 | const TagsCellRenderer = (props: ICellRendererParams) => { 5 | const cellValue = props.value 6 | let tagsList = null 7 | if (cellValue) { 8 | const tags = String(props.value).split(' ') 9 | 10 | tagsList = tags.map((tag: string, index: number) => { 11 | return ( 12 | <> 13 | 17 | 21 | {tag} 22 | 23 | 24 | ) 25 | }) 26 | } else { 27 | tagsList = '' 28 | } 29 | 30 | return tagsList 31 | } 32 | 33 | export default TagsCellRenderer 34 | -------------------------------------------------------------------------------- /src/components/URLCellRenderer.tsx: -------------------------------------------------------------------------------- 1 | import { ICellRendererParams } from 'ag-grid-community' 2 | import React from 'react' 3 | 4 | const URLCellRenderer = (props: ICellRendererParams) => { 5 | const cellValue = props.value 6 | const regx = /(?{result[1]} 11 | } else { 12 | linkComponent = cellValue 13 | } 14 | 15 | return {linkComponent} 16 | } 17 | 18 | export default URLCellRenderer 19 | -------------------------------------------------------------------------------- /src/components/prompt/GenericWideInputPropmt.ts: -------------------------------------------------------------------------------- 1 | import {App, ButtonComponent, Modal, TextAreaComponent} from "obsidian"; 2 | 3 | export default class GenericWideInputPrompt extends Modal { 4 | public waitForClose: Promise; 5 | 6 | private resolvePromise: (input: string) => void; 7 | private rejectPromise: (reason?: any) => void; 8 | private didSubmit: boolean = false; 9 | private inputComponent: TextAreaComponent; 10 | private input: string; 11 | private readonly placeholder: string; 12 | 13 | public static Prompt(app: App, header: string, placeholder?: string, value?: string): Promise { 14 | const newPromptModal = new GenericWideInputPrompt(app, header, placeholder, value); 15 | return newPromptModal.waitForClose; 16 | } 17 | 18 | protected constructor(app: App, private header: string, placeholder?: string, value?: string) { 19 | super(app); 20 | this.placeholder = placeholder; 21 | this.input = value; 22 | 23 | this.waitForClose = new Promise( 24 | (resolve, reject) => { 25 | this.resolvePromise = resolve; 26 | this.rejectPromise = reject; 27 | } 28 | ); 29 | 30 | this.display(); 31 | this.open(); 32 | 33 | } 34 | 35 | private display() { 36 | this.containerEl.addClass('quickAddModal', 'qaWideInputPrompt') 37 | this.contentEl.empty(); 38 | this.titleEl.textContent = this.header; 39 | 40 | const mainContentContainer: HTMLDivElement = this.contentEl.createDiv(); 41 | this.inputComponent = this.createInputField(mainContentContainer, this.placeholder, this.input); 42 | this.createButtonBar(mainContentContainer); 43 | } 44 | 45 | protected createInputField(container: HTMLElement, placeholder?: string, value?: string) { 46 | const textComponent = new TextAreaComponent(container); 47 | 48 | textComponent.inputEl.classList.add('wideInputPromptInputEl'); 49 | textComponent.setPlaceholder(placeholder ?? "") 50 | .setValue(value ?? "") 51 | .onChange(value => this.input = value) 52 | .inputEl.addEventListener('keydown', this.submitEnterCallback); 53 | 54 | return textComponent; 55 | } 56 | 57 | private createButton(container: HTMLElement, text: string, callback: (evt: MouseEvent) => any) { 58 | const btn = new ButtonComponent(container); 59 | btn.setButtonText(text) 60 | .onClick(callback); 61 | 62 | return btn; 63 | } 64 | 65 | private createButtonBar(mainContentContainer: HTMLDivElement) { 66 | const buttonBarContainer: HTMLDivElement = mainContentContainer.createDiv(); 67 | this.createButton(buttonBarContainer, "Ok", this.submitClickCallback) 68 | .setCta().buttonEl.style.marginRight = '0'; 69 | this.createButton(buttonBarContainer, "Cancel", this.cancelClickCallback); 70 | 71 | buttonBarContainer.style.display = 'flex'; 72 | buttonBarContainer.style.flexDirection = 'row-reverse'; 73 | buttonBarContainer.style.justifyContent = 'flex-start'; 74 | buttonBarContainer.style.marginTop = '1rem'; 75 | } 76 | 77 | private submitClickCallback = (evt: MouseEvent) => this.submit(); 78 | private cancelClickCallback = (evt: MouseEvent) => this.cancel(); 79 | 80 | private submitEnterCallback = (evt: KeyboardEvent) => { 81 | if ((evt.ctrlKey || evt.metaKey ) && evt.key === "Enter") { 82 | evt.preventDefault(); 83 | this.submit(); 84 | } 85 | } 86 | 87 | private submit() { 88 | this.didSubmit = true; 89 | 90 | this.close(); 91 | } 92 | 93 | private cancel() { 94 | this.close(); 95 | } 96 | 97 | private resolveInput() { 98 | if(!this.didSubmit) this.rejectPromise("No input given."); 99 | else this.resolvePromise(this.input); 100 | } 101 | 102 | private removeInputListener() { 103 | this.inputComponent.inputEl.removeEventListener('keydown', this.submitEnterCallback) 104 | } 105 | 106 | onOpen() { 107 | super.onOpen(); 108 | 109 | this.inputComponent.inputEl.focus(); 110 | this.inputComponent.inputEl.select(); 111 | } 112 | 113 | onClose() { 114 | super.onClose(); 115 | this.resolveInput(); 116 | this.removeInputListener(); 117 | } 118 | } -------------------------------------------------------------------------------- /src/components/prompt/YesNoPrompt.ts: -------------------------------------------------------------------------------- 1 | //copy from obsidian quickadd:https://github.com/chhoumann/quickadd/blob/master/src/gui/GenericYesNoPrompt/GenericYesNoPrompt.ts 2 | 3 | import { App, ButtonComponent, Modal } from "obsidian"; 4 | 5 | export default class GenericYesNoPrompt extends Modal { 6 | private resolvePromise: (input: boolean) => void; 7 | private rejectPromise: (reason?: any) => void; 8 | private input: boolean; 9 | public waitForClose: Promise; 10 | private didSubmit: boolean = false; 11 | 12 | public static Prompt(app: App, header: string, text?: string): Promise { 13 | const newPromptModal = new GenericYesNoPrompt(app, header, text); 14 | return newPromptModal.waitForClose; 15 | } 16 | 17 | private constructor(app: App, private header: string, private text?: string) { 18 | super(app); 19 | 20 | this.waitForClose = new Promise( 21 | (resolve, reject) => { 22 | this.resolvePromise = resolve; 23 | this.rejectPromise = reject; 24 | } 25 | ); 26 | 27 | this.open(); 28 | this.display(); 29 | } 30 | 31 | private display() { 32 | this.containerEl.addClass('quickAddModal', 'qaYesNoPrompt') 33 | this.contentEl.empty(); 34 | this.titleEl.textContent = this.header; 35 | this.contentEl.createEl('p', { text: this.text }); 36 | 37 | const buttonsDiv = this.contentEl.createDiv({ cls: 'yesNoPromptButtonContainer' }) 38 | 39 | const noButton = new ButtonComponent(buttonsDiv) 40 | .setButtonText('No') 41 | .onClick(() => this.submit(false)); 42 | 43 | const yesButton = new ButtonComponent(buttonsDiv) 44 | .setButtonText('Yes') 45 | .onClick(() => this.submit(true)) 46 | .setWarning(); 47 | 48 | yesButton.buttonEl.focus(); 49 | 50 | } 51 | 52 | private submit(input: boolean) { 53 | this.input = input; 54 | this.didSubmit = true; 55 | this.close(); 56 | } 57 | 58 | onClose() { 59 | super.onClose(); 60 | 61 | if (!this.didSubmit) this.rejectPromise("No answer given."); 62 | else this.resolvePromise(this.input); 63 | } 64 | } -------------------------------------------------------------------------------- /src/database/index.ts: -------------------------------------------------------------------------------- 1 | import { RowData } from './../types/index'; 2 | import { ColDef } from 'ag-grid-community'; 3 | import { JSONFileSync, LowSync } from 'lowdb' 4 | import path from 'path' 5 | import { generateUID } from '../utils' 6 | import type { TableData, DbData } from 'types' 7 | 8 | export default class Database { 9 | private dbPath: string 10 | private db: LowSync 11 | constructor() { 12 | //@ts-ignore 13 | this.dbPath = path.join(app.vault.adapter.basePath, app.vault.configDir, "agtable.json") 14 | this.initDatabase() 15 | } 16 | 17 | private initDatabase() { 18 | const adapter = new JSONFileSync(this.dbPath) 19 | this.db = new LowSync(adapter) 20 | this.db.read() 21 | this.db.data ||= {} 22 | this.db.write() 23 | } 24 | 25 | createNewTable(): string { 26 | const uid = generateUID() 27 | this.db.read() 28 | 29 | this.db.data[uid] = { 30 | columnDef: [{ 31 | field: "title", 32 | type: "Text" 33 | }], 34 | rowData: [ 35 | { 36 | 'title': "" 37 | } 38 | ] 39 | } as TableData 40 | //console.log(this.db.data) 41 | this.db.write() 42 | return uid 43 | } 44 | 45 | getTableByUID(uid: string) { 46 | this.db.read() 47 | if (!this.db.data[uid]) { 48 | console.log(`table ${uid} does not exist!`) 49 | return 50 | } 51 | 52 | return this.db.data[uid] 53 | } 54 | 55 | 56 | updateTable(uid: string, tableData: TableData): boolean { 57 | this.db.read() 58 | if (!this.db.data[uid]) { 59 | return false 60 | } 61 | this.db.data[uid] = tableData 62 | this.db.write() 63 | return true 64 | } 65 | 66 | addNewColumn(uid: string): ColDef[] { 67 | const tableData = this.getTableByUID(uid) as TableData 68 | let newColumnNumber = 1 69 | tableData.columnDef.forEach((col) => { 70 | if (col.field.startsWith('new column')) { 71 | const currentColumnNumber = parseInt(col.field.slice(10,)) 72 | if (currentColumnNumber >= newColumnNumber) { 73 | newColumnNumber = currentColumnNumber + 1 74 | } 75 | } 76 | }) 77 | const newColumnDefs = [ 78 | ...tableData.columnDef, 79 | { 80 | field: `new column${newColumnNumber}`, 81 | type: 'Text', 82 | }, 83 | ] 84 | 85 | tableData.columnDef = newColumnDefs 86 | this.updateTable(uid, tableData) 87 | return newColumnDefs 88 | } 89 | 90 | deleteThisColumn(uid: string, selectedColField: string): TableData { 91 | const tableData = this.getTableByUID(uid) as TableData 92 | const newColumnDefs = tableData.columnDef.filter((col) => { 93 | return col.field != selectedColField 94 | }) 95 | const newRowData = tableData.rowData.map((row) => { 96 | delete row[selectedColField] 97 | return row 98 | }) 99 | 100 | tableData.columnDef = newColumnDefs 101 | tableData.rowData = newRowData 102 | this.updateTable(uid, tableData) 103 | return tableData 104 | } 105 | 106 | changeColumnName(uid: string, selectedColName: string, newColName: string): TableData { 107 | const tableData = this.getTableByUID(uid) as TableData 108 | const newColumnDef = tableData.columnDef.map((col) => { 109 | if (col.field === selectedColName) { 110 | col.field = newColName 111 | } 112 | return col 113 | }) 114 | const newRowData = tableData.rowData.map((row: any) => { 115 | const rowValue = row[selectedColName] 116 | delete row[selectedColName] 117 | row[newColName] = rowValue 118 | return row 119 | }) 120 | 121 | tableData.columnDef = newColumnDef 122 | tableData.rowData = newRowData 123 | this.updateTable(uid, tableData) 124 | return tableData 125 | } 126 | 127 | dragColumn(uid: string, colId: string, toIndex: number): TableData { 128 | const tableData = this.getTableByUID(uid) as TableData 129 | let fromIndex: number 130 | tableData.columnDef.some((col, index) => { 131 | if (col.field === colId) { 132 | fromIndex = index 133 | return true 134 | } 135 | }) 136 | 137 | if (fromIndex === undefined) { 138 | throw new Error('not found fromIndex!') 139 | } 140 | 141 | if (fromIndex > toIndex) { 142 | const deletedItem = tableData.columnDef.splice(fromIndex, 1) 143 | tableData.columnDef.splice(toIndex, 0, deletedItem[0]) 144 | } else if (fromIndex < toIndex) { 145 | tableData.columnDef.splice(toIndex + 1, 0, tableData.columnDef[fromIndex]) 146 | tableData.columnDef.splice(fromIndex, 1) 147 | } 148 | 149 | this.updateTable(uid, tableData) 150 | return tableData 151 | } 152 | 153 | addRowBelow(uid: string, rowIndex: number | null): RowData[] { 154 | const tableData = this.getTableByUID(uid) as TableData 155 | const newRowData = {} 156 | tableData.columnDef.forEach(col => { 157 | newRowData[col.field] = '' 158 | }) 159 | 160 | // Object.keys(tableData.rowData[0]).forEach((key) => { 161 | // newRowData[key] = '' 162 | // }) 163 | if (rowIndex === null) { 164 | tableData.rowData.push(newRowData) 165 | this.updateTable(uid, tableData) 166 | return tableData.rowData 167 | } 168 | tableData.rowData.splice(rowIndex + 1, 0, newRowData) 169 | this.updateTable(uid, tableData) 170 | return tableData.rowData 171 | } 172 | 173 | deleteThisRow(uid: string, rowIndex: number): RowData[] { 174 | const tableData = this.getTableByUID(uid) as TableData 175 | const newRowData = tableData.rowData.filter( 176 | (row, index) => { 177 | return rowIndex != index 178 | } 179 | ) 180 | tableData.rowData = newRowData 181 | this.updateTable(uid, tableData) 182 | return newRowData 183 | } 184 | 185 | dragRow(uid: string, srcRow: RowData, toIndex: number) { 186 | const tableData = this.getTableByUID(uid) as TableData 187 | let fromIndex: number 188 | tableData.rowData.some((row, index) => { 189 | if (JSON.stringify(row) === JSON.stringify(srcRow)) { 190 | fromIndex = index 191 | return true 192 | } 193 | }) 194 | 195 | if (fromIndex === undefined) { 196 | throw new Error('not found fromIndex!') 197 | } 198 | 199 | if (fromIndex > toIndex) { 200 | const deletedItem = tableData.rowData.splice(fromIndex, 1) 201 | tableData.rowData.splice(toIndex, 0, deletedItem[0]) 202 | } else if (fromIndex < toIndex) { 203 | tableData.rowData.splice(toIndex + 1, 0, tableData.rowData[fromIndex]) 204 | tableData.rowData.splice(fromIndex, 1) 205 | } 206 | 207 | this.updateTable(uid, tableData) 208 | } 209 | 210 | changeColumnType(uid: string, colName: ColDef, newType: string): ColDef[] { 211 | const tableData = this.getTableByUID(uid) as TableData 212 | let newColumnDefs = tableData.columnDef 213 | tableData.columnDef.some((col, index) => { 214 | if (col.field === colName.field) { 215 | newColumnDefs[index].type = newType 216 | return true 217 | } 218 | return false 219 | }) 220 | 221 | tableData.columnDef = newColumnDefs 222 | this.updateTable(uid, tableData) 223 | return newColumnDefs 224 | } 225 | } -------------------------------------------------------------------------------- /src/i18n/index.ts: -------------------------------------------------------------------------------- 1 | // Code from https://github.com/valentine195/obsidian-admonition/blob/master/src/lang/helpers.ts 2 | 3 | import {moment} from 'obsidian'; 4 | import en from './locales/en'; 5 | import zhCN from './locales/zh-cn'; 6 | 7 | const localeMap: {[k: string]: Partial} = { 8 | en, 9 | 'zh-cn': zhCN, 10 | }; 11 | 12 | const locale = localeMap[moment.locale()]; 13 | 14 | export default function t(str: keyof typeof en): string { 15 | return (locale && locale[str]) || en[str]; 16 | } -------------------------------------------------------------------------------- /src/i18n/locales/en.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | welcome: 'Loading Agtable plugin', 3 | createTable: 'Create table', 4 | promptHeader: 'Input table size:(row x column)', 5 | promptPlaceholder: 'eg:4x3', 6 | resolveTableFailed: 'Resolve table failed!', 7 | addColumn: 'Add column', 8 | deleteThisColumn: 'Delete this column', 9 | addRowBelow: 'Add row below', 10 | deleteThisRow: 'Delete this row', 11 | convertToMdTable: 'Convert to md table', 12 | convertToAgtable: 'Convert to Agtable', 13 | renameError: 'Column can not empty', 14 | singleInput: 'Convert to singleline input', 15 | multiInput: 'Convert to MultiLine input', 16 | } 17 | -------------------------------------------------------------------------------- /src/i18n/locales/zh-cn.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | welcome: '加载agtable插件....', 3 | createTable: '创建表格', 4 | promptHeader: '输入表格大小(行x列)', 5 | promptPlaceholder: '示例:4x3', 6 | resolveTableFailed: '解析表格失败', 7 | addColumn: '添加列', 8 | deleteThisColumn: '删除该列', 9 | addRowBelow: '在下方添加行', 10 | deleteThisRow: '删除该行', 11 | convertToMdTable: '转换为普通表格', 12 | convertToAgtable: '转换为agtable', 13 | renameError: '列名不能为空', 14 | singleInput: '转为单行编辑', 15 | multiInput: '转为多行编辑', 16 | } 17 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Plugin, 3 | MarkdownPostProcessorContext, 4 | Notice, 5 | Editor, 6 | parseYaml, 7 | } from 'obsidian' 8 | import React from 'react' 9 | import TableView from 'views/TableView' 10 | import t from 'i18n' 11 | import ReactDOM from 'react-dom' 12 | import Database from 'database' 13 | 14 | export interface AgtableSettings { 15 | databaseName: string 16 | } 17 | 18 | const DEFAULT_SETTINGS = { 19 | databaseName: 'agtable.json' 20 | } 21 | 22 | export default class AgtablePlugin extends Plugin { 23 | settings: AgtableSettings 24 | database: Database 25 | async onload(): Promise { 26 | console.log(`${t('welcome')}`) 27 | this.loadSettings() 28 | this.database = new Database() 29 | 30 | this.addCommand({ 31 | id: 'add-new-agtable', 32 | name: 'add new agtable', 33 | editorCallback: async (editor: Editor) => { 34 | const uid = this.database.createNewTable() 35 | if (!uid) { 36 | new Notice("Exist uid, it's not your fault, please tell developer to fix it") 37 | } 38 | const tableString = `\`\`\`agtable\ntableId: ${uid}\n\`\`\`` 39 | editor.replaceRange(tableString, editor.getCursor()) 40 | } 41 | }) 42 | 43 | this.registerMarkdownCodeBlockProcessor('agtable', async (source: string, el: HTMLElement, context: MarkdownPostProcessorContext) => { 44 | if (!source) { 45 | return 46 | } 47 | const yaml = parseYaml(source) 48 | const tableData = this.database.getTableByUID(yaml.tableId) 49 | if (!tableData) { 50 | return 51 | } 52 | const view = React.createElement(TableView, { settings: this.settings, tableId: yaml.tableId, database: this.database }) 53 | 54 | ReactDOM.render(view, el) 55 | }) 56 | } 57 | 58 | async loadSettings() { 59 | this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); 60 | } 61 | 62 | async saveSettings() { 63 | await this.saveData(this.settings); 64 | } 65 | 66 | async onunload(): Promise { 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/shimes.d.ts: -------------------------------------------------------------------------------- 1 | import { App } from "obsidian"; 2 | 3 | declare global { 4 | const app: App 5 | } -------------------------------------------------------------------------------- /src/styles/TableView.css: -------------------------------------------------------------------------------- 1 | #table-body .ag-root-wrapper-body { 2 | height: 600px; 3 | } 4 | 5 | #table-body .agtable-header { 6 | display: flex; 7 | justify-content: space-between; 8 | } 9 | 10 | #table-body .agtable-obsidian-cell p { 11 | margin: 0; 12 | padding: 0; 13 | } 14 | /* #table-body .agtable-header .agtable-header-menu { 15 | display: none; 16 | } 17 | #table-body .agtable-header:hover .agtable-header-menu { 18 | display: block; 19 | } */ 20 | /* #table-body .ag-menu { 21 | font-size: 0px; 22 | } 23 | 24 | #table-body .ag-menu .ag-menu-header { 25 | font-size: 13px; 26 | } 27 | 28 | #table-body .ag-menu .ag-menu-body { 29 | font-size: 13px; 30 | } 31 | 32 | #table-body .ag-filter-wrapper { 33 | font-size: 0px; 34 | } 35 | 36 | #table-body .ag-filter-wrapper .ag-mini-filter { 37 | font-size: 13px; 38 | } 39 | 40 | #table-body .ag-filter-wrapper .ag-filter-virtual-list-container { 41 | font-size: 13px; 42 | } 43 | 44 | #table-body .ag-virtual-list-viewport { 45 | font-size: 0px; 46 | } 47 | 48 | #table-body .ag-virtual-list-viewport .ag-virtual-list-container { 49 | font-size: 13px; 50 | } */ 51 | -------------------------------------------------------------------------------- /src/types/index.ts: -------------------------------------------------------------------------------- 1 | import type { ColDef } from 'ag-grid-community' 2 | 3 | export interface RowData { 4 | [index: string]: string 5 | } 6 | export interface TableData { 7 | columnDef: ColDef[] 8 | rowData?: RowData[] 9 | } 10 | 11 | export interface DbData { 12 | [uid: string]: TableData 13 | } 14 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | import { moment } from 'obsidian' 2 | export function generateUID() { 3 | return moment().format('YYMMDDhhmmss') 4 | } 5 | 6 | export function isDarkMode(): boolean { 7 | return Array.from(document.body.classList).includes('theme-dark') 8 | } 9 | 10 | export const hoverFile = (e: MouseEvent, item: any): void => { 11 | const targetEl = e.target as HTMLElement; 12 | 13 | if (!e.ctrlKey && !e.metaKey) return; 14 | 15 | app.workspace.trigger('hover-link', { 16 | event: e, 17 | source: 'multi-file-explorer-view', 18 | hoverParent: targetEl.parentElement, 19 | targetEl, 20 | linktext: item.name, 21 | sourcePath: item.path, 22 | }); 23 | } 24 | 25 | export function csvToObject(csvString: string) { 26 | const csvarry = csvString.split("\n"); 27 | let datas = []; 28 | let headers = csvarry[0].split(","); 29 | for (var i = 1; i < csvarry.length; i++) { 30 | var data = {}; 31 | var temp = csvarry[i].split(","); 32 | for (var j = 0; j < temp.length; j++) { 33 | data[headers[j]] = temp[j]; 34 | } 35 | datas.push(data); 36 | } 37 | return datas; 38 | } -------------------------------------------------------------------------------- /src/views/TableView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { App } from 'obsidian' 3 | import DataGrid from 'components/DataGrid' 4 | import ErrorBoundary from 'components/ErrorBoundary' 5 | import '../styles/TableView.css' 6 | import { AgtableSettings } from 'main' 7 | import Database from 'database' 8 | 9 | interface Props { 10 | settings: AgtableSettings 11 | tableId: string 12 | database: Database 13 | } 14 | 15 | export default class TableView extends React.Component { 16 | constructor(props: Props) { 17 | super(props) 18 | } 19 | 20 | render(): React.ReactNode { 21 | return ( 22 | 23 | 24 | 25 | ) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./src", 4 | "inlineSourceMap": true, 5 | "inlineSources": true, 6 | "module": "ESNext", 7 | "target": "es6", 8 | "allowJs": true, 9 | "noImplicitAny": true, 10 | "moduleResolution": "node", 11 | "importHelpers": true, 12 | "lib": [ 13 | "dom", 14 | "es5", 15 | "scripthost", 16 | "es2015" 17 | ], 18 | "jsx": "react", 19 | "allowSyntheticDefaultImports": true, 20 | "suppressImplicitAnyIndexErrors":true, 21 | }, 22 | "include": ["src/**/*.ts", "src/**/*tsx", "src/**/*.d"] 23 | } 24 | --------------------------------------------------------------------------------