From 1b640f8723101fd2e031bd0aacd7c053923ed7f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B5=B7=E5=BD=AC?= Date: Mon, 29 Sep 2025 22:52:30 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E7=BB=84=E4=BB=B6=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/inula2-ui2/README.en.md | 36 + packages/inula2-ui2/README.md | 65 + packages/inula2-ui2/inulaUI/.dumirc.ts | 71 + packages/inula2-ui2/inulaUI/.editorconfig | 13 + packages/inula2-ui2/inulaUI/.eslintrc.js | 3 + packages/inula2-ui2/inulaUI/.fatherrc.ts | 6 + packages/inula2-ui2/inulaUI/.gitignore | 6 + packages/inula2-ui2/inulaUI/.prettierignore | 2 + packages/inula2-ui2/inulaUI/.prettierrc.js | 19 + packages/inula2-ui2/inulaUI/.stylelintrc | 3 + packages/inula2-ui2/inulaUI/LICENSE | 21 + packages/inula2-ui2/inulaUI/README.md | 43 + packages/inula2-ui2/inulaUI/docs/guide.md | 1 + packages/inula2-ui2/inulaUI/docs/index.md | 49 + packages/inula2-ui2/inulaUI/package.json | 73 + packages/inula2-ui2/inulaUI/pnpm-lock.yaml | 16297 ++++++++++++++++ .../inula2-ui2/inulaUI/src/button/index.md | 245 + packages/inula2-ui2/inulaUI/src/card/index.md | 508 + .../inula2-ui2/inulaUI/src/checkbox/index.md | 253 + .../inulaUI/src/datepicker/index.md | 1256 ++ .../inula2-ui2/inulaUI/src/dialog/index.md | 320 + packages/inula2-ui2/inulaUI/src/enum.ts | 9 + packages/inula2-ui2/inulaUI/src/form/index.md | 721 + packages/inula2-ui2/inulaUI/src/global.d.ts | 4 + packages/inula2-ui2/inulaUI/src/icon/index.md | 348 + packages/inula2-ui2/inulaUI/src/index.ts | 2 + .../inula2-ui2/inulaUI/src/input/index.md | 502 + .../inulaUI/src/notification/index.md | 251 + .../inula2-ui2/inulaUI/src/radio/index.md | 248 + .../inula2-ui2/inulaUI/src/select/index.md | 366 + packages/inula2-ui2/inulaUI/src/spin/index.md | 349 + .../inula2-ui2/inulaUI/src/switch/index.md | 233 + packages/inula2-ui2/inulaUI/src/tabs/index.md | 713 + packages/inula2-ui2/inulaUI/src/tag/index.md | 304 + .../inula2-ui2/inulaUI/src/tooltip/index.md | 148 + packages/inula2-ui2/inulaUI/src/tree/index.md | 506 + packages/inula2-ui2/inulaUI/tsconfig.json | 18 + packages/inula2-ui2/library_code/.gitignore | 17 + packages/inula2-ui2/library_code/index.html | 17 + packages/inula2-ui2/library_code/package.json | 46 + .../inula2-ui2/library_code/src/colors.css | 112 + .../src/components/Notification/demo.jsx | 46 + .../components/Notification/demos/demo1.jsx | 23 + .../components/Notification/demos/demo2.jsx | 21 + .../components/Notification/demos/demo3.jsx | 25 + .../components/Notification/demos/demo4.jsx | 18 + .../components/Notification/demos/demo5.jsx | 18 + .../src/components/Notification/index.css | 197 + .../src/components/Notification/index.jsx | 122 + .../src/components/button/demo.jsx | 51 + .../src/components/button/demos/demo1.jsx | 19 + .../src/components/button/demos/demo2.jsx | 15 + .../src/components/button/demos/demo3.jsx | 12 + .../src/components/button/demos/demo4.jsx | 15 + .../src/components/button/demos/demo5.jsx | 15 + .../src/components/button/demos/demo6.jsx | 16 + .../src/components/button/index.css | 310 + .../src/components/button/index.jsx | 42 + .../library_code/src/components/card/demo.jsx | 31 + .../src/components/card/demos/demo1.jsx | 63 + .../src/components/card/demos/demo2.jsx | 71 + .../src/components/card/demos/demo3.jsx | 47 + .../src/components/card/demos/demo4.jsx | 82 + .../src/components/card/demos/demo5.jsx | 101 + .../src/components/card/index.css | 214 + .../src/components/card/index.jsx | 168 + .../src/components/checkbox/demo.jsx | 27 + .../src/components/checkbox/demos/demo1.jsx | 58 + .../src/components/checkbox/demos/demo2.jsx | 61 + .../src/components/checkbox/demos/demo3.jsx | 29 + .../src/components/checkbox/index.css | 128 + .../src/components/checkbox/index.jsx | 131 + .../src/components/datepicker/demo.jsx | 39 + .../src/components/datepicker/demos/demo1.jsx | 71 + .../src/components/datepicker/demos/demo2.jsx | 48 + .../src/components/datepicker/demos/demo3.jsx | 20 + .../src/components/datepicker/index.css | 1181 ++ .../src/components/datepicker/index.jsx | 1889 ++ .../src/components/datepicker2/demo.jsx | 85 + .../components/datepicker2/demos/demo1.jsx | 97 + .../components/datepicker2/demos/demo2.jsx | 100 + .../components/datepicker2/demos/demo3.jsx | 73 + .../components/datepicker2/demos/demo4.jsx | 59 + .../components/datepicker2/demos/demo5.jsx | 161 + .../components/datepicker2/demos/demo6.jsx | 143 + .../components/datepicker2/demos/demo7.jsx | 199 + .../components/datepicker2/demos/demo8.jsx | 183 + .../src/components/datepicker2/index.css | 599 + .../src/components/datepicker2/index.jsx | 1891 ++ .../datepicker2/utils/calculateFunc.js | 471 + .../datepicker2/utils/formatFunc.js | 0 .../src/components/datepicker2/utils/index.js | 43 + .../library_code/src/components/form/demo.jsx | 57 + .../src/components/form/demos/demo1.jsx | 80 + .../src/components/form/demos/demo2.jsx | 95 + .../src/components/form/demos/demo3.jsx | 72 + .../src/components/form/demos/demo4.jsx | 126 + .../src/components/form/demos/demo5.jsx | 96 + .../src/components/form/demos/demo6.jsx | 76 + .../src/components/form/demos/demo7.jsx | 80 + .../src/components/form/index.css | 297 + .../src/components/form/index.jsx | 428 + .../library_code/src/components/icon/demo.jsx | 28 + .../src/components/icon/demos/demo1.jsx | 22 + .../src/components/icon/demos/demo2.jsx | 30 + .../src/components/icon/demos/demo3.jsx | 30 + .../src/components/icon/demos/demo4.jsx | 30 + .../src/components/icon/demos/demo5.jsx | 51 + .../src/components/icon/demos/demo6.jsx | 43 + .../src/components/icon/demos/iconlist.ts | 1852 ++ .../src/components/icon/index.css | 54 + .../src/components/icon/index.jsx | 65 + .../src/components/input/demo.jsx | 70 + .../src/components/input/demos/demo1.jsx | 32 + .../src/components/input/demos/demo2.jsx | 43 + .../src/components/input/demos/demo3.jsx | 55 + .../src/components/input/demos/demo4.jsx | 13 + .../src/components/input/demos/demo5.jsx | 36 + .../src/components/input/demos/demo6.jsx | 27 + .../src/components/input/demos/demo7.jsx | 36 + .../src/components/input/demos/demo8.jsx | 35 + .../src/components/input/demos/demo9.jsx | 14 + .../src/components/input/index.css | 651 + .../src/components/input/index.jsx | 273 + .../src/components/modal/demo.jsx | 65 + .../src/components/modal/demos/demo1.jsx | 20 + .../src/components/modal/demos/demo2.jsx | 20 + .../src/components/modal/demos/demo3.jsx | 24 + .../src/components/modal/demos/demo4.jsx | 23 + .../src/components/modal/demos/demo5.jsx | 21 + .../src/components/modal/demos/demo6.jsx | 29 + .../src/components/modal/demos/demo7.jsx | 21 + .../src/components/modal/index.css | 136 + .../src/components/modal/index.jsx | 98 + .../src/components/radio/demo.jsx | 69 + .../src/components/radio/demos/demo1.jsx | 18 + .../src/components/radio/demos/demo2.jsx | 17 + .../src/components/radio/demos/demo3.jsx | 19 + .../src/components/radio/demos/demo4.jsx | 11 + .../src/components/radio/demos/demo5.jsx | 15 + .../src/components/radio/demos/demo6.jsx | 17 + .../src/components/radio/index.css | 157 + .../src/components/radio/index.jsx | 104 + .../src/components/select/demo.jsx | 79 + .../src/components/select/demos/demo1.jsx | 19 + .../src/components/select/demos/demo2.jsx | 20 + .../src/components/select/demos/demo3.jsx | 20 + .../src/components/select/demos/demo4.jsx | 20 + .../src/components/select/demos/demo5.jsx | 20 + .../src/components/select/demos/demo6.jsx | 20 + .../src/components/select/demos/demo7.jsx | 32 + .../src/components/select/demos/demo8.jsx | 22 + .../src/components/select/index.css | 293 + .../src/components/select/index.jsx | 213 + .../library_code/src/components/spin/demo.jsx | 36 + .../src/components/spin/demos/demo1.jsx | 22 + .../src/components/spin/demos/demo2.jsx | 76 + .../src/components/spin/demos/demo3.jsx | 43 + .../src/components/spin/demos/demo4.jsx | 29 + .../src/components/spin/demos/demo5.jsx | 54 + .../src/components/spin/index.css | 211 + .../src/components/spin/index.jsx | 182 + .../src/components/switch/demo.jsx | 26 + .../src/components/switch/demos/demo1.jsx | 53 + .../src/components/switch/demos/demo2.jsx | 28 + .../src/components/switch/demos/demo3.jsx | 33 + .../src/components/switch/demos/demo4.jsx | 23 + .../src/components/switch/index.css | 146 + .../src/components/switch/index.jsx | 112 + .../library_code/src/components/tabs/demo.jsx | 105 + .../src/components/tabs/demos/demo1.jsx | 39 + .../src/components/tabs/demos/demo10.jsx | 43 + .../src/components/tabs/demos/demo11.jsx | 40 + .../src/components/tabs/demos/demo2.jsx | 39 + .../src/components/tabs/demos/demo3.jsx | 35 + .../src/components/tabs/demos/demo4.jsx | 35 + .../src/components/tabs/demos/demo5.jsx | 47 + .../src/components/tabs/demos/demo6.jsx | 48 + .../src/components/tabs/demos/demo7.jsx | 55 + .../src/components/tabs/demos/demo8.jsx | 27 + .../src/components/tabs/demos/demo9.jsx | 80 + .../src/components/tabs/index.css | 381 + .../src/components/tabs/index.jsx | 247 + .../library_code/src/components/tag/demo.jsx | 41 + .../src/components/tag/demos/demo1.jsx | 26 + .../src/components/tag/demos/demo2.jsx | 24 + .../src/components/tag/demos/demo3.jsx | 33 + .../src/components/tag/demos/demo4.jsx | 23 + .../library_code/src/components/tag/index.css | 29 + .../library_code/src/components/tag/index.jsx | 94 + .../src/components/tooltip/demo.jsx | 29 + .../src/components/tooltip/demos/demo1.jsx | 14 + .../src/components/tooltip/demos/demo2.jsx | 31 + .../src/components/tooltip/demos/demo3.jsx | 26 + .../src/components/tooltip/index.css | 112 + .../src/components/tooltip/index.jsx | 93 + .../library_code/src/components/tree/demo.jsx | 58 + .../src/components/tree/demos/demo1.jsx | 71 + .../src/components/tree/demos/demo2.jsx | 85 + .../src/components/tree/demos/demo3.jsx | 125 + .../src/components/tree/demos/demo4.jsx | 48 + .../src/components/tree/demos/demo5.jsx | 37 + .../src/components/tree/index.css | 191 + .../src/components/tree/index.jsx | 102 + .../tree/utils/calculateCustomKeys.js | 124 + .../components/tree/utils/flattendTreeData.js | 35 + .../src/components/tree/utils/getKeyToTree.js | 87 + .../src/components/tree/utils/index.js | 38 + .../tree/utils/initialCustomKeys.js | 150 + .../src/components/tree/virtualList.jsx | 93 + .../inula2-ui2/library_code/src/index.css | 151 + packages/inula2-ui2/library_code/src/index.js | 17 + .../inula2-ui2/library_code/src/index.jsx | 313 + .../library_code/src/notification.js | 2 + packages/inula2-ui2/library_code/src/route.js | 48 + .../inula2-ui2/library_code/vite.config.js | 28 + 216 files changed, 44944 insertions(+) create mode 100644 packages/inula2-ui2/README.en.md create mode 100644 packages/inula2-ui2/README.md create mode 100644 packages/inula2-ui2/inulaUI/.dumirc.ts create mode 100644 packages/inula2-ui2/inulaUI/.editorconfig create mode 100644 packages/inula2-ui2/inulaUI/.eslintrc.js create mode 100644 packages/inula2-ui2/inulaUI/.fatherrc.ts create mode 100644 packages/inula2-ui2/inulaUI/.gitignore create mode 100644 packages/inula2-ui2/inulaUI/.prettierignore create mode 100644 packages/inula2-ui2/inulaUI/.prettierrc.js create mode 100644 packages/inula2-ui2/inulaUI/.stylelintrc create mode 100644 packages/inula2-ui2/inulaUI/LICENSE create mode 100644 packages/inula2-ui2/inulaUI/README.md create mode 100644 packages/inula2-ui2/inulaUI/docs/guide.md create mode 100644 packages/inula2-ui2/inulaUI/docs/index.md create mode 100644 packages/inula2-ui2/inulaUI/package.json create mode 100644 packages/inula2-ui2/inulaUI/pnpm-lock.yaml create mode 100644 packages/inula2-ui2/inulaUI/src/button/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/card/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/checkbox/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/datepicker/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/dialog/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/enum.ts create mode 100644 packages/inula2-ui2/inulaUI/src/form/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/global.d.ts create mode 100644 packages/inula2-ui2/inulaUI/src/icon/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/index.ts create mode 100644 packages/inula2-ui2/inulaUI/src/input/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/notification/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/radio/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/select/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/spin/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/switch/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/tabs/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/tag/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/tooltip/index.md create mode 100644 packages/inula2-ui2/inulaUI/src/tree/index.md create mode 100644 packages/inula2-ui2/inulaUI/tsconfig.json create mode 100644 packages/inula2-ui2/library_code/.gitignore create mode 100644 packages/inula2-ui2/library_code/index.html create mode 100644 packages/inula2-ui2/library_code/package.json create mode 100644 packages/inula2-ui2/library_code/src/colors.css create mode 100644 packages/inula2-ui2/library_code/src/components/Notification/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/Notification/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/Notification/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/Notification/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/Notification/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/Notification/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/Notification/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/Notification/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/button/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/button/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/button/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/button/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/button/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/button/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/button/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/button/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/button/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/card/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/card/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/card/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/card/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/card/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/card/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/card/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/card/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/checkbox/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/checkbox/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/checkbox/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/checkbox/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/checkbox/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/checkbox/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo7.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo8.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/utils/calculateFunc.js create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/utils/formatFunc.js create mode 100644 packages/inula2-ui2/library_code/src/components/datepicker2/utils/index.js create mode 100644 packages/inula2-ui2/library_code/src/components/form/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/form/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/form/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/form/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/form/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/form/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/form/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/form/demos/demo7.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/form/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/form/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/icon/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/icon/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/icon/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/icon/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/icon/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/icon/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/icon/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/icon/demos/iconlist.ts create mode 100644 packages/inula2-ui2/library_code/src/components/icon/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/icon/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo7.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo8.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/demos/demo9.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/input/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/input/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/demos/demo7.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/modal/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/modal/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/radio/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/radio/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/radio/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/radio/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/radio/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/radio/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/radio/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/radio/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/radio/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demos/demo7.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/demos/demo8.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/select/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/select/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/spin/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/spin/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/spin/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/spin/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/spin/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/spin/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/spin/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/spin/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/switch/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/switch/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/switch/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/switch/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/switch/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/switch/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/switch/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo10.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo11.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo6.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo7.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo8.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/demos/demo9.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/tabs/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tag/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tag/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tag/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tag/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tag/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tag/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/tag/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tooltip/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tooltip/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tooltip/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tooltip/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tooltip/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/tooltip/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tree/demo.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tree/demos/demo1.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tree/demos/demo2.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tree/demos/demo3.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tree/demos/demo4.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tree/demos/demo5.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tree/index.css create mode 100644 packages/inula2-ui2/library_code/src/components/tree/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/components/tree/utils/calculateCustomKeys.js create mode 100644 packages/inula2-ui2/library_code/src/components/tree/utils/flattendTreeData.js create mode 100644 packages/inula2-ui2/library_code/src/components/tree/utils/getKeyToTree.js create mode 100644 packages/inula2-ui2/library_code/src/components/tree/utils/index.js create mode 100644 packages/inula2-ui2/library_code/src/components/tree/utils/initialCustomKeys.js create mode 100644 packages/inula2-ui2/library_code/src/components/tree/virtualList.jsx create mode 100644 packages/inula2-ui2/library_code/src/index.css create mode 100644 packages/inula2-ui2/library_code/src/index.js create mode 100644 packages/inula2-ui2/library_code/src/index.jsx create mode 100644 packages/inula2-ui2/library_code/src/notification.js create mode 100644 packages/inula2-ui2/library_code/src/route.js create mode 100644 packages/inula2-ui2/library_code/vite.config.js diff --git a/packages/inula2-ui2/README.en.md b/packages/inula2-ui2/README.en.md new file mode 100644 index 00000000..6352abc7 --- /dev/null +++ b/packages/inula2-ui2/README.en.md @@ -0,0 +1,36 @@ +# inula2-ui + +#### Description +基于openInula2.0的UI组件库 + +#### Software Architecture +Software architecture description + +#### Installation + +1. xxxx +2. xxxx +3. xxxx + +#### Instructions + +1. xxxx +2. xxxx +3. xxxx + +#### Contribution + +1. Fork the repository +2. Create Feat_xxx branch +3. Commit your code +4. Create Pull Request + + +#### Gitee Feature + +1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md +2. Gitee blog [blog.gitee.com](https://blog.gitee.com) +3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) +4. The most valuable open source project [GVP](https://gitee.com/gvp) +5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) +6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/packages/inula2-ui2/README.md b/packages/inula2-ui2/README.md new file mode 100644 index 00000000..41bf3f56 --- /dev/null +++ b/packages/inula2-ui2/README.md @@ -0,0 +1,65 @@ +# openinula2.0 组件库 + +[![NPM version](https://img.shields.io/npm/v/inulaUI.svg?style=flat)](https://npmjs.org/package/inulaUI) +[![NPM downloads](http://img.shields.io/npm/dm/inulaUI.svg?style=flat)](https://npmjs.org/package/inulaUI) + +## 项目简介 +openinula2.0 组件库是基于 [openinula](https://github.com/openinula/openinula) 的现代化 React UI 组件库,包含丰富的基础组件,适用于企业级中后台和移动端应用开发。组件库采用现代化设计风格,支持亮暗主题切换,具备良好的可扩展性和易用性。 + +## 开发说明 +进入library目录 +```bash +npm install +npm run dev +``` +组件统一小写并放在components目录下,目录结构为(以Button组件为例): + +``` +button/ +├── demos/ # 按钮示例(不同功能的放不同文件) +├── demo.jsx # 按钮示例整体文件 +├── index.jsx # 按钮组件 +└── index.css # 按钮样式 +``` + + +## 目录结构 + +``` +openInula2.0_Library/ +├── inulaUI/ # 组件库主包 +│ ├── docs/ # 文档与指南 +│ ├── src/ # 组件源码 +│ │ ├── button/ # 按钮组件 +│ │ │ ├── demos/ # 按钮组件演示 +│ │ │ ├── index.jsx # 按钮组件实现 +│ │ │ ├── index.md # 按钮组件文档 +│ │ │ └── index.css # 按钮样式 +│ │ ├── index.ts # 入口文件 +│ │ └── global.d.ts # 全局类型声明 +│ ├── package.json # 组件库包配置 +│ └── ... +├── library_code/ # 组件库演示/测试项目 +│ ├── src/ +│ │ ├── components/ +│ │ │ └── button/ +│ │ │ ├── demos/ # 按钮演示 +│ │ │ ├── demo.jsx +│ │ │ ├── index.jsx +│ │ │ └── index.css +│ │ ├── index.jsx # 入口 +│ │ └── index.css +│ ├── index.html +│ └── ... +└── README.md # 项目说明文档 +``` + +## 贡献指南 +1. Fork 本仓库并创建分支。 +2. 提交代码前请确保通过 lint 检查和单元测试。 +3. 提交 PR 时请详细描述变更内容。 +4. 欢迎补充文档、修复 bug 或新增组件。 + + +## License +MIT diff --git a/packages/inula2-ui2/inulaUI/.dumirc.ts b/packages/inula2-ui2/inulaUI/.dumirc.ts new file mode 100644 index 00000000..4b90f0a1 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/.dumirc.ts @@ -0,0 +1,71 @@ +import { defineConfig } from 'dumi'; +export default defineConfig({ + outputPath: 'docs-dist', + themeConfig: ({ + name: 'InulaUI', + nav: [ + { + title: '指南', + link: '/guide', + }, + { + title: '组件', + link: '/components/button', + }, + { + title: '更新日志', + link: '/changelog', + }, + { + title: '贡献指南', + link: '/contributing', + }, + ], + sidebar: { + '/components': [ + { + title: '通用', + children: [ + { title: 'Button 按钮', link: '/components/button' }, + { title: 'Icon 图标', link: '/components/icon' }, + ], + }, + { + title: '导航', + children: [ + { title: 'Tabs 标签页', link: '/components/tabs' }, + ], + }, + { + title: '数据录入', + children: [ + { title: 'Checkbox 多选框', link: '/components/checkbox' }, + { title: 'DataPicker 日期选择器', link: '/components/datapicker' }, + { title: 'Form 表单', link: '/components/form' }, + { title: 'Input 输入框', link: '/components/input' }, + { title: 'Radio 单选框', link: '/components/radio' }, + { title: 'Select 选择器', link: '/components/select' }, + { title: 'Switch 开关', link: '/components/switch' }, + ], + }, + { + title: '数据展示', + children: [ + { title: 'Card 卡片', link: '/components/card' }, + { title: 'Tooltip 文字提示', link: '/components/tooltip' }, + { title: 'Tag 标签', link: '/components/tag' }, + { title: 'Tree 树形控件', link: '/components/tree' }, + ], + }, + { + title: '反馈', + children: [ + { title: 'Modal 对话框', link: '/components/dialog' }, + { title: 'Spin 加载中', link: '/components/spin' }, + { title: 'Notification 通知提示框', link: '/components/notification' }, + ], + }, + ], + }, + }), +}); diff --git a/packages/inula2-ui2/inulaUI/.editorconfig b/packages/inula2-ui2/inulaUI/.editorconfig new file mode 100644 index 00000000..e717f5eb --- /dev/null +++ b/packages/inula2-ui2/inulaUI/.editorconfig @@ -0,0 +1,13 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/inula2-ui2/inulaUI/.eslintrc.js b/packages/inula2-ui2/inulaUI/.eslintrc.js new file mode 100644 index 00000000..28983409 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: require.resolve('@umijs/lint/dist/config/eslint'), +}; diff --git a/packages/inula2-ui2/inulaUI/.fatherrc.ts b/packages/inula2-ui2/inulaUI/.fatherrc.ts new file mode 100644 index 00000000..dae25c88 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/.fatherrc.ts @@ -0,0 +1,6 @@ +import { defineConfig } from 'father'; + +export default defineConfig({ + // more father config: https://github.com/umijs/father/blob/master/docs/config.md + esm: { output: 'dist' }, +}); diff --git a/packages/inula2-ui2/inulaUI/.gitignore b/packages/inula2-ui2/inulaUI/.gitignore new file mode 100644 index 00000000..cf89318d --- /dev/null +++ b/packages/inula2-ui2/inulaUI/.gitignore @@ -0,0 +1,6 @@ +node_modules +/dist +.dumi/tmp +.dumi/tmp-test +.dumi/tmp-production +.DS_Store diff --git a/packages/inula2-ui2/inulaUI/.prettierignore b/packages/inula2-ui2/inulaUI/.prettierignore new file mode 100644 index 00000000..6a50e206 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/.prettierignore @@ -0,0 +1,2 @@ +/dist +*.yaml diff --git a/packages/inula2-ui2/inulaUI/.prettierrc.js b/packages/inula2-ui2/inulaUI/.prettierrc.js new file mode 100644 index 00000000..e6df093d --- /dev/null +++ b/packages/inula2-ui2/inulaUI/.prettierrc.js @@ -0,0 +1,19 @@ +module.exports = { + pluginSearchDirs: false, + plugins: [ + require.resolve('prettier-plugin-organize-imports'), + require.resolve('prettier-plugin-packagejson'), + ], + printWidth: 80, + proseWrap: 'never', + singleQuote: true, + trailingComma: 'all', + overrides: [ + { + files: '*.md', + options: { + proseWrap: 'preserve', + }, + }, + ], +}; diff --git a/packages/inula2-ui2/inulaUI/.stylelintrc b/packages/inula2-ui2/inulaUI/.stylelintrc new file mode 100644 index 00000000..e3621944 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/.stylelintrc @@ -0,0 +1,3 @@ +{ + "extends": "@umijs/lint/dist/config/stylelint" +} diff --git a/packages/inula2-ui2/inulaUI/LICENSE b/packages/inula2-ui2/inulaUI/LICENSE new file mode 100644 index 00000000..7dd6caf4 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) chenhaibin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/inula2-ui2/inulaUI/README.md b/packages/inula2-ui2/inulaUI/README.md new file mode 100644 index 00000000..e9cbbfee --- /dev/null +++ b/packages/inula2-ui2/inulaUI/README.md @@ -0,0 +1,43 @@ +# inulaUI + +[![NPM version](https://img.shields.io/npm/v/inulaUI.svg?style=flat)](https://npmjs.org/package/inulaUI) +[![NPM downloads](http://img.shields.io/npm/dm/inulaUI.svg?style=flat)](https://npmjs.org/package/inulaUI) + +A react library developed with dumi + +## Usage + +TODO + +## Options + +TODO + +## Development + +```bash +# install dependencies +$ npm install + +# develop library by docs demo +$ npm start + +# build library source code +$ npm run build + +# build library source code in watch mode +$ npm run build:watch + +# build docs +$ npm run docs:build + +# Locally preview the production build. +$ npm run docs:preview + +# check your project for potential problems +$ npm run doctor +``` + +## LICENSE + +MIT diff --git a/packages/inula2-ui2/inulaUI/docs/guide.md b/packages/inula2-ui2/inulaUI/docs/guide.md new file mode 100644 index 00000000..5504ddf6 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/docs/guide.md @@ -0,0 +1 @@ +This is a guide example. diff --git a/packages/inula2-ui2/inulaUI/docs/index.md b/packages/inula2-ui2/inulaUI/docs/index.md new file mode 100644 index 00000000..dd7b0e17 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/docs/index.md @@ -0,0 +1,49 @@ +--- +hero: + title: inula-UI + description: 一个基于 openinula 的 UI 组件库 + actions: + - text: 立即上手 + link: /guide/quick-start + - text: Github + link: https://github.com/cychenhaibin/cube +features: + - title: 现代化主题风格 + image: 💠 + description: 本主题包采用了流动色、毛玻璃、光影质感、自然动效等现代化的设计表现手法,将界面以更加简约、美观的方式呈现,使得文档更加直观、易读、易用 + row: 6 + + - title: 基于 Ant Design 与 CSSinJS + description: 本主题包使用 antd 作为基础组件库,并使用了 CSSinJS 实现样式方案,帮助更好地控制样式的细节,提高样式的复用性和可维护性。底层使用了 antd-style 样式库,在书写样式上更加灵活、可读、易于维护。本主题包算是开发 antd-style 时的一个副产物 + link: /guide/style + imageType: light + image: https://gw.alipayobjects.com/zos/hitu-asset/c88e3678-6900-4289-8538-31367c2d30f2/hitu-1609235995955-image.png + row: 9 + + - title: 亮暗色主题模式一键切换 + link: /guide/theme + description: 本文档基于 antd v5 自定义了亮色与暗色主题算法,默认提供美观易用的亮暗色主题。用户可以根据自己的喜好选择主题模式,在不同的光线环境下都能获得良好的阅读体验。 + image: https://mdn.alipayobjects.com/huamei_rqvucu/afts/img/A*8KE7T7l39J0AAAAAAAAAAAAADoN6AQ/original + imageType: primary + + - title: 精美的语法高亮 + description: 本主题包提供准确、精美的语法高亮特性。底层采用了现代化的语法高亮库 Shiki 与 Prism,并提供了丰富的代码高亮方案,帮助用户更好地阅读代码 后续会考虑支持代码块片段高亮、关键词高亮等特性 + link: /guide/syntax-highlighter + image: https://mdn.alipayobjects.com/huamei_rqvucu/afts/img/A*1qLNRrRGFsQAAAAAAAAAAAAADoN6AQ/original + imageType: primary + row: 9 + + - title: 组件灵活复用 + description: 本主题包为本地主题定制提供了很高的灵活度,默认导出了主题包中的精品组件,可以将组件作为独立的模块进行复用,开发者可以在 dumi 本地主题包中自由组合使用 + image: https://mdn.alipayobjects.com/huamei_rqvucu/afts/img/A*6sjjRa7lLhAAAAAAAAAAAAAADoN6AQ/original + imageType: primary + link: /components + row: 8 + + - title: 移动端适配良好 + description: 本主题包对移动端适配良好,基于 CSSinJS 的灵活样式方案,多套布局实现轻而易举。用户多端操作体验一致且顺滑 + image: 📱 + imageType: light + row: 6 + hero: true +--- diff --git a/packages/inula2-ui2/inulaUI/package.json b/packages/inula2-ui2/inulaUI/package.json new file mode 100644 index 00000000..faa1b457 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/package.json @@ -0,0 +1,73 @@ +{ + "name": "inulaUI", + "version": "0.0.1", + "description": "A react library developed with dumi", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "start": "npm run dev", + "dev": "dumi dev", + "build": "father build", + "build:watch": "father dev", + "docs:build": "dumi build", + "docs:preview": "dumi preview", + "prepare": "dumi setup", + "doctor": "father doctor", + "lint": "npm run lint:es && npm run lint:css", + "lint:css": "stylelint \"{src,test}/**/*.{css,less}\"", + "lint:es": "eslint \"{src,test}/**/*.{js,jsx,ts,tsx}\"", + "prepublishOnly": "father doctor && npm run build" + }, + "authors": [ + "chenhaibin" + ], + "license": "MIT", + "files": [ + "dist" + ], + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "lint-staged": { + "*.{md,json}": [ + "prettier --write --no-error-on-unmatched-pattern" + ], + "*.{css,less}": [ + "stylelint --fix", + "prettier --write" + ], + "*.{js,jsx}": [ + "eslint --fix", + "prettier --write" + ], + "*.{ts,tsx}": [ + "eslint --fix", + "prettier --parser=typescript --write" + ] + }, + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@commitlint/cli": "^17.1.2", + "@commitlint/config-conventional": "^17.1.0", + "@openinula/unplugin": "^0.0.3", + "@umijs/lint": "^4.0.0", + "dumi": "^2.4.13", + "eslint": "^8.23.0", + "father": "^4.1.0", + "husky": "^8.0.1", + "lint-staged": "^13.0.3", + "prettier": "^2.7.1", + "prettier-plugin-organize-imports": "^3.0.0", + "prettier-plugin-packagejson": "^2.2.18", + "stylelint": "^14.9.1" + }, + "dependencies": { + "@openinula/next": "^0.0.5", + "inula-ui": "^0.0.7", + "pnpm": "^10.12.4" + } +} diff --git a/packages/inula2-ui2/inulaUI/pnpm-lock.yaml b/packages/inula2-ui2/inulaUI/pnpm-lock.yaml new file mode 100644 index 00000000..a4a93971 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/pnpm-lock.yaml @@ -0,0 +1,16297 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + pnpm: + specifier: ^10.12.4 + version: 10.12.4 + devDependencies: + '@commitlint/cli': + specifier: ^17.1.2 + version: 17.8.1(@swc/core@1.9.2(@swc/helpers@0.5.1)) + '@commitlint/config-conventional': + specifier: ^17.1.0 + version: 17.8.1 + '@types/react': + specifier: ^18.0.0 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.0.0 + version: 18.3.7(@types/react@18.3.23) + '@umijs/lint': + specifier: ^4.0.0 + version: 4.4.11(eslint@8.57.1)(stylelint@14.16.1)(typescript@5.4.2) + dumi: + specifier: ^2.4.13 + version: 2.4.21(@babel/core@7.27.7)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@18.3.23)(eslint@8.57.1)(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + dumi-theme-antd: + specifier: ^0.4.4 + version: 0.4.4(@babel/core@7.27.7)(@types/react@18.3.23)(antd@5.26.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(dumi@2.4.21(@babel/core@7.27.7)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@18.3.23)(eslint@8.57.1)(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + eslint: + specifier: ^8.23.0 + version: 8.57.1 + father: + specifier: ^4.1.0 + version: 4.5.6(@babel/core@7.27.7)(@types/node@20.5.1)(styled-components@5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(type-fest@1.4.0)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + husky: + specifier: ^8.0.1 + version: 8.0.3 + lint-staged: + specifier: ^13.0.3 + version: 13.3.0 + prettier: + specifier: ^2.7.1 + version: 2.8.8 + prettier-plugin-organize-imports: + specifier: ^3.0.0 + version: 3.2.4(prettier@2.8.8)(typescript@5.4.2) + prettier-plugin-packagejson: + specifier: ^2.2.18 + version: 2.5.17(prettier@2.8.8) + react: + specifier: ^18.0.0 + version: 18.3.1 + react-dom: + specifier: ^18.0.0 + version: 18.3.1(react@18.3.1) + stylelint: + specifier: ^14.9.1 + version: 14.16.1 + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@ant-design/colors@6.0.0': + resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} + + '@ant-design/colors@7.2.1': + resolution: {integrity: sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==} + + '@ant-design/cssinjs-utils@1.1.3': + resolution: {integrity: sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@ant-design/cssinjs@1.20.0': + resolution: {integrity: sha512-uG3iWzJxgNkADdZmc6W0Ci3iQAUOvLMcM8SnnmWq3r6JeocACft4ChnY/YWvI2Y+rG/68QBla/O+udke1yH3vg==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/cssinjs@1.23.0': + resolution: {integrity: sha512-7GAg9bD/iC9ikWatU9ym+P9ugJhi/WbsTWzcKN6T4gU0aehsprtke1UAaaSxxkjjmkJb3llet/rbUSLPgwlY4w==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/fast-color@2.0.6': + resolution: {integrity: sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==} + engines: {node: '>=8.x'} + + '@ant-design/icons-svg@4.4.2': + resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} + + '@ant-design/icons@4.8.3': + resolution: {integrity: sha512-HGlIQZzrEbAhpJR6+IGdzfbPym94Owr6JZkJ2QCCnOkPVIWMO2xgIVcOKnl8YcpijIo39V7l2qQL5fmtw56cMw==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/icons@5.3.6': + resolution: {integrity: sha512-JeWsgNjvkTTC73YDPgWOgdScRku/iHN9JU0qk39OSEmJSCiRghQMLlxGTCY5ovbRRoXjxHXnUKgQEgBDnQfKmA==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/icons@5.6.1': + resolution: {integrity: sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/react-slick@1.1.2': + resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==} + peerDependencies: + react: '>=16.9.0' + + '@antfu/install-pkg@0.1.1': + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@arvinxu/layout-kit@1.4.0': + resolution: {integrity: sha512-dEsmFwZa/NJ2XvDBL4sCPbgFPvCvpxP+G+90Ay9zqN92vc4YbgVo4NjpjsDihiNqwDQjWhasGCC3+v4w7bdYqg==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.7': + resolution: {integrity: sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.23.6': + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.7': + resolution: {integrity: sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.23.3': + resolution: {integrity: sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + + '@babel/generator@7.2.0': + resolution: {integrity: sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==} + + '@babel/generator@7.27.5': + resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.27.1': + resolution: {integrity: sha512-OU4zVQrJgFBNXMjrHs1yFSdlTgufO4tefcUZoqNhukVfw0p8x1Asht/gcGZ3bpHbi8gu/76m4JhrlKPqkrs/WQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.6': + resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.7': + resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.23.3': + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.22.3': + resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.23.6': + resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.27.6': + resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.7': + resolution: {integrity: sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.7': + resolution: {integrity: sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==} + engines: {node: '>=6.9.0'} + + '@bloomberg/record-tuple-polyfill@0.0.4': + resolution: {integrity: sha512-h0OYmPR3A5Dfbetra/GzxBAzQk8sH7LhRkRUTdagX6nrtlUgJGYCTv4bBK33jsTQw9HDd8PE2x1Ma+iRKEDUsw==} + + '@commitlint/cli@17.8.1': + resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==} + engines: {node: '>=v14'} + hasBin: true + + '@commitlint/config-conventional@17.8.1': + resolution: {integrity: sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==} + engines: {node: '>=v14'} + + '@commitlint/config-validator@17.8.1': + resolution: {integrity: sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==} + engines: {node: '>=v14'} + + '@commitlint/ensure@17.8.1': + resolution: {integrity: sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==} + engines: {node: '>=v14'} + + '@commitlint/execute-rule@17.8.1': + resolution: {integrity: sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==} + engines: {node: '>=v14'} + + '@commitlint/format@17.8.1': + resolution: {integrity: sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==} + engines: {node: '>=v14'} + + '@commitlint/is-ignored@17.8.1': + resolution: {integrity: sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==} + engines: {node: '>=v14'} + + '@commitlint/lint@17.8.1': + resolution: {integrity: sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==} + engines: {node: '>=v14'} + + '@commitlint/load@17.8.1': + resolution: {integrity: sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==} + engines: {node: '>=v14'} + + '@commitlint/message@17.8.1': + resolution: {integrity: sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==} + engines: {node: '>=v14'} + + '@commitlint/parse@17.8.1': + resolution: {integrity: sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==} + engines: {node: '>=v14'} + + '@commitlint/read@17.8.1': + resolution: {integrity: sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==} + engines: {node: '>=v14'} + + '@commitlint/resolve-extends@17.8.1': + resolution: {integrity: sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==} + engines: {node: '>=v14'} + + '@commitlint/rules@17.8.1': + resolution: {integrity: sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==} + engines: {node: '>=v14'} + + '@commitlint/to-lines@17.8.1': + resolution: {integrity: sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==} + engines: {node: '>=v14'} + + '@commitlint/top-level@17.8.1': + resolution: {integrity: sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==} + engines: {node: '>=v14'} + + '@commitlint/types@17.8.1': + resolution: {integrity: sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==} + engines: {node: '>=v14'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@csstools/postcss-color-function@1.1.1': + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-font-format-keywords@1.0.1': + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-hwb-function@1.0.2': + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-ic-unit@1.0.1': + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-is-pseudo-class@2.0.7': + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-normalize-display-values@1.0.1': + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-oklab-function@1.1.1': + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-progressive-custom-properties@1.3.0': + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + '@csstools/postcss-stepped-value-functions@1.0.1': + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/postcss-unset-value@1.0.2': + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + '@csstools/selector-specificity@2.2.0': + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.10 + + '@ctrl/tinycolor@3.6.0': + resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==} + engines: {node: '>=10'} + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/css@11.11.2': + resolution: {integrity: sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew==} + + '@emotion/hash@0.8.0': + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.3.1': + resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.11.0': + resolution: {integrity: sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/server@11.11.0': + resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} + peerDependencies: + '@emotion/css': ^11.0.0-rc.0 + peerDependenciesMeta: + '@emotion/css': + optional: true + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/stylis@0.8.5': + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/unitless@0.7.5': + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild-kit/cjs-loader@2.4.4': + resolution: {integrity: sha512-NfsJX4PdzhwSkfJukczyUiZGc7zNNWZcEAyqeISpDnn0PTfzMJR1aR8xAIPskBejIxBJbIgCCMzbaYa9SXepIg==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/core-utils@3.3.2': + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/esm-loader@2.6.5': + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild/aix-ppc64@0.21.4': + resolution: {integrity: sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.4': + resolution: {integrity: sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.4': + resolution: {integrity: sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.4': + resolution: {integrity: sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.4': + resolution: {integrity: sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.4': + resolution: {integrity: sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.4': + resolution: {integrity: sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.4': + resolution: {integrity: sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.4': + resolution: {integrity: sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.4': + resolution: {integrity: sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.4': + resolution: {integrity: sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.4': + resolution: {integrity: sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.4': + resolution: {integrity: sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.4': + resolution: {integrity: sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.4': + resolution: {integrity: sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.4': + resolution: {integrity: sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.4': + resolution: {integrity: sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.4': + resolution: {integrity: sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.4': + resolution: {integrity: sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.4': + resolution: {integrity: sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.4': + resolution: {integrity: sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.4': + resolution: {integrity: sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.4': + resolution: {integrity: sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@floating-ui/core@0.6.2': + resolution: {integrity: sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==} + + '@floating-ui/dom@0.4.5': + resolution: {integrity: sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==} + + '@floating-ui/react-dom-interactions@0.3.1': + resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==} + deprecated: Package renamed to @floating-ui/react + + '@floating-ui/react-dom@0.6.3': + resolution: {integrity: sha512-hC+pS5D6AgS2wWjbmSQ6UR6Kpy+drvWGJIri6e1EDGADTPsCaa4KzCgmCczHrQeInx9tqs81EyDmbKJYY2swKg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@formatjs/ecma402-abstract@2.3.4': + resolution: {integrity: sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==} + + '@formatjs/fast-memoize@2.2.7': + resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} + + '@formatjs/icu-messageformat-parser@2.11.2': + resolution: {integrity: sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==} + + '@formatjs/icu-skeleton-parser@1.8.14': + resolution: {integrity: sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==} + + '@formatjs/intl-localematcher@0.6.1': + resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} + + '@formatjs/intl@3.1.6': + resolution: {integrity: sha512-tDkXnA4qpIFcDWac8CyVJq6oW8DR7W44QDUBsfXWIIJD/FYYen0QoH46W7XsVMFfPOVKkvbufjboZrrWbEfmww==} + peerDependencies: + typescript: ^5.6.0 + peerDependenciesMeta: + typescript: + optional: true + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.1.1': + resolution: {integrity: sha512-H8xz74JDzDw8f0qLxwIaxFMnFkbXTZNWEufOk3WxaLFHV4h0A2FjIDgNk5LzC0am4jssnjdeJJdRs3UFu3582Q==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@24.9.0': + resolution: {integrity: sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==} + engines: {node: '>= 6'} + + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.10': + resolution: {integrity: sha512-HM2F4B9N4cA0RH2KQiIZOHAZqtP4xGS4IZ+SFe1SIbO4dyjf9MTY2Bo3vHYnm0hglWfXqBrzUBSa+cJfl3Xvrg==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.8': + resolution: {integrity: sha512-3EDAPd0B8X1gsQQgGHU8vyxSp2MB414z3roN67fY7nI0GV3GDthHfaWcbCfrC95tpAzA5xUvAuoO9Dxx/ywwRQ==} + + '@jridgewell/sourcemap-codec@1.5.2': + resolution: {integrity: sha512-gKYheCylLIedI+CSZoDtGkFV9YEBxRRVcfCH7OfAqh4TyUyRjEE6WVE/aXDXX0p8BIe/QgLcaAoI0220KRRFgg==} + + '@jridgewell/trace-mapping@0.3.27': + resolution: {integrity: sha512-VO95AxtSFMelbg3ouljAYnfvTEwSWVt/2YLf+U5Ejd8iT5mXE2Sa/1LGyvySMne2CGsepGLI7KpF3EzE3Aq9Mg==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@loadable/component@5.15.2': + resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.3.0' + + '@makotot/ghostui@2.0.0': + resolution: {integrity: sha512-LD6OeMv+yGjpYZNjh34yDTCIE1NegqOtJq5gm4wX6op3QL7K5psTVzMjkWzseBoYj0XOD4g+UJVIZTprfoOPGg==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + + '@microsoft/api-extractor-model@7.28.17': + resolution: {integrity: sha512-b2AfLP33oEVtWLeNavSBRdyDa8sKlXjN4pdhBnC4HLontOtjILhL1ERAmZObF4PWSyChnnC2vjb47C9WKCFRGg==} + + '@microsoft/api-extractor@7.43.7': + resolution: {integrity: sha512-t5M8BdnS+TmroUA/Z9HJXExS9iL4pK9I3yGu9PsXVTXPmcVXlBlA1CVI7TjRa1jwm+vusG/+sbX1/t5UkJhQMg==} + hasBin: true + + '@microsoft/tsdoc-config@0.16.2': + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + + '@microsoft/tsdoc@0.14.2': + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + + '@module-federation/error-codes@0.8.12': + resolution: {integrity: sha512-K+F4iiV62KY+IpjK6ggn3vI5Yt/T/LUb6xuazY78bhAGwLaHe1DYr7BfSutKMpiB+Dcs6U4dYOBogSMnnl0j4Q==} + + '@module-federation/runtime-core@0.6.20': + resolution: {integrity: sha512-rX7sd/i7tpkAbfMD4TtFt/57SWNC/iv7UYS8g+ad7mnCJggWE1YEKsKSFgcvp4zU3thwR+j2y+kOCwd1sQvxEA==} + + '@module-federation/runtime@0.8.12': + resolution: {integrity: sha512-eYohRfambj/qzxz6tEakDn459ROcixWO4zL5gmTEOmwG+jCDnxGR14j1guopyrrpjb6EKFNrPVWtYZTPPfGdQQ==} + + '@module-federation/sdk@0.8.12': + resolution: {integrity: sha512-zFgXYBHbzwIqlrLfn6ewIRXDZCctDDQT2nFhbsZr29yWQgpmW1fm2kJCxQsG0DENGGN1KpzfDoxjjvSKJS/ZHA==} + + '@module-federation/webpack-bundler-runtime@0.8.12': + resolution: {integrity: sha512-zd343RO7/R7Xjh5ym5KdnYQ70z4LBmMxWsa44FS0nyNv04sOq6V1eZSCGKbEhbfqqhbS5Wfj8OzJyedeVvV/OQ==} + + '@napi-rs/nice-android-arm-eabi@1.0.1': + resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/nice-android-arm64@1.0.1': + resolution: {integrity: sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/nice-darwin-arm64@1.0.1': + resolution: {integrity: sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/nice-darwin-x64@1.0.1': + resolution: {integrity: sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/nice-freebsd-x64@1.0.1': + resolution: {integrity: sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@napi-rs/nice-linux-arm-gnueabihf@1.0.1': + resolution: {integrity: sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/nice-linux-arm64-gnu@1.0.1': + resolution: {integrity: sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/nice-linux-arm64-musl@1.0.1': + resolution: {integrity: sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/nice-linux-ppc64-gnu@1.0.1': + resolution: {integrity: sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==} + engines: {node: '>= 10'} + cpu: [ppc64] + os: [linux] + + '@napi-rs/nice-linux-riscv64-gnu@1.0.1': + resolution: {integrity: sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@napi-rs/nice-linux-s390x-gnu@1.0.1': + resolution: {integrity: sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==} + engines: {node: '>= 10'} + cpu: [s390x] + os: [linux] + + '@napi-rs/nice-linux-x64-gnu@1.0.1': + resolution: {integrity: sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/nice-linux-x64-musl@1.0.1': + resolution: {integrity: sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/nice-win32-arm64-msvc@1.0.1': + resolution: {integrity: sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/nice-win32-ia32-msvc@1.0.1': + resolution: {integrity: sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/nice-win32-x64-msvc@1.0.1': + resolution: {integrity: sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/nice@1.0.1': + resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} + engines: {node: '>= 10'} + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.2.7': + resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@pkgr/utils@2.4.2': + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@rc-component/async-validator@5.0.4': + resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==} + engines: {node: '>=14.x'} + + '@rc-component/color-picker@2.0.1': + resolution: {integrity: sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/context@1.4.0': + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/mini-decimal@1.1.0': + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} + engines: {node: '>=8.x'} + + '@rc-component/mutate-observer@1.1.0': + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/portal@1.1.2': + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/qrcode@1.0.0': + resolution: {integrity: sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/tour@1.15.1': + resolution: {integrity: sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/trigger@1.18.3': + resolution: {integrity: sha512-Ksr25pXreYe1gX6ayZ1jLrOrl9OAUHUqnuhEx6MeHnNa1zVM5Y2Aj3Q35UrER0ns8D2cJYtmJtVli+i+4eKrvA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/trigger@2.2.7': + resolution: {integrity: sha512-Qggj4Z0AA2i5dJhzlfFSmg1Qrziu8dsdHOihROL5Kl18seO2Eh/ZaTYt2c8a/CyGaTChnFry7BEYew1+/fhSbA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@reactflow/background@11.3.14': + resolution: {integrity: sha512-Gewd7blEVT5Lh6jqrvOgd4G6Qk17eGKQfsDXgyRSqM+CTwDqRldG2LsWN4sNeno6sbqVIC2fZ+rAUBFA9ZEUDA==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/controls@11.2.14': + resolution: {integrity: sha512-MiJp5VldFD7FrqaBNIrQ85dxChrG6ivuZ+dcFhPQUwOK3HfYgX2RHdBua+gx+40p5Vw5It3dVNp/my4Z3jF0dw==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/core@11.11.4': + resolution: {integrity: sha512-H4vODklsjAq3AMq6Np4LE12i1I4Ta9PrDHuBR9GmL8uzTt2l2jh4CiQbEMpvMDcp7xi4be0hgXj+Ysodde/i7Q==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/minimap@11.7.14': + resolution: {integrity: sha512-mpwLKKrEAofgFJdkhwR5UQ1JYWlcAAL/ZU/bctBkuNTT1yqV+y0buoNVImsRehVYhJwffSWeSHaBR5/GJjlCSQ==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/node-resizer@2.2.14': + resolution: {integrity: sha512-fwqnks83jUlYr6OHcdFEedumWKChTHRGw/kbCxj0oqBd+ekfs+SIp4ddyNU0pdx96JIm5iNFS0oNrmEiJbbSaA==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@reactflow/node-toolbar@1.3.14': + resolution: {integrity: sha512-rbynXQnH/xFNu4P9H+hVqlEUafDCkEoCy0Dg9mG22Sg+rY/0ck6KkrAQrYrTgXusd+cEJOMK0uOOFCK2/5rSGQ==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@rushstack/node-core-library@4.3.0': + resolution: {integrity: sha512-JuNZ7lwaYQ4R1TugpryyWBn4lIxK+L7fF+muibFp0by5WklG22nsvH868fuBoZMLo5FqAs6WFOifNos4PJjWSA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/rig-package@0.5.2': + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} + + '@rushstack/terminal@0.11.0': + resolution: {integrity: sha512-LKz7pv0G9Py5uULahNSixK1pTqIIKd103pAGhDW51YfzPojvmO5wfITe0PEUNAJZjuufN/KgeRW83dJo1gL2rQ==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@4.21.0': + resolution: {integrity: sha512-z38FLUCn8M9FQf19gJ9eltdwkvc47PxvJmVZS6aKwbBAa3Pis3r3A+ZcBCVPNb9h/Tbga+i0tHdzoSGUoji9GQ==} + + '@selderee/plugin-htmlparser2@0.11.0': + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sketch-hq/sketch-file-format-ts@6.5.0': + resolution: {integrity: sha512-shaGl4ttFDpHjYBoMaZpciOtsi/lKvJ3VfcBYk6+PjjbFs6H5GxPAyhbiSqy3Vmx30aos284pd88QzD3rE6iag==} + + '@stackblitz/sdk@1.11.0': + resolution: {integrity: sha512-DFQGANNkEZRzFk1/rDP6TcFdM82ycHE+zfl9C/M/jXlH68jiqHWHFMQURLELoD8koxvu/eW5uhg94NSAZlYrUQ==} + + '@stylelint/postcss-css-in-js@0.38.0': + resolution: {integrity: sha512-XOz5CAe49kS95p5yRd+DAIWDojTjfmyAQ4bbDlXMdbZTQ5t0ThjSLvWI6JI2uiS7MFurVBkZ6zUqcimzcLTBoQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + peerDependencies: + postcss: '>=7.0.0' + postcss-syntax: '>=0.36.2' + + '@svgr/babel-plugin-add-jsx-attribute@6.5.1': + resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1': + resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-dynamic-title@6.5.1': + resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-em-dimensions@6.5.1': + resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-react-native-svg@6.5.1': + resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-svg-component@6.5.1': + resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-preset@6.5.1': + resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/core@6.5.1': + resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} + engines: {node: '>=10'} + + '@svgr/hast-util-to-babel-ast@6.5.1': + resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} + engines: {node: '>=10'} + + '@svgr/plugin-jsx@6.5.1': + resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + + '@svgr/plugin-svgo@6.5.1': + resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': '*' + + '@swc/core-darwin-arm64@1.9.2': + resolution: {integrity: sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.9.2': + resolution: {integrity: sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.9.2': + resolution: {integrity: sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.9.2': + resolution: {integrity: sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.9.2': + resolution: {integrity: sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.9.2': + resolution: {integrity: sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.9.2': + resolution: {integrity: sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.9.2': + resolution: {integrity: sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.9.2': + resolution: {integrity: sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.9.2': + resolution: {integrity: sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.9.2': + resolution: {integrity: sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.1': + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + + '@swc/types@0.1.23': + resolution: {integrity: sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.6': + resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/fs-extra@11.0.1': + resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/hapi__joi@17.1.9': + resolution: {integrity: sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ==} + + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + + '@types/hoist-non-react-statics@3.3.6': + resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} + + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@1.1.2': + resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + + '@types/node@20.5.1': + resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} + + '@types/node@24.0.7': + resolution: {integrity: sha512-YIEUUr4yf8q8oQoXPpSlnvKNVKDQlPMWrmOcgzoduo7kvA2UF0/BwJ/eMKFTiTtkNL17I0M6Xe2tvwFU7be6iw==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/parse5@6.0.3': + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + + '@types/prismjs@1.26.5': + resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/q@1.5.8': + resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==} + + '@types/ramda@0.29.3': + resolution: {integrity: sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.23': + resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + + '@types/semver@7.7.0': + resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@13.0.12': + resolution: {integrity: sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==} + + '@types/yargs@16.0.9': + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@umijs/ast@4.4.11': + resolution: {integrity: sha512-TeOYsiFS4SdKd9MpeeL1C4hD8ht3WV/6F43vqhbS5I1hyoV999euuFECnKevcd9tXI72HOMPKqa3e+AxRTinoA==} + + '@umijs/babel-preset-umi@4.4.11': + resolution: {integrity: sha512-hod7QZ9Kx2lDup0W1RrhJkTVUkH8tR3DWiGwzcyVCB1ArGmOzyfVUj2CyxfM3p5e1Iz8sfrc8WiArrdQtw77Jg==} + + '@umijs/bundler-esbuild@4.4.11': + resolution: {integrity: sha512-8gNB7hZtA1iRZcHYFwopmrNFrtkzd2yAGxBkdxAXd+Ntcsr6GY/3AF/VInn21mTNFRaQnu5qJKENnIAxKNl8Yg==} + hasBin: true + + '@umijs/bundler-mako@0.11.10': + resolution: {integrity: sha512-RNop0kmMXJUOLQYp61ZW3NVdD8ikOPW0zoCmgkN+nIUVw+QKcA+9tSPEcT6Rr8id9+Ed3lMjLqktev20guRp1g==} + + '@umijs/bundler-utils@4.4.11': + resolution: {integrity: sha512-H9XNvR8d45Zh7efzhRkSkcDcqVJUWji2Df9rXrxQA/VBUQkk87RTQlfpoIzfgfsWFZTQ3NC+ggRAoQUGMeUySA==} + + '@umijs/bundler-vite@4.4.11': + resolution: {integrity: sha512-7Qex4G1bWTEsyW9OoWn73MPdmBBRXUo5qDj2e0/HYejSfaT7mSoIpaq9JML5pPW0FSv+trrs8l3cc0fJNM9n1Q==} + hasBin: true + + '@umijs/bundler-webpack@4.4.11': + resolution: {integrity: sha512-2u2WlR/WtNxeOnjGFUMV0az2ekQVeTbVYnTkvIHGslCUnhZ8YpgiUkMHIdqviPUgCANA+u9vH1mZzELCyod2PA==} + hasBin: true + + '@umijs/case-sensitive-paths-webpack-plugin@1.0.1': + resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} + + '@umijs/core@4.4.11': + resolution: {integrity: sha512-gND+hLhnvjOKH/vQJ/llPfD4Ogde3TP4fgJUVjHk3kNF3DbBiHqYKhViH5SMamGyPhhrun4A3Mic3YQvmjVtBg==} + + '@umijs/did-you-know@1.0.3': + resolution: {integrity: sha512-9EZ+rgY9+2HEaE+Z9dGkal2ccw8L4uuz77tCB5WpskW7NBZX5nOj82sqF/shEtA5tU3SWO/Mi4n35K3iONvDtw==} + + '@umijs/es-module-parser-darwin-arm64@0.0.7': + resolution: {integrity: sha512-1QeNupekuVYVvL4UHyCRq4ISP2PNk4rDd9UOPONW+KpqTyP9p7RfgGpwB0VLPaFSu2ADtm0XZyIaYEGPY6zuDw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@umijs/es-module-parser-darwin-x64@0.0.7': + resolution: {integrity: sha512-FBFmfigmToPc9qBCW7wHiTYpqnLdPbAvoMGOydzAu2NspdPEF7TfILcr8vCPNbNe3vCobS+T/YM1dP+SagERlA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@umijs/es-module-parser-linux-arm-gnueabihf@0.0.7': + resolution: {integrity: sha512-AXfmg3htkadLGsXUyiyrTig4omGCWIN4l+HS7Qapqv0wlfFYSpC0KPemjyBQgzXO70tDcT+1FNhGjIy+yr2pIQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@umijs/es-module-parser-linux-arm64-gnu@0.0.7': + resolution: {integrity: sha512-2wSdChFc39fPJwvS8tRq+jx8qNlIwrjRk1hb3N5o0rJR+rqt+ceAyNPbYwpNBmUHW7xtmDQvJUeinvr7hIBP+w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@umijs/es-module-parser-linux-arm64-musl@0.0.7': + resolution: {integrity: sha512-cqQffARWkmQ3n1RYNKZR3aD6X8YaP6u1maASjDgPQOpZMAlv/OSDrM/7iGujWTs0PD0haockNG9/DcP6lgPHMw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@umijs/es-module-parser-linux-x64-gnu@0.0.7': + resolution: {integrity: sha512-PHrKHtT665Za0Ydjch4ACrNpRU+WIIden12YyF1CtMdhuLDSoU6UfdhF3NoDbgEUcXVDX/ftOqmj0SbH3R1uew==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@umijs/es-module-parser-linux-x64-musl@0.0.7': + resolution: {integrity: sha512-cyZvUK5lcECLWzLp/eU1lFlCETcz+LEb+wrdARQSST1dgoIGZsT4cqM1WzYmdZNk3o883tiZizLt58SieEiHBQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@umijs/es-module-parser-win32-arm64-msvc@0.0.7': + resolution: {integrity: sha512-V7WxnUI88RboSl0RWLNQeKBT7EDW35fW6Tn92zqtoHHxrhAIL9DtDyvC8REP4qTxeZ6Oej/Ax5I6IjsLx3yTOg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@umijs/es-module-parser-win32-x64-msvc@0.0.7': + resolution: {integrity: sha512-X3Pqy0l38hg6wMPquPeMHuoHU+Cx+wzyz32SVYCta+RPJQ7n9PjrEBiIuVAw5+GJZjSABN7LVr8u/n0RZT9EQA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@umijs/es-module-parser@0.0.7': + resolution: {integrity: sha512-x47CMi/Hw7Nkz3RXTUqlldH/UM+Tcmw2PziV3k+itJqTFJc8oVx3lzdUgCnG+eL3ZtmLPbOEBhPb30V0NytNDQ==} + engines: {node: '>= 10'} + + '@umijs/history@5.3.1': + resolution: {integrity: sha512-/e0cEGrR2bIWQD7pRl3dl9dcyRGeC9hoW0OCvUTT/hjY0EfUrkd6G8ZanVghPMpDuY5usxq9GVcvrT8KNXLWvA==} + + '@umijs/lint@4.4.11': + resolution: {integrity: sha512-vzbladpPXc740mE4Ru+h7PiwDxSSOf0F7Qjd3PggFk7DQ9tfQYJmub0/GMnHm6/hPANt0Oyn4JEDzoA5R5oZdg==} + + '@umijs/mako-darwin-arm64@0.11.10': + resolution: {integrity: sha512-kCn0mJx2Hq4RIkMNIzMDOdO4JSWq120auFmSEleHkfrFFFqSWX2qgz5mR5VI7kaPH0GUh0+hwfRkjEVGysJGjA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@umijs/mako-darwin-x64@0.11.10': + resolution: {integrity: sha512-SKgadN/mAU8YxrQnsGQ2lFuR8I12EQSsaei41Ke5qBtXhbSxAxt5MMxBKWdB+dUe74dh6dXnllwAk/ts34vCog==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@umijs/mako-linux-arm64-gnu@0.11.10': + resolution: {integrity: sha512-h6TEyMe9zIuH6w5to+XeZciWDD99RaMdfwvqdcHHyJaLH9wfGwSsiHuf/z3Evwkxy8xoNAvBOngwUD35RGYa/A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@umijs/mako-linux-arm64-musl@0.11.10': + resolution: {integrity: sha512-kqI1Jw6IHtDwrcsqPZrYxsV3pHzZyOR+6fCFnF5MSURnXbUbJb6Rk66VsKKpMqbyfsEO6nt0WT9FrRBlFvRU2A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@umijs/mako-linux-x64-gnu@0.11.10': + resolution: {integrity: sha512-jlhXVvWJuumMmiE3z3ViugOMx9ZasNM1anng0PsusCgDwfy0IOfGzfwfwagqtzfsC5MwyRcfnRQyDdbfbroaSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@umijs/mako-linux-x64-musl@0.11.10': + resolution: {integrity: sha512-SLV/PRdL12dFEKlQGenW3OboZXmdYi25y+JblgVJLBhpdxZrHFqpCsTZn4L3hVEhyl0/ksR1iY0wtfK3urR29g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@umijs/mako-win32-ia32-msvc@0.11.10': + resolution: {integrity: sha512-quCWpVl7yQjG+ccGhkF81GxO3orXdPW1OZWXWxJgOI0uPk7Hczh2EYMEVqqQGbi/83eJ1e3iE1jRTl/+2eHryQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@umijs/mako-win32-x64-msvc@0.11.10': + resolution: {integrity: sha512-NjUfV1vwUeDk5IXyleGb+pa/DZkGpjkclY/TJcK/X2OQ0Yh7Cr3sfZykhCoTEN2Y74k5rEKWYNQA0nTb6akj9Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@umijs/mako@0.11.10': + resolution: {integrity: sha512-qh0DzCtwwYjxey7Hn6B+66KVwDhMa/cIZQYgaeUVs76Ut5WDuUlfkFfJh4VA9k1F9YLBHXMaW2IeKIWTTIPVDg==} + engines: {node: '>= 16'} + hasBin: true + + '@umijs/mfsu@4.4.11': + resolution: {integrity: sha512-FDT2162gdBrDga3obwijuqe+2PC7w/5Al4C+W+vi9tlbK28rrgn0ZYXWK7dvidbcSrzekVqB8b1jkfAAj4KOcQ==} + + '@umijs/plugin-run@4.4.11': + resolution: {integrity: sha512-IFHcwX5fQO+/CDhdJv/qVtJECa7WCQi8pmKn81EQ39bmsgitio9WarRu3Mr46rA5FchRRjVVagdjaTXsriEACg==} + + '@umijs/preset-umi@4.4.11': + resolution: {integrity: sha512-Ea3IM3ZI0hsIQo9mY7dr2zRTXRzmltJD8OWGuQFVi/sb3g4ViKwEaukvTI91yY7v60qP5kDP9SyHoZsFoMxJ9w==} + + '@umijs/react-refresh-webpack-plugin@0.5.11': + resolution: {integrity: sha512-RtFvB+/GmjRhpHcqNgnw8iWZpTlxOnmNxi8eDcecxMmxmSgeDj25LV0jr4Q6rOhv3GTIfVGBhkwz+khGT5tfmg==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + + '@umijs/renderer-react@4.4.11': + resolution: {integrity: sha512-+K2wY1LgpSZIs/Vz2tZ2nKkUNCTf+M43yb1bwTirLy+WQ2VZTB+qM0ti2abhXjZvwzq+WJKkCxhn9s3oJRKDpA==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@umijs/server@4.4.11': + resolution: {integrity: sha512-W6e7fOWZRMogB46IrIK1bgUvK5+9OVuFiCcwgISmof22anqvvrs9BdgUyMJSyrsDzXoXAUIo8lODOAMDg3mRfQ==} + + '@umijs/test@4.4.11': + resolution: {integrity: sha512-RkYsfqPg7VKQwoR/prAV3CQ95VD2PGooGXJ5ZNc00Ej/5iOi8LUAOTuSCRkGd0Zhm3ZoH7xAphPyqxg0/pU00w==} + + '@umijs/ui@3.0.1': + resolution: {integrity: sha512-zcz37AJH0xt/6XVVbyO/hmsK9Hq4vH23HZ4KYVi5A8rbM9KeJkJigTS7ELOdArawZhVNGe+h3a5Oixs4a2QsWw==} + + '@umijs/utils@4.4.11': + resolution: {integrity: sha512-xhXia0yU8JZzpW75TIKDc0tlzvvDGPuuUUXaN3F6FlSSfR13bCCzX+fOTzjo95M4Sz43Vsgub0MK27hXwpCHlQ==} + + '@umijs/zod2ts@4.4.11': + resolution: {integrity: sha512-B4CGKU6N9Qws5zNEu8TJjQgp61xAEdrBEmXGStXLl32f3zz0oUcIq/N4vBYciCDbwjHQKviqGcl3iSy2pbn7BA==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vercel/ncc@0.33.3': + resolution: {integrity: sha512-JGZ11QV+/ZcfudW2Cz2JVp54/pJNXbsuWRgSh2ZmmZdQBKXqBtIGrwI1Wyx8nlbzAiEFe7FHi4K1zX4//jxTnQ==} + hasBin: true + + '@vitejs/plugin-react@4.0.0': + resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + animated-scroll-to@2.3.2: + resolution: {integrity: sha512-GBX6+V06anH2rRt1sGmYXvAVpBo0tMmJxVvGuMcd+KV+EzMnYFSYBnccCa5IYWJvEigI+vFLKKLLEeO6SyfjcQ==} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + antd-token-previewer@2.0.0-alpha.6: + resolution: {integrity: sha512-I2C+c5g6irJO6XGnkVaF5uKxPwThXz1OxESPDjHc26OFLaJ894YkjK8N+7/jKEohuTUZfKLdauJF79Z0PgOmZA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + antd@5.26.3: + resolution: {integrity: sha512-M/s9Q39h/+G7AWnS6fbNxmAI9waTH4ti022GVEXBLq2j810V1wJ3UOQps13nEilzDNcyxnFN/EIbqIgS7wSYaA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.reduce@1.0.8: + resolution: {integrity: sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + + assert-okam@1.5.0: + resolution: {integrity: sha512-pchhPo40i8GsTj/7h6P8LSSzwRErnh2nCEiwXNTxy4VYw6lSesSac4rTKqwsA+fOZdj6FT81Mb9U1vIZEua1EQ==} + + assert@1.5.1: + resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-module-resolver@4.1.0: + resolution: {integrity: sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==} + engines: {node: '>= 8.0.0'} + + babel-plugin-react-compiler@0.0.0-experimental-c23de8d-20240515: + resolution: {integrity: sha512-0XN2gmpT55QtAz5n7d5g91y1AuO9tRhWBaLgCRyc4ExHrlr7+LfxW+YTb3mOwxngkkiggwM8HyYsaEK9MqhnlQ==} + + babel-plugin-styled-components@2.1.4: + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + + babel-plugin-transform-define@2.0.1: + resolution: {integrity: sha512-7lDR1nFGSJHmhq/ScQtp9LTDmNE2yKPoLtwfiu+WQZnj84XL/J/5AZWZXwYcOwbDtUPhtg+y0yxTiP/oGDU6Kw==} + engines: {node: '>= 8.x.x'} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + binaryextensions@2.3.0: + resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==} + engines: {node: '>=0.8'} + + bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + + bn.js@5.2.2: + resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.1: + resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} + engines: {node: '>= 0.10'} + + browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} + + browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + + browserslist@4.25.1: + resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@0.1.2: + resolution: {integrity: sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-okam@4.9.2: + resolution: {integrity: sha512-t+vozme+an7flUs6GXHGMiP3PdodTse1NgRHSDWioIFJAtmMlj3pj7qD20Mkr9hZy0+9HA4R0xcumpMewrRdZQ==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + + bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + + caniuse-lite@1.0.30001726: + resolution: {integrity: sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cipher-base@1.0.6: + resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} + engines: {node: '>= 0.10'} + + classcat@5.0.5: + resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} + + classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + click-to-react-component@1.1.0: + resolution: {integrity: sha512-/DjZemufS1BkxyRgZL3r7HXVVOFRWVQi5Xd4EBnjxZMwrHEh0OlUVA2N9CjXkZ0x8zMf8dL1cKnnx+xUWUg4VA==} + peerDependencies: + react: '>=16.8.0' + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + coa@2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + + codesandbox-import-util-types@2.2.3: + resolution: {integrity: sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ==} + + codesandbox-import-utils@2.2.3: + resolution: {integrity: sha512-ymtmcgZKU27U+nM2qUb21aO8Ut/u2S9s6KorOgG81weP+NA0UZkaHKlaRqbLJ9h4i/4FLvwmEXYAnTjNmp6ogg==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + comlink@4.4.2: + resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + engines: {node: '>= 0.8.0'} + + compute-scroll-into-view@3.1.1: + resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + conventional-changelog-angular@6.0.0: + resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} + engines: {node: '>=14'} + + conventional-changelog-conventionalcommits@6.1.0: + resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} + engines: {node: '>=14'} + + conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} + hasBin: true + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + + core-js-pure@3.43.0: + resolution: {integrity: sha512-i/AgxU2+A+BbJdMxh3v7/vxi2SbFqxiFmg6VsDwYB4jkucrd1BZNA9a9gphC0fYMG5IBSgQcbQnk865VCLe7xA==} + + core-js@3.34.0: + resolution: {integrity: sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig-typescript-loader@4.4.0: + resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} + engines: {node: '>=v14.21.3'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=4' + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + + create-hash@1.1.3: + resolution: {integrity: sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-browserify@3.12.1: + resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} + engines: {node: '>= 0.10'} + + css-blank-pseudo@3.0.3: + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-functions-list@3.2.3: + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} + engines: {node: '>=12 || >=16'} + + css-has-pseudo@3.0.4: + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + + css-loader@6.7.1: + resolution: {integrity: sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + css-prefers-color-scheme@6.0.3: + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + + css-select-base-adapter@0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + + css-select@2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + css-tree@1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + css@3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} + + cssdb@6.6.3: + resolution: {integrity: sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + current-script-polyfill@1.0.0: + resolution: {integrity: sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + dayjs@1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-rename-keys@0.2.1: + resolution: {integrity: sha512-RHd9ABw4Fvk+gYDWqwOftG849x0bYOySl/RgX0tLI9i27ZIeSO91mLZJEp7oPHOMFqHvpgu21YptmDt0FYD/0A==} + engines: {node: '>=0.10.0'} + + deepmerge@1.5.2: + resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} + engines: {node: '>=0.10.0'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + + default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-indent@7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domain-browser@1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dumi-afx-deps@1.0.0-alpha.20: + resolution: {integrity: sha512-PRSJlHuJkyHDET7Hukykx/hLULkgUBX5q2CutMG5EDI3eJLzJlX634wNll10m3at1uomcDAVudL7Dgh5UOJ7IQ==} + + dumi-assets-types@2.4.14: + resolution: {integrity: sha512-k2Z3z7/IcHOYASP/nDjocShdzXatmOuhkAwgYw/4KNiq36gpAKjn5MlrPkzdGH70TbcHGLGEul9b/4sYJLoS9A==} + + dumi-theme-antd@0.4.4: + resolution: {integrity: sha512-d1zPPBi/na6ErYfVx2Syk0nrmz9s5wLhiiDkzN8kxrgdiSst7GLQdjohlpH40q+XmnLj9RjHesjkBAaA3pTkow==} + peerDependencies: + antd: ^5.17.0 + dumi: ^2.4.18 + react: ^18.0.0 + react-dom: ^18.0.0 + + dumi@2.4.21: + resolution: {integrity: sha512-UM6M8B9pRxPbS4CT5DZpIOtQ8j+xH1d28PL1QNxzzK3SdbI7Ww+B+fSS/10KXLi9mPt+9/xlW7eUGCTRAwfjcg==} + hasBin: true + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + editions@2.3.1: + resolution: {integrity: sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==} + engines: {node: '>=0.8'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.177: + resolution: {integrity: sha512-7EH2G59nLsEMj97fpDuvVcYi6lwTcM1xuWw3PssD8xzboAW7zj7iB3COEEEATUfjLHrs5uKBLQT03V/8URx06g==} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.18.2: + resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} + engines: {node: '>=10.13.0'} + + enhanced-resolve@5.9.3: + resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + errlop@2.2.0: + resolution: {integrity: sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==} + engines: {node: '>=0.8'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + + es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + es5-imcompatible-versions@0.1.90: + resolution: {integrity: sha512-2MPI0t/VV4j/oz1qbMekb4gCW81dewTpM2XJHKnPpZiPGu+1rVWmhTnwcq1vt8AFwWrkNF4RE7OZ9ibnKFYKwg==} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.4: + resolution: {integrity: sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-plugin-jest@27.2.3: + resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + + eslint-plugin-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.33.2: + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-attach-comments@2.1.1: + resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + + estree-util-is-identifier-name@2.1.0: + resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} + + estree-util-to-js@1.2.0: + resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} + + estree-util-visit@1.2.1: + resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@2.0.3: + resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events-okam@3.3.0: + resolution: {integrity: sha512-6iR7z9hAJEwrT+D2Ywg6Fx62HSmN86OlcvPdrnq1JBeFr30dMF6l+j7M3VabjHfIi2KMtF8rO0J1rIZEfwMAwg==} + engines: {node: '>=0.8.x'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + express-http-proxy@2.1.1: + resolution: {integrity: sha512-4aRQRqDQU7qNPV5av0/hLcyc0guB9UP71nCYrQEYml7YphTo8tmWf3nDZWdTJMMjFikyz9xKXaURor7Chygdwg==} + engines: {node: '>=6.0.0'} + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + father@4.5.6: + resolution: {integrity: sha512-o/GRqxKrnd8b/BHvqqqCTq9ZN+9caO56EX1RvSoDSHlSgV5JiDdE+Uyu1GYaNSK0409yMgHsXjZlnJeFIwYzCg==} + hasBin: true + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-system-cache@2.0.0: + resolution: {integrity: sha512-QlYut2ZtxRgdW/dboSmiKZWM8FsnpLaLI549hN/RWgwn3FawSil7Jc2n7nFHheclvYxa4LJqwEOvNUYv9VsCXg==} + + file-system-cache@2.4.4: + resolution: {integrity: sha512-vCYhn8pb5nlC3Gs2FFCOkmf4NEg2Ym3ulJwkmS9o6p9oRShGj6CwTMFvpgZihBlsh373NaM0XgAgDHXQIlS4LQ==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-babel-config@1.2.2: + resolution: {integrity: sha512-oK59njMyw2y3yxto1BCfVK7MQp/OYf4FleHu0RgosH3riFJ1aOuo/7naLDLAObfrgn3ueFhw5sAT/cp0QuJI3Q==} + engines: {node: '>=4.0.0'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fork-ts-checker-webpack-plugin@8.0.0: + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + git-hooks-list@3.2.0: + resolution: {integrity: sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==} + + git-hooks-list@4.1.1: + resolution: {integrity: sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==} + + git-raw-commits@2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + + github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + hash-base@2.0.2: + resolution: {integrity: sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==} + + hash-base@3.0.5: + resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} + engines: {node: '>= 0.10'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + + hast-util-has-property@2.0.1: + resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} + + hast-util-heading-rank@2.1.1: + resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} + + hast-util-is-conditional-comment@2.0.0: + resolution: {integrity: sha512-U66gW8ZWQdxP4ZjTEZ3xZT72y6rIKJqV4At5QmC1ItBbQyZyVkuTp8QkQwhxsbkHdzpifiZdQWrDipc9ByqhRg==} + + hast-util-is-element@2.1.3: + resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} + + hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + + hast-util-raw@7.2.3: + resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + + hast-util-raw@8.0.0: + resolution: {integrity: sha512-bKbaUxMNLjZMMowgcrc4l3aQSPiMLiceZD+mp+AKF8Si0mtyR2DYVdxzS2XBxXYDeW/VvfZy40lNxHRiY6MMTg==} + + hast-util-to-estree@2.3.3: + resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} + + hast-util-to-html@8.0.4: + resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} + + hast-util-to-parse5@7.1.0: + resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} + + hast-util-to-string@2.0.0: + resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} + + hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + + hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + heti-findandreplacedomtext@0.5.0: + resolution: {integrity: sha512-GFZjqU8LAdu1uR72GqrReI+lzNLMlcWtvdz1TKNJiofyo1mfTecFYSZEoEbcLcRMl+KwEldnNQoS4BwO8wtg0A==} + + heti@0.9.5: + resolution: {integrity: sha512-oVWQiQ8nvtfU9vc64ftAv+ylSwoeIJGOSm+LRpZz/XMlhFOtzybcpplmRTHxpz8X9vINlWVlniKCvF0LRo7s0Q==} + + history@5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + hosted-git-info@6.1.3: + resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + htm@3.1.1: + resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} + + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} + + html-tokenize@2.0.1: + resolution: {integrity: sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==} + hasBin: true + + html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + + html-webpack-plugin@5.5.0: + resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + + html2sketch@1.0.2: + resolution: {integrity: sha512-/P9NcVH9yBhrOkcnaFkAbWJifDO8Ii+CTIxy9gE6trSQvo2OH++TKQIP5MICEoWvgXpVhZ6botj7P63Krl1/gg==} + engines: {node: '>=14.0.0'} + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immutable@5.1.3: + resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.1: + resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + intl-messageformat@10.7.16: + resolution: {integrity: sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-arrow-function@2.0.3: + resolution: {integrity: sha512-iDStzcT1FJMzx+TjCOK//uDugSe/Mif/8a+T0htydQ3qkJGvSweTZpVYz4hpJH0baloSPiAFQdA8WslAgJphvQ==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-equal@1.7.0: + resolution: {integrity: sha512-hErktGR9jmoYXNWlbrwGjc8eHh09mbY6TWSTTFtnMcKaCuSMN8z+Ni5ma/8mkbVpe4CbB7V6kN1MkCg9bCx5bA==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-text-path@1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isomorphic-rslog@0.0.7: + resolution: {integrity: sha512-n6/XnKnZ5eLEj6VllG4XmamXG7/F69nls8dcynHyhcTpsPUYgcgx4ifEaCo4lQJ2uzwfmIT+F0KBGwBcMKmt5g==} + engines: {node: '>=14.17.6'} + + isomorphic-unfetch@4.0.2: + resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istextorbinary@2.6.0: + resolution: {integrity: sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==} + engines: {node: '>=0.12'} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.4.3: + resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + known-css-properties@0.26.0: + resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + + less-loader@12.3.0: + resolution: {integrity: sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + less-plugin-resolve@1.0.2: + resolution: {integrity: sha512-e1AHq0XNTU8S3d9JCc8CFYajoUBr0EK3pcuLT5PogyBBeE0knzZJL105kKKSZWfq2lQLq3/uEDrMK3JPq+fHaA==} + + less@4.1.3: + resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} + engines: {node: '>=6'} + hasBin: true + + less@4.3.0: + resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==} + engines: {node: '>=14'} + hasBin: true + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-darwin-arm64@1.22.1: + resolution: {integrity: sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.22.1: + resolution: {integrity: sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.22.1: + resolution: {integrity: sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.22.1: + resolution: {integrity: sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.22.1: + resolution: {integrity: sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.22.1: + resolution: {integrity: sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.22.1: + resolution: {integrity: sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.22.1: + resolution: {integrity: sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-x64-msvc@1.22.1: + resolution: {integrity: sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.22.1: + resolution: {integrity: sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==} + engines: {node: '>= 12.0.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@13.3.0: + resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + + listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + loader-runner@4.2.0: + resolution: {integrity: sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==} + engines: {node: '>=6.11.5'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + mdast-util-definitions@5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + + mdast-util-directive@2.2.4: + resolution: {integrity: sha512-sK3ojFP+jpj1n7Zo5ZKvoxP1MvLyzVG63+gm40Z/qI00avzdPCYxt7RBMgofwAva9gBjbDBWVRB/i+UD+fUCzQ==} + + mdast-util-find-and-replace@2.2.2: + resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} + + mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + + mdast-util-frontmatter@1.0.1: + resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} + + mdast-util-gfm-autolink-literal@1.0.3: + resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + + mdast-util-gfm-footnote@1.0.2: + resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + + mdast-util-gfm-strikethrough@1.0.3: + resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + + mdast-util-gfm-table@1.0.7: + resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + + mdast-util-gfm-task-list-item@1.0.2: + resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + + mdast-util-gfm@2.0.2: + resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} + + mdast-util-mdx-expression@1.3.2: + resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} + + mdast-util-mdxjs-esm@1.3.1: + resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} + + mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + + mdast-util-to-hast@12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} + + mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + + mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdn-data@2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + + meow@9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + + micromark-extension-directive@2.2.1: + resolution: {integrity: sha512-ZFKZkNaEqAP86IghX1X7sE8NNnx6kFNq9mSBRvEHjArutTCJZ3LYg6VH151lXVb1JHpmIcW/7rX25oMoIHuSug==} + + micromark-extension-frontmatter@1.1.1: + resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} + + micromark-extension-gfm-autolink-literal@1.0.5: + resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} + + micromark-extension-gfm-footnote@1.1.2: + resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} + + micromark-extension-gfm-strikethrough@1.0.7: + resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} + + micromark-extension-gfm-table@1.0.7: + resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} + + micromark-extension-gfm-tagfilter@1.0.2: + resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} + + micromark-extension-gfm-task-list-item@1.0.5: + resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} + + micromark-extension-gfm@2.0.3: + resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} + + micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + + micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + + micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + + micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + + micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + + micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + + micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + + micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + + micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + + micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + + micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + + micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + + micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + + micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + + micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + + micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + + micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + + micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + + micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + + micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multipipe@1.0.2: + resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-libs-browser-okam@2.2.5: + resolution: {integrity: sha512-kD+WXACEThc6C5DA146KoCNbubjpXeYzXDrukvtXWr6MRzV3uvHCI0eb/GuugWVYnMoD4g3/uaIzvDYOpC4QWw==} + + node-libs-browser@2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + nth-check@1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@0.4.0: + resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.getownpropertydescriptors@2.1.8: + resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} + engines: {node: '>= 0.8'} + + object.getprototypeof@1.0.7: + resolution: {integrity: sha512-AS2h2hzryA95Z5SCy8DykYpdv82hHysDeMTBV5uWII4ljKiS0y2TC5aBQ+tHpCj0PfOy2/IPPY/O86F8uxx2gg==} + engines: {node: '>= 0.4'} + + object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + omit-deep@0.3.0: + resolution: {integrity: sha512-Lbl/Ma59sss2b15DpnWnGmECBRL8cRl/PjPbPMVW+Y8zIQzRrwMaI65Oy6HvxyhYeILVKBJb2LWeG81bj5zbMg==} + engines: {node: '>=0.10.0'} + + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-browserify@0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + path-to-regexp@1.7.0: + resolution: {integrity: sha512-nifX1uj4S9IrK/w3Xe7kKvNEepXivANs9ng60Iq7PU/BlouV3yL/VUhFqTuTq33ykwUqoNcTeGo5vdOBP4jS/Q==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pbkdf2@3.1.3: + resolution: {integrity: sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==} + engines: {node: '>=0.12'} + + peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + + pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + + pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + piscina@4.9.2: + resolution: {integrity: sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pnpm@10.12.4: + resolution: {integrity: sha512-Xqiw3u2U7WhpHJutTJVUknBcXuuKh++GvGLHSiawN7CP+VcPEIsuTb0d0akYb+qSXlJ/FBxkjoWvRWMQdGgBhA==} + engines: {node: '>=18.12'} + hasBin: true + + point-in-polygon@1.1.0: + resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-attribute-case-insensitive@5.0.2: + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-clamp@4.1.0: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + + postcss-color-functional-notation@4.2.4: + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-color-hex-alpha@8.0.4: + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-color-rebeccapurple@7.1.1: + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-custom-media@8.0.2: + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + postcss-custom-properties@12.1.11: + resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-custom-selectors@6.0.3: + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + + postcss-dir-pseudo-class@6.0.5: + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-double-position-gradients@3.1.2: + resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-env-function@4.0.6: + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-flexbugs-fixes@5.0.2: + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + + postcss-focus-visible@6.0.4: + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-focus-within@5.0.4: + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-font-variant@5.0.0: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + + postcss-gap-properties@3.0.5: + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-image-set-function@4.0.7: + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-initial@4.0.1: + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + + postcss-lab-function@4.2.1: + resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-loader@8.1.1: + resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + postcss-logical@5.0.4: + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-media-minmax@5.0.0: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-nesting@10.2.0: + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-opacity-percentage@1.1.3: + resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-overflow-shorthand@3.0.4: + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-page-break@3.0.4: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + + postcss-place@7.0.5: + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-prefix-selector@1.16.0: + resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==} + peerDependencies: + postcss: '>4 <9' + + postcss-preset-env@7.5.0: + resolution: {integrity: sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + + postcss-pseudo-class-any-link@7.1.6: + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + + postcss-replace-overflow-wrap@4.0.0: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-selector-not@5.0.0: + resolution: {integrity: sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==} + peerDependencies: + postcss: ^8.1.0 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-syntax@0.36.2: + resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + peerDependencies: + postcss: '>=5.0.0' + postcss-html: '*' + postcss-jsx: '*' + postcss-less: '*' + postcss-markdown: '*' + postcss-scss: '*' + peerDependenciesMeta: + postcss-html: + optional: true + postcss-jsx: + optional: true + postcss-less: + optional: true + postcss-markdown: + optional: true + postcss-scss: + optional: true + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-plugin-organize-imports@3.2.4: + resolution: {integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==} + peerDependencies: + '@volar/vue-language-plugin-pug': ^1.0.4 + '@volar/vue-typescript': ^1.0.4 + prettier: '>=2.0' + typescript: '>=2.9' + peerDependenciesMeta: + '@volar/vue-language-plugin-pug': + optional: true + '@volar/vue-typescript': + optional: true + + prettier-plugin-packagejson@2.4.3: + resolution: {integrity: sha512-kPeeviJiwy0BgOSk7No8NmzzXfW4R9FYWni6ziA5zc1kGVVrKnBzMZdu2TUhI+I7h8/5Htt3vARYOk7KKJTTNQ==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + + prettier-plugin-packagejson@2.5.17: + resolution: {integrity: sha512-1WYvhTix+4EMYZQYSjAxb6+KTCULINuHUTBcxYa2ipoUS9Y2zJVjE3kuZ5I7ZWIFqyK8xpwYIunXqN5eiT7Hew==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + pretty-format@24.9.0: + resolution: {integrity: sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==} + engines: {node: '>= 6'} + + prism-react-renderer@1.3.5: + resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} + peerDependencies: + react: '>=0.14.9' + + prism-react-renderer@2.3.1: + resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} + peerDependencies: + react: '>=16.0.0' + + prism-themes@1.9.0: + resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==} + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-okam@0.11.10: + resolution: {integrity: sha512-p8e5nl6/OCeMalVb9dSojND5B9m/nq64WsyUfRmrTdLMKcNYcDN++/2I8WV1mTQDqrh2PQ6tIIb2A7/A38eSvw==} + engines: {node: '>= 0.6.0'} + + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + + punycode-okam@1.4.1: + resolution: {integrity: sha512-e4mSfzGfrVBJmhjp+8PHjXIz5WrvEEWB2FT+RJ6YS/ozGttTcnocuj0CtMo3dujWYe2708bTd79zeIrKBtRzCg==} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + query-string@6.14.1: + resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} + engines: {node: '>=6'} + + querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + ramda@0.28.0: + resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} + + ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + raw-loader@4.0.2: + resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + rc-cascader@3.34.0: + resolution: {integrity: sha512-KpXypcvju9ptjW9FaN2NFcA2QH9E9LHKq169Y0eWtH4e/wHQ5Wh5qZakAgvb8EKZ736WZ3B0zLLOBsrsja5Dag==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-checkbox@3.5.0: + resolution: {integrity: sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-collapse@3.9.0: + resolution: {integrity: sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-dialog@9.6.0: + resolution: {integrity: sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-drawer@6.2.0: + resolution: {integrity: sha512-spPkZ3WvP0U0vy5dyzSwlUJ/+vLFtjP/cTwSwejhQRoDBaexSZHsBhELoCZcEggI7LQ7typmtG30lAue2HEhvA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-drawer@7.3.0: + resolution: {integrity: sha512-DX6CIgiBWNpJIMGFO8BAISFkxiuKitoizooj4BDyee8/SnBn0zwO2FHrNDpqqepj0E/TFTDpmEBCyFuTgC7MOg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-dropdown@4.1.0: + resolution: {integrity: sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + + rc-dropdown@4.2.1: + resolution: {integrity: sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + + rc-field-form@2.7.0: + resolution: {integrity: sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-footer@0.6.8: + resolution: {integrity: sha512-JBZ+xcb6kkex8XnBd4VHw1ZxjV6kmcwUumSHaIFdka2qzMCo7Klcy4sI6G0XtUpG/vtpislQCc+S9Bc+NLHYMg==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-image@7.12.0: + resolution: {integrity: sha512-cZ3HTyyckPnNnUb9/DRqduqzLfrQRyi+CdHjdqgsyDpI3Ln5UX1kXnAhPBSJj9pVRzwRFgqkN7p9b6HBDjmu/Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-input-number@9.5.0: + resolution: {integrity: sha512-bKaEvB5tHebUURAEXw35LDcnRZLq3x1k7GxfAqBMzmpHkDGzjAtnUL8y4y5N15rIFIg5IJgwr211jInl3cipag==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-input@1.8.0: + resolution: {integrity: sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-mentions@2.20.0: + resolution: {integrity: sha512-w8HCMZEh3f0nR8ZEd466ATqmXFCMGMN5UFCzEUL0bM/nGw/wOS2GgRzKBcm19K++jDyuWCOJOdgcKGXU3fXfbQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-menu@9.12.4: + resolution: {integrity: sha512-t2NcvPLV1mFJzw4F21ojOoRVofK2rWhpKPx69q2raUsiHPDP6DDevsBILEYdsIegqBeSXoWs2bf6CueBKg3BFg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-menu@9.16.1: + resolution: {integrity: sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-motion@2.9.5: + resolution: {integrity: sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-notification@5.6.4: + resolution: {integrity: sha512-KcS4O6B4qzM3KH7lkwOB7ooLPZ4b6J+VMmQgT51VZCeEcmghdeR4IrMcFq0LG+RPdnbe/ArT086tGM8Snimgiw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-overflow@1.4.1: + resolution: {integrity: sha512-3MoPQQPV1uKyOMVNd6SZfONi+f3st0r8PksexIdBTeIYbMX0Jr+k7pHEDvsXtR4BpCv90/Pv2MovVNhktKrwvw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-pagination@5.1.0: + resolution: {integrity: sha512-8416Yip/+eclTFdHXLKTxZvn70duYVGTvUUWbckCCZoIl3jagqke3GLsFrMs0bsQBikiYpZLD9206Ej4SOdOXQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-picker@4.11.3: + resolution: {integrity: sha512-MJ5teb7FlNE0NFHTncxXQ62Y5lytq6sh5nUw0iH8OkHL/TjARSEvSHpr940pWgjGANpjCwyMdvsEV55l5tYNSg==} + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + luxon: '>= 3.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + + rc-progress@4.0.0: + resolution: {integrity: sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-rate@2.13.1: + resolution: {integrity: sha512-QUhQ9ivQ8Gy7mtMZPAjLbxBt5y9GRp65VcUyGUMF3N3fhiftivPHdpuDIaWIMOTEprAjZPC08bls1dQB+I1F2Q==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-resize-observer@1.4.3: + resolution: {integrity: sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-segmented@2.7.0: + resolution: {integrity: sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-select@14.16.8: + resolution: {integrity: sha512-NOV5BZa1wZrsdkKaiK7LHRuo5ZjZYMDxPP6/1+09+FB4KoNi8jcG1ZqLE3AVCxEsYMBe65OBx71wFoHRTP3LRg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + + rc-slider@11.1.8: + resolution: {integrity: sha512-2gg/72YFSpKP+Ja5AjC5DPL1YnV8DEITDQrcc1eASrUYjl0esptaBVJBh5nLTXCCp15eD8EuGjwezVGSHhs9tQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-steps@6.0.1: + resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-switch@4.1.0: + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-table@7.51.1: + resolution: {integrity: sha512-5iq15mTHhvC42TlBLRCoCBLoCmGlbRZAlyF21FonFnS/DIC8DeRqnmdyVREwt2CFbPceM0zSNdEeVfiGaqYsKw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tabs@12.15.0: + resolution: {integrity: sha512-aXFLRo7jo531Jed1LgRqrF0VmRnzM/Qki25PknM3S04gqyxpDaHNFpPba05pHhn+d1N+54qIi0IcY1odrCrF2A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tabs@15.6.1: + resolution: {integrity: sha512-/HzDV1VqOsUWyuC0c6AkxVYFjvx9+rFPKZ32ejxX0Uc7QCzcEjTA9/xMgv4HemPKwzBNX8KhGVbbumDjnj92aA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-textarea@1.10.0: + resolution: {integrity: sha512-ai9IkanNuyBS4x6sOL8qu/Ld40e6cEs6pgk93R+XLYg0mDSjNBGey6/ZpDs5+gNLD7urQ14po3V6Ck2dJLt9SA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tooltip@6.4.0: + resolution: {integrity: sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tree-select@5.27.0: + resolution: {integrity: sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww==} + peerDependencies: + react: '*' + react-dom: '*' + + rc-tree@5.13.1: + resolution: {integrity: sha512-FNhIefhftobCdUJshO7M8uZTA9F4OPGVXqGfZkkD/5soDeOhwO06T/aKTrg0WD8gRg/pyfq+ql3aMymLHCTC4A==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + + rc-upload@4.9.2: + resolution: {integrity: sha512-nHx+9rbd1FKMiMRYsqQ3NkXUv7COHPBo3X1Obwq9SWS6/diF/A0aJ5OHubvwUAIDs+4RMleljV0pcrNUc823GQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-util@5.41.0: + resolution: {integrity: sha512-xtlCim9RpmVv0Ar2Nnc3WfJCxjQkTf3xHPWoFdjp1fSs2NirQwqiQrfqdU9HUe0kdfb168M/T8Dq0IaX50xeKg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-util@5.44.4: + resolution: {integrity: sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-virtual-list@3.19.1: + resolution: {integrity: sha512-DCapO2oyPqmooGhxBuXHM4lFuX+sshQwWqqkuyFA+4rShLe//+GEPVwiDgO+jKtKHtbeYwZoNvetwfHdOf+iUQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + react-colorful@5.6.1: + resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + react-copy-to-clipboard@5.1.0: + resolution: {integrity: sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==} + peerDependencies: + react: ^15.3.0 || 16 || 17 || 18 + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-error-boundary@4.1.2: + resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} + peerDependencies: + react: '>=16.13.1' + + react-error-overlay@6.0.9: + resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-helmet-async@1.3.0: + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + + react-intersection-observer@9.8.2: + resolution: {integrity: sha512-901naEiiZmse3p+AmtbQ3NL9xx+gQ8TXLiGDc+8GiE3JKJkNV3vP737aGuWTAXBA+1QqxPrDDE+fIEgYpGDlrQ==} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react-dom: + optional: true + + react-intl@7.1.11: + resolution: {integrity: sha512-tnVoRCWvW5Ie2ikYSdPF7z3+880yCe/9xPmitFeRPw3RYDcCfR4m8ZYa4MBq19W4adt9Z+PQA4FaMBCJ7E+HCQ==} + peerDependencies: + react: 16 || 17 || 18 || 19 + typescript: ^5.6.0 + peerDependenciesMeta: + typescript: + optional: true + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-loading-skeleton@3.5.0: + resolution: {integrity: sha512-gxxSyLbrEAdXTKgfbpBEFZCO/P153DnqSCQau2+o6lNy1jgMRr2MmRmOzMmyrwSaSYLRB8g7b0waYPmUjz7IhQ==} + peerDependencies: + react: '>=16.8.0' + + react-merge-refs@1.1.0: + resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==} + + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-router-dom@6.3.0: + resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.3.0: + resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} + peerDependencies: + react: '>=16.8' + + react-simple-code-editor@0.13.1: + resolution: {integrity: sha512-XYeVwRZwgyKtjNIYcAEgg2FaQcCZwhbarnkJIV20U2wkCU9q/CPFBo8nRXrK4GXUz3AvbqZFsZRrpUTkqqEYyQ==} + peerDependencies: + react: '*' + react-dom: '*' + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + reactflow@11.11.4: + resolution: {integrity: sha512-70FOtJkUWH3BAOsN+LU9lCrKoKbtOPnz2uq0CV2PLdNSwxTXOhCbsZr50GmZ+Rtw3jx8Uv7/vBFtCGixLfd4Og==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + rehype-autolink-headings@6.1.1: + resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==} + + rehype-remove-comments@5.0.0: + resolution: {integrity: sha512-sfiVT+u1in19sxo9vv/SDQVbHE2mADScNrpeVsUxBFl14zOMZnfPb6l4hR+lXqe10G13UFVqv5pt8zDbCR4JYQ==} + + rehype-stringify@9.0.4: + resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + remark-directive@2.0.1: + resolution: {integrity: sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw==} + + remark-frontmatter@4.0.1: + resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} + + remark-gfm@3.0.1: + resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + + remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + + remark-rehype@10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + + rename-keys@1.2.0: + resolution: {integrity: sha512-U7XpAktpbSgHTRSNRrjKSrjYkZKuhUukfoBlXWXUExCAqhzh1TU3BDRAfJmarcl5voKS+pbKU9MvyLWKZ4UEEg==} + engines: {node: '>= 0.8.0'} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-global@1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@5.0.1: + resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} + engines: {node: '>=14'} + hasBin: true + + ripemd160@2.0.1: + resolution: {integrity: sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==} + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rollup-plugin-visualizer@5.9.0: + resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + + rollup@3.29.5: + resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass-loader@16.0.5: + resolution: {integrity: sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + + sass@1.89.2: + resolution: {integrity: sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.2: + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + engines: {node: '>= 10.13.0'} + + scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + + selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sitemap@7.1.2: + resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + + sort-package-json@2.4.1: + resolution: {integrity: sha512-Nd3rgLBJcZ4iw7tpuOhwBupG6SvUDU0Fy1cZGAMorA2JmDUb+29Dg5phJK9gapa2Ak9d15w/RuMl/viwX+nKwQ==} + hasBin: true + + sort-package-json@3.3.1: + resolution: {integrity: sha512-awjhQR2Iy5UN3NuguAK5+RezcEuUg9Ra4O8y2Aj+DlJa7MywyHaipAPf9bu4qqFj0hsYHHoT9sS3aV7Ucu728g==} + engines: {node: '>=20'} + hasBin: true + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + 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' + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + stream-browserify@2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + + stream-http@2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-convert@0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder-okam@1.3.0: + resolution: {integrity: sha512-N5lJgLJ02sIs9xNyqPgIywlGaLUW6s5cYRpnmM3gbfhGA3sggW0+E2go26D7oZgEH7jHpXDe+ArDrBXeCaP9QA==} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + + style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + + styled-components@5.3.11: + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' + + stylelint-config-recommended@7.0.0: + resolution: {integrity: sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==} + peerDependencies: + stylelint: ^14.4.0 + + stylelint-config-standard@25.0.0: + resolution: {integrity: sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==} + peerDependencies: + stylelint: ^14.4.0 + + stylelint@14.16.1: + resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + + svg-pathdata@5.0.5: + resolution: {integrity: sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==} + engines: {node: '>=6.9.5'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + svgo-browser@1.3.8: + resolution: {integrity: sha512-yOgDNIcewFZN3+jXdWeh/rQzbWJjCq1dTHphLz2r4T4AfTm+nqCxZ5B89v9bjQbFKA/s/k7TUc7J90+pP2HTyw==} + engines: {node: '>=4.0.0'} + hasBin: true + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + svgson@4.1.0: + resolution: {integrity: sha512-DodISxHtdLKUghDYA+PGK4Qq350+CbBAkdvGLkBFSmWd9WKSg4dijgjB1IiRPTmsUCd+a7KYe+ILHtklYgQyzQ==} + + synckit@0.11.8: + resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} + engines: {node: ^14.18.0 || >=16.0.0} + + synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.43.1: + resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-extensions@1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + textextensions@2.6.0: + resolution: {integrity: sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==} + engines: {node: '>=0.8'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + throttle-debounce@5.0.2: + resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} + engines: {node: '>=12.22'} + + through2@0.4.2: + resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + + to-buffer@1.2.1: + resolution: {integrity: sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==} + engines: {node: '>= 0.4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + transformation-matrix@2.16.1: + resolution: {integrity: sha512-tdtC3wxVEuzU7X/ydL131Q3JU5cPMEn37oqVLITjRDSDsnSHVFzW2JiCLfZLIQEgWzZHdSy3J6bZzvKEN24jGA==} + + traverse@0.6.6: + resolution: {integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + trim-right@1.0.1: + resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} + engines: {node: '>=0.10.0'} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + ts-toolbelt@9.6.0: + resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + + tsconfig-paths@4.0.0: + resolution: {integrity: sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tsx@3.12.2: + resolution: {integrity: sha512-ykAEkoBg30RXxeOMVeZwar+JH632dZn9EUJVyJwhfag62k6UO/dIyJEV58YuLF6e5BTdV/qmbQrpkWqjq9cUnQ==} + hasBin: true + + tty-browserify@0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + types-ramda@0.29.10: + resolution: {integrity: sha512-5PJiW/eiTPyXXBYGZOYGezMl6qj7keBiZheRwfjJZY26QPHsNrjfJnz0mru6oeqqoTHOni893Jfd6zyUXfQRWg==} + + typescript-transform-paths@3.4.7: + resolution: {integrity: sha512-1Us1kdkdfKd2unbkBAOV2HHRmbRBYpSuk9nJ7cLD2hP4QmfToiM/VpxNlhJc1eezVwVqSKSBjNSzZsK/fWR/9A==} + peerDependencies: + typescript: '>=3.6.5' + + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + umi@4.4.11: + resolution: {integrity: sha512-KWPe91DJOyuNurSjzFTbEUypxrFjV0wVEdEXFid6m2IhM2iOepvkfeqk37GpvE9rMoLwo+i/1MIZm2xKhZATbQ==} + engines: {node: '>=14'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + + unfetch@5.0.0: + resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} + + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unist-util-filter@4.0.1: + resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} + + unist-util-generated@2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + + unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + unset-value@0.1.2: + resolution: {integrity: sha512-yhv5I4TsldLdE3UcVQn0hD2T5sNCPv4+qm/CTUpRKIpwthYRIipsAPdsrNpOI79hPQa0rTTeW22Fq6JWRcTgNg==} + engines: {node: '>=0.10.0'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-okam@0.11.1: + resolution: {integrity: sha512-AM6OVeZNwKiirK3IwKxHuopgjX1jB0F8srK9OlCXN+wdmTNg6vgnN9xyQ5abhxq8Oj/kTleLU8OCfZ1FaEW37w==} + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + + use-debouncy@4.6.0: + resolution: {integrity: sha512-5N3n/oQYMuU3QKLXDa9p/xtdPKBcNbGQdLqJJPrkT164IMpHdke5xqoehDZCmgDciy+wJC+iqyE3g8c+k03lGg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + use-isomorphic-layout-effect@1.2.1: + resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util-okam@0.11.1: + resolution: {integrity: sha512-e2bG47F03vYx2MbA6znK6t6dwffnXGsVzh8BLpi0pcQ7dDRQf0zSAQ9IR7M+aoozALNibw8eCY53gEK8bBpSjg==} + + util.promisify@1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + + util@0.10.3: + resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==} + + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + + util@0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-compile-cache@2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + + v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validator@13.15.15: + resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} + engines: {node: '>= 0.10'} + + vanilla-jsoneditor@0.16.1: + resolution: {integrity: sha512-Wirg6DoCrJpYwMHxkwyvgQ16gr4kgH9zzueHSSSovzQDvlg/XSqpY/stVsI5lz1vqJW1RAtr0Ilyyg1AbokRXA==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vite@4.5.2: + resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webpack-5-chain@8.0.1: + resolution: {integrity: sha512-Tu1w80WA2Z+X6e7KzGy+cc0A0z+npVJA/fh55q2azMJ030gqz343Kx+yNAstDCeugsepmtDWY2J2IBRW/O+DEA==} + engines: {node: '>=10'} + + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + + webpack@5.99.9: + resolution: {integrity: sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + xml-lexer@0.2.2: + resolution: {integrity: sha512-G0i98epIwiUEiKmMcavmVdhtymW+pCAohMRgybyIME9ygfVu8QheIi+YoQh3ngiThsT0SQzJT4R0sKDEv8Ou0w==} + + xml-reader@2.4.3: + resolution: {integrity: sha512-xWldrIxjeAMAu6+HSf9t50ot1uL5M+BtOidRCWHXIeewvSeIpscWCsp4Zxjk8kHHhdqFBrfK8U0EJeCcnyQ/gA==} + + xtend@2.1.2: + resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} + engines: {node: '>=0.4'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + + zod-validation-error@2.1.0: + resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.18.0 + + zod@3.25.67: + resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} + + zustand@4.5.7: + resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.10 + '@jridgewell/trace-mapping': 0.3.27 + + '@ant-design/colors@6.0.0': + dependencies: + '@ctrl/tinycolor': 3.6.0 + + '@ant-design/colors@7.2.1': + dependencies: + '@ant-design/fast-color': 2.0.6 + + '@ant-design/cssinjs-utils@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.27.6 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/cssinjs@1.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.22.3 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.3.2 + csstype: 3.1.3 + rc-util: 5.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + stylis: 4.3.6 + + '@ant-design/cssinjs@1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.6 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.5.1 + csstype: 3.1.3 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + stylis: 4.3.6 + + '@ant-design/fast-color@2.0.6': + dependencies: + '@babel/runtime': 7.27.6 + + '@ant-design/icons-svg@4.4.2': {} + + '@ant-design/icons@4.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons-svg': 4.4.2 + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + lodash: 4.17.21 + rc-util: 5.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/icons@5.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/colors': 7.2.1 + '@ant-design/icons-svg': 4.4.2 + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/icons@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/colors': 7.2.1 + '@ant-design/icons-svg': 4.4.2 + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/react-slick@1.1.2(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + json2mq: 0.2.0 + react: 18.3.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 5.0.2 + + '@antfu/install-pkg@0.1.1': + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + + '@antfu/utils@0.7.10': {} + + '@arvinxu/layout-kit@1.4.0(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)': + dependencies: + styled-components: 5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - react + - react-dom + - react-is + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.7': {} + + '@babel/core@7.23.6': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.23.6) + '@babel/helpers': 7.27.6 + '@babel/parser': 7.27.7 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.7(supports-color@5.5.0) + '@babel/types': 7.27.7 + convert-source-map: 2.0.0 + debug: 4.4.1(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/core@7.27.7': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) + '@babel/helpers': 7.27.6 + '@babel/parser': 7.27.7 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.7(supports-color@5.5.0) + '@babel/types': 7.27.7 + convert-source-map: 2.0.0 + debug: 4.4.1(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.23.3(@babel/core@7.23.6)(eslint@8.57.1)': + dependencies: + '@babel/core': 7.23.6 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.2.0': + dependencies: + '@babel/types': 7.27.7 + jsesc: 2.5.2 + lodash: 4.17.21 + source-map: 0.5.7 + trim-right: 1.0.1 + + '@babel/generator@7.27.5': + dependencies: + '@babel/parser': 7.27.7 + '@babel/types': 7.27.7 + '@jridgewell/gen-mapping': 0.3.10 + '@jridgewell/trace-mapping': 0.3.27 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.27.7 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.7 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.27.1(supports-color@5.5.0)': + dependencies: + '@babel/traverse': 7.27.7(supports-color@5.5.0) + '@babel/types': 7.27.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.3(@babel/core@7.23.6)': + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.7(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.7(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-simple-access@7.27.1': + dependencies: + '@babel/traverse': 7.27.7(supports-color@5.5.0) + '@babel/types': 7.27.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.6': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.7 + + '@babel/parser@7.27.7': + dependencies: + '@babel/types': 7.27.7 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-simple-access': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.22.3': + dependencies: + regenerator-runtime: 0.13.11 + + '@babel/runtime@7.23.6': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.27.6': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.7 + '@babel/types': 7.27.7 + + '@babel/traverse@7.27.7(supports-color@5.5.0)': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/parser': 7.27.7 + '@babel/template': 7.27.2 + '@babel/types': 7.27.7 + debug: 4.4.1(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.7': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bloomberg/record-tuple-polyfill@0.0.4': {} + + '@commitlint/cli@17.8.1(@swc/core@1.9.2(@swc/helpers@0.5.1))': + dependencies: + '@commitlint/format': 17.8.1 + '@commitlint/lint': 17.8.1 + '@commitlint/load': 17.8.1(@swc/core@1.9.2(@swc/helpers@0.5.1)) + '@commitlint/read': 17.8.1 + '@commitlint/types': 17.8.1 + execa: 5.1.1 + lodash.isfunction: 3.0.9 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + '@commitlint/config-conventional@17.8.1': + dependencies: + conventional-changelog-conventionalcommits: 6.1.0 + + '@commitlint/config-validator@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + ajv: 8.17.1 + + '@commitlint/ensure@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@17.8.1': {} + + '@commitlint/format@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + chalk: 4.1.2 + + '@commitlint/is-ignored@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + semver: 7.5.4 + + '@commitlint/lint@17.8.1': + dependencies: + '@commitlint/is-ignored': 17.8.1 + '@commitlint/parse': 17.8.1 + '@commitlint/rules': 17.8.1 + '@commitlint/types': 17.8.1 + + '@commitlint/load@17.8.1(@swc/core@1.9.2(@swc/helpers@0.5.1))': + dependencies: + '@commitlint/config-validator': 17.8.1 + '@commitlint/execute-rule': 17.8.1 + '@commitlint/resolve-extends': 17.8.1 + '@commitlint/types': 17.8.1 + '@types/node': 20.5.1 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.4.2) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.8.3))(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@5.8.3))(typescript@5.8.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@5.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + '@commitlint/message@17.8.1': {} + + '@commitlint/parse@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + conventional-changelog-angular: 6.0.0 + conventional-commits-parser: 4.0.0 + + '@commitlint/read@17.8.1': + dependencies: + '@commitlint/top-level': 17.8.1 + '@commitlint/types': 17.8.1 + fs-extra: 11.3.0 + git-raw-commits: 2.0.11 + minimist: 1.2.8 + + '@commitlint/resolve-extends@17.8.1': + dependencies: + '@commitlint/config-validator': 17.8.1 + '@commitlint/types': 17.8.1 + import-fresh: 3.3.1 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + + '@commitlint/rules@17.8.1': + dependencies: + '@commitlint/ensure': 17.8.1 + '@commitlint/message': 17.8.1 + '@commitlint/to-lines': 17.8.1 + '@commitlint/types': 17.8.1 + execa: 5.1.1 + + '@commitlint/to-lines@17.8.1': {} + + '@commitlint/top-level@17.8.1': + dependencies: + find-up: 5.0.0 + + '@commitlint/types@17.8.1': + dependencies: + chalk: 4.1.2 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@csstools/postcss-color-function@1.1.1(postcss@8.5.6)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-font-format-keywords@1.0.1(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-hwb-function@1.0.2(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-ic-unit@1.0.1(postcss@8.5.6)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.5.6)': + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + '@csstools/postcss-normalize-display-values@1.0.1(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-oklab-function@1.1.1(postcss@8.5.6)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-unset-value@1.0.2(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.1.2)': + dependencies: + postcss-selector-parser: 6.1.2 + + '@ctrl/tinycolor@3.6.0': {} + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/runtime': 7.22.3 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/css@11.11.2': + dependencies: + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + transitivePeerDependencies: + - supports-color + + '@emotion/hash@0.8.0': {} + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.3.1': + dependencies: + '@emotion/memoize': 0.9.0 + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.11.0(@types/react@18.3.23)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.22.3 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.3.1 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.1.3 + + '@emotion/server@11.11.0(@emotion/css@11.11.2)': + dependencies: + '@emotion/utils': 1.4.2 + html-tokenize: 2.0.1 + multipipe: 1.0.2 + through: 2.3.8 + optionalDependencies: + '@emotion/css': 11.11.2 + + '@emotion/sheet@1.4.0': {} + + '@emotion/stylis@0.8.5': {} + + '@emotion/unitless@0.10.0': {} + + '@emotion/unitless@0.7.5': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.3.1': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@esbuild-kit/cjs-loader@2.4.4': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.10.1 + + '@esbuild-kit/core-utils@3.3.2': + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + + '@esbuild-kit/esm-loader@2.6.5': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.10.1 + + '@esbuild/aix-ppc64@0.21.4': + optional: true + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm64@0.21.4': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-arm@0.21.4': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/android-x64@0.21.4': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.21.4': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.21.4': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.21.4': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.21.4': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.21.4': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-arm@0.21.4': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.21.4': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.21.4': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.21.4': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.21.4': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.21.4': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.21.4': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/linux-x64@0.21.4': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.21.4': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.21.4': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.21.4': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.21.4': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.21.4': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.21.4': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.1(supports-color@5.5.0) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@floating-ui/core@0.6.2': {} + + '@floating-ui/dom@0.4.5': + dependencies: + '@floating-ui/core': 0.6.2 + + '@floating-ui/react-dom-interactions@0.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 0.6.3(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.6 + point-in-polygon: 1.1.0 + use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - react + - react-dom + + '@floating-ui/react-dom@0.6.3(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 0.4.5 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + + '@formatjs/ecma402-abstract@2.3.4': + dependencies: + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/intl-localematcher': 0.6.1 + decimal.js: 10.5.0 + tslib: 2.8.1 + + '@formatjs/fast-memoize@2.2.7': + dependencies: + tslib: 2.8.1 + + '@formatjs/icu-messageformat-parser@2.11.2': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/icu-skeleton-parser': 1.8.14 + tslib: 2.8.1 + + '@formatjs/icu-skeleton-parser@1.8.14': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.6.1': + dependencies: + tslib: 2.8.1 + + '@formatjs/intl@3.1.6(typescript@5.4.2)': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/icu-messageformat-parser': 2.11.2 + intl-messageformat: 10.7.16 + tslib: 2.8.1 + optionalDependencies: + typescript: 5.4.2 + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.1(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.1': + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.4.1(supports-color@5.5.0) + kolorist: 1.8.0 + local-pkg: 0.4.3 + transitivePeerDependencies: + - supports-color + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.27.7 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.27 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@24.9.0': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 1.1.2 + '@types/yargs': 13.0.12 + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.0.7 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.0.7 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.10': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.2 + '@jridgewell/trace-mapping': 0.3.27 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.8': + dependencies: + '@jridgewell/gen-mapping': 0.3.10 + '@jridgewell/trace-mapping': 0.3.27 + + '@jridgewell/sourcemap-codec@1.5.2': {} + + '@jridgewell/trace-mapping@0.3.27': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.2 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.2 + + '@loadable/component@5.15.2(react@18.3.1)': + dependencies: + '@babel/runtime': 7.23.6 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-is: 16.13.1 + + '@makotot/ghostui@2.0.0(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@microsoft/api-extractor-model@7.28.17(@types/node@20.5.1)': + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.3.0(@types/node@20.5.1) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.43.7(@types/node@20.5.1)': + dependencies: + '@microsoft/api-extractor-model': 7.28.17(@types/node@20.5.1) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.3.0(@types/node@20.5.1) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.11.0(@types/node@20.5.1) + '@rushstack/ts-command-line': 4.21.0(@types/node@20.5.1) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.10 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + + '@microsoft/tsdoc-config@0.16.2': + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + + '@microsoft/tsdoc@0.14.2': {} + + '@module-federation/error-codes@0.8.12': {} + + '@module-federation/runtime-core@0.6.20': + dependencies: + '@module-federation/error-codes': 0.8.12 + '@module-federation/sdk': 0.8.12 + + '@module-federation/runtime@0.8.12': + dependencies: + '@module-federation/error-codes': 0.8.12 + '@module-federation/runtime-core': 0.6.20 + '@module-federation/sdk': 0.8.12 + + '@module-federation/sdk@0.8.12': + dependencies: + isomorphic-rslog: 0.0.7 + + '@module-federation/webpack-bundler-runtime@0.8.12': + dependencies: + '@module-federation/runtime': 0.8.12 + '@module-federation/sdk': 0.8.12 + + '@napi-rs/nice-android-arm-eabi@1.0.1': + optional: true + + '@napi-rs/nice-android-arm64@1.0.1': + optional: true + + '@napi-rs/nice-darwin-arm64@1.0.1': + optional: true + + '@napi-rs/nice-darwin-x64@1.0.1': + optional: true + + '@napi-rs/nice-freebsd-x64@1.0.1': + optional: true + + '@napi-rs/nice-linux-arm-gnueabihf@1.0.1': + optional: true + + '@napi-rs/nice-linux-arm64-gnu@1.0.1': + optional: true + + '@napi-rs/nice-linux-arm64-musl@1.0.1': + optional: true + + '@napi-rs/nice-linux-ppc64-gnu@1.0.1': + optional: true + + '@napi-rs/nice-linux-riscv64-gnu@1.0.1': + optional: true + + '@napi-rs/nice-linux-s390x-gnu@1.0.1': + optional: true + + '@napi-rs/nice-linux-x64-gnu@1.0.1': + optional: true + + '@napi-rs/nice-linux-x64-musl@1.0.1': + optional: true + + '@napi-rs/nice-win32-arm64-msvc@1.0.1': + optional: true + + '@napi-rs/nice-win32-ia32-msvc@1.0.1': + optional: true + + '@napi-rs/nice-win32-x64-msvc@1.0.1': + optional: true + + '@napi-rs/nice@1.0.1': + optionalDependencies: + '@napi-rs/nice-android-arm-eabi': 1.0.1 + '@napi-rs/nice-android-arm64': 1.0.1 + '@napi-rs/nice-darwin-arm64': 1.0.1 + '@napi-rs/nice-darwin-x64': 1.0.1 + '@napi-rs/nice-freebsd-x64': 1.0.1 + '@napi-rs/nice-linux-arm-gnueabihf': 1.0.1 + '@napi-rs/nice-linux-arm64-gnu': 1.0.1 + '@napi-rs/nice-linux-arm64-musl': 1.0.1 + '@napi-rs/nice-linux-ppc64-gnu': 1.0.1 + '@napi-rs/nice-linux-riscv64-gnu': 1.0.1 + '@napi-rs/nice-linux-s390x-gnu': 1.0.1 + '@napi-rs/nice-linux-x64-gnu': 1.0.1 + '@napi-rs/nice-linux-x64-musl': 1.0.1 + '@napi-rs/nice-win32-arm64-msvc': 1.0.1 + '@napi-rs/nice-win32-ia32-msvc': 1.0.1 + '@napi-rs/nice-win32-x64-msvc': 1.0.1 + optional: true + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@parcel/watcher-android-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-x64@2.5.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.1': + optional: true + + '@parcel/watcher-win32-arm64@2.5.1': + optional: true + + '@parcel/watcher-win32-ia32@2.5.1': + optional: true + + '@parcel/watcher-win32-x64@2.5.1': + optional: true + + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 + optional: true + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.2.7': {} + + '@pkgr/utils@2.4.2': + dependencies: + cross-spawn: 7.0.6 + fast-glob: 3.3.3 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.1.1 + tslib: 2.8.1 + + '@rc-component/async-validator@5.0.4': + dependencies: + '@babel/runtime': 7.27.6 + + '@rc-component/color-picker@2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/fast-color': 2.0.6 + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/context@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.6 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/mini-decimal@1.1.0': + dependencies: + '@babel/runtime': 7.27.6 + + '@rc-component/mutate-observer@1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/portal@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/qrcode@1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/tour@1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/trigger@1.18.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.3.2 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/trigger@2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.3.2 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@reactflow/background@11.3.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@reactflow/core': 11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classcat: 5.0.5 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + zustand: 4.5.7(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/controls@11.2.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@reactflow/core': 11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classcat: 5.0.5 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + zustand: 4.5.7(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/core@11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@types/d3': 7.4.3 + '@types/d3-drag': 3.0.7 + '@types/d3-selection': 3.0.11 + '@types/d3-zoom': 3.0.8 + classcat: 5.0.5 + d3-drag: 3.0.0 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + zustand: 4.5.7(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/minimap@11.7.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@reactflow/core': 11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/d3-selection': 3.0.11 + '@types/d3-zoom': 3.0.8 + classcat: 5.0.5 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + zustand: 4.5.7(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/node-resizer@2.2.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@reactflow/core': 11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classcat: 5.0.5 + d3-drag: 3.0.0 + d3-selection: 3.0.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + zustand: 4.5.7(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + '@reactflow/node-toolbar@1.3.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@reactflow/core': 11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classcat: 5.0.5 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + zustand: 4.5.7(@types/react@18.3.23)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + '@rushstack/node-core-library@4.3.0(@types/node@20.5.1)': + dependencies: + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.10 + semver: 7.5.4 + z-schema: 5.0.5 + optionalDependencies: + '@types/node': 20.5.1 + + '@rushstack/rig-package@0.5.2': + dependencies: + resolve: 1.22.10 + strip-json-comments: 3.1.1 + + '@rushstack/terminal@0.11.0(@types/node@20.5.1)': + dependencies: + '@rushstack/node-core-library': 4.3.0(@types/node@20.5.1) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 20.5.1 + + '@rushstack/ts-command-line@4.21.0(@types/node@20.5.1)': + dependencies: + '@rushstack/terminal': 0.11.0(@types/node@20.5.1) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + + '@selderee/plugin-htmlparser2@0.11.0': + dependencies: + domhandler: 5.0.3 + selderee: 0.11.0 + + '@sinclair/typebox@0.27.8': {} + + '@sketch-hq/sketch-file-format-ts@6.5.0': {} + + '@stackblitz/sdk@1.11.0': {} + + '@stylelint/postcss-css-in-js@0.38.0(postcss-syntax@0.36.2(postcss@8.5.6))(postcss@8.5.6)': + dependencies: + '@babel/core': 7.23.6 + postcss: 8.5.6 + postcss-syntax: 0.36.2(postcss@8.5.6) + transitivePeerDependencies: + - supports-color + + '@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + + '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + + '@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + + '@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + + '@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + + '@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + + '@svgr/babel-preset@6.5.1(@babel/core@7.27.7)': + dependencies: + '@babel/core': 7.27.7 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.27.7) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.27.7) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.27.7) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.27.7) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.27.7) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.27.7) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.27.7) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.27.7) + + '@svgr/core@6.5.1': + dependencies: + '@babel/core': 7.27.7 + '@svgr/babel-preset': 6.5.1(@babel/core@7.27.7) + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + transitivePeerDependencies: + - supports-color + + '@svgr/hast-util-to-babel-ast@6.5.1': + dependencies: + '@babel/types': 7.27.7 + entities: 4.5.0 + + '@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1)': + dependencies: + '@babel/core': 7.27.7 + '@svgr/babel-preset': 6.5.1(@babel/core@7.27.7) + '@svgr/core': 6.5.1 + '@svgr/hast-util-to-babel-ast': 6.5.1 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1)': + dependencies: + '@svgr/core': 6.5.1 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + svgo: 2.8.0 + + '@swc/core-darwin-arm64@1.9.2': + optional: true + + '@swc/core-darwin-x64@1.9.2': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.9.2': + optional: true + + '@swc/core-linux-arm64-gnu@1.9.2': + optional: true + + '@swc/core-linux-arm64-musl@1.9.2': + optional: true + + '@swc/core-linux-x64-gnu@1.9.2': + optional: true + + '@swc/core-linux-x64-musl@1.9.2': + optional: true + + '@swc/core-win32-arm64-msvc@1.9.2': + optional: true + + '@swc/core-win32-ia32-msvc@1.9.2': + optional: true + + '@swc/core-win32-x64-msvc@1.9.2': + optional: true + + '@swc/core@1.9.2(@swc/helpers@0.5.1)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.23 + optionalDependencies: + '@swc/core-darwin-arm64': 1.9.2 + '@swc/core-darwin-x64': 1.9.2 + '@swc/core-linux-arm-gnueabihf': 1.9.2 + '@swc/core-linux-arm64-gnu': 1.9.2 + '@swc/core-linux-arm64-musl': 1.9.2 + '@swc/core-linux-x64-gnu': 1.9.2 + '@swc/core-linux-x64-musl': 1.9.2 + '@swc/core-win32-arm64-msvc': 1.9.2 + '@swc/core-win32-ia32-msvc': 1.9.2 + '@swc/core-win32-x64-msvc': 1.9.2 + '@swc/helpers': 0.5.1 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.1': + dependencies: + tslib: 2.8.1 + + '@swc/types@0.1.23': + dependencies: + '@swc/counter': 0.1.3 + + '@trysound/sax@0.2.0': {} + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/argparse@1.0.38': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.7 + '@babel/types': 7.27.7 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.7 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.7 + '@babel/types': 7.27.7 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.7 + + '@types/d3-array@3.2.1': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.6': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.6 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + + '@types/estree@1.0.8': {} + + '@types/fs-extra@11.0.1': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 24.0.7 + + '@types/geojson@7946.0.16': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 24.0.7 + + '@types/hapi__joi@17.1.9': {} + + '@types/hast@2.3.10': + dependencies: + '@types/unist': 2.0.11 + + '@types/hoist-non-react-statics@3.3.6': + dependencies: + '@types/react': 18.3.23 + hoist-non-react-statics: 3.3.2 + + '@types/html-minifier-terser@6.1.0': {} + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@1.1.2': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-lib-report': 3.0.3 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 24.0.7 + + '@types/mdast@3.0.15': + dependencies: + '@types/unist': 2.0.11 + + '@types/minimist@1.2.5': {} + + '@types/ms@2.1.0': {} + + '@types/node@17.0.45': {} + + '@types/node@20.5.1': {} + + '@types/node@24.0.7': + dependencies: + undici-types: 7.8.0 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/parse5@6.0.3': {} + + '@types/prismjs@1.26.5': {} + + '@types/prop-types@15.7.15': {} + + '@types/q@1.5.8': {} + + '@types/ramda@0.29.3': + dependencies: + types-ramda: 0.29.10 + + '@types/react-dom@18.3.7(@types/react@18.3.23)': + dependencies: + '@types/react': 18.3.23 + + '@types/react@18.3.23': + dependencies: + '@types/prop-types': 15.7.15 + csstype: 3.1.3 + + '@types/resolve@1.20.6': {} + + '@types/sax@1.2.7': + dependencies: + '@types/node': 17.0.45 + + '@types/semver@7.7.0': {} + + '@types/unist@2.0.11': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@13.0.12': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@16.0.9': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.2))(eslint@8.57.1)(typescript@5.4.2)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.4.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.4.2) + debug: 4.4.1(supports-color@5.5.0) + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare-lite: 1.4.0 + semver: 7.7.2 + tsutils: 3.21.0(typescript@5.4.2) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.2)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + debug: 4.4.1(supports-color@5.5.0) + eslint: 8.57.1 + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.4.2)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.4.2) + debug: 4.4.1(supports-color@5.5.0) + eslint: 8.57.1 + tsutils: 3.21.0(typescript@5.4.2) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.2)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.1(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.7.2 + tsutils: 3.21.0(typescript@5.4.2) + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.4.2)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + eslint: 8.57.1 + eslint-scope: 5.1.1 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@umijs/ast@4.4.11': + dependencies: + '@umijs/bundler-utils': 4.4.11 + transitivePeerDependencies: + - supports-color + + '@umijs/babel-preset-umi@4.4.11': + dependencies: + '@babel/runtime': 7.23.6 + '@bloomberg/record-tuple-polyfill': 0.0.4 + '@umijs/bundler-utils': 4.4.11 + '@umijs/utils': 4.4.11 + core-js: 3.34.0 + transitivePeerDependencies: + - supports-color + + '@umijs/bundler-esbuild@4.4.11': + dependencies: + '@umijs/bundler-utils': 4.4.11 + '@umijs/utils': 4.4.11 + enhanced-resolve: 5.9.3 + postcss: 8.5.6 + postcss-flexbugs-fixes: 5.0.2(postcss@8.5.6) + postcss-preset-env: 7.5.0(postcss@8.5.6) + transitivePeerDependencies: + - supports-color + + '@umijs/bundler-mako@0.11.10(postcss@8.5.6)(sass@1.89.2)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)))': + dependencies: + '@umijs/bundler-utils': 4.4.11 + '@umijs/mako': 0.11.10(postcss@8.5.6)(sass@1.89.2)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + chalk: 4.1.2 + compression: 1.8.0 + connect-history-api-fallback: 2.0.0 + cors: 2.8.5 + express: 4.21.2 + express-http-proxy: 2.1.1 + get-tsconfig: 4.7.5 + lodash: 4.17.21 + rimraf: 5.0.1 + webpack-5-chain: 8.0.1 + transitivePeerDependencies: + - '@rspack/core' + - node-sass + - postcss + - sass + - sass-embedded + - supports-color + - typescript + - webpack + + '@umijs/bundler-utils@4.4.11': + dependencies: + '@umijs/utils': 4.4.11 + esbuild: 0.21.4 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + spdy: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@umijs/bundler-vite@4.4.11(@types/node@20.5.1)(lightningcss@1.22.1)(postcss@8.5.6)(rollup@3.29.5)(sass@1.89.2)(terser@5.43.1)': + dependencies: + '@svgr/core': 6.5.1 + '@umijs/bundler-utils': 4.4.11 + '@umijs/utils': 4.4.11 + '@vitejs/plugin-react': 4.0.0(vite@4.5.2(@types/node@20.5.1)(less@4.1.3)(lightningcss@1.22.1)(sass@1.89.2)(terser@5.43.1)) + core-js: 3.34.0 + less: 4.1.3 + postcss-preset-env: 7.5.0(postcss@8.5.6) + rollup-plugin-visualizer: 5.9.0(rollup@3.29.5) + systemjs: 6.15.1 + vite: 4.5.2(@types/node@20.5.1)(less@4.1.3)(lightningcss@1.22.1)(sass@1.89.2)(terser@5.43.1) + transitivePeerDependencies: + - '@types/node' + - lightningcss + - postcss + - rollup + - sass + - stylus + - sugarss + - supports-color + - terser + + '@umijs/bundler-webpack@4.4.11(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)))': + dependencies: + '@svgr/core': 6.5.1 + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) + '@types/hapi__joi': 17.1.9 + '@umijs/babel-preset-umi': 4.4.11 + '@umijs/bundler-utils': 4.4.11 + '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 + '@umijs/mfsu': 4.4.11 + '@umijs/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@1.4.0)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + '@umijs/utils': 4.4.11 + cors: 2.8.5 + css-loader: 6.7.1(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + es5-imcompatible-versions: 0.1.90 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + jest-worker: 29.4.3 + lightningcss: 1.22.1 + node-libs-browser: 2.2.1 + postcss: 8.5.6 + postcss-preset-env: 7.5.0(postcss@8.5.6) + react-error-overlay: 6.0.9 + react-refresh: 0.14.0 + transitivePeerDependencies: + - '@types/webpack' + - sockjs-client + - supports-color + - type-fest + - typescript + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + + '@umijs/case-sensitive-paths-webpack-plugin@1.0.1': {} + + '@umijs/core@4.4.11': + dependencies: + '@umijs/bundler-utils': 4.4.11 + '@umijs/utils': 4.4.11 + transitivePeerDependencies: + - supports-color + + '@umijs/did-you-know@1.0.3': {} + + '@umijs/es-module-parser-darwin-arm64@0.0.7': + optional: true + + '@umijs/es-module-parser-darwin-x64@0.0.7': + optional: true + + '@umijs/es-module-parser-linux-arm-gnueabihf@0.0.7': + optional: true + + '@umijs/es-module-parser-linux-arm64-gnu@0.0.7': + optional: true + + '@umijs/es-module-parser-linux-arm64-musl@0.0.7': + optional: true + + '@umijs/es-module-parser-linux-x64-gnu@0.0.7': + optional: true + + '@umijs/es-module-parser-linux-x64-musl@0.0.7': + optional: true + + '@umijs/es-module-parser-win32-arm64-msvc@0.0.7': + optional: true + + '@umijs/es-module-parser-win32-x64-msvc@0.0.7': + optional: true + + '@umijs/es-module-parser@0.0.7': + optionalDependencies: + '@umijs/es-module-parser-darwin-arm64': 0.0.7 + '@umijs/es-module-parser-darwin-x64': 0.0.7 + '@umijs/es-module-parser-linux-arm-gnueabihf': 0.0.7 + '@umijs/es-module-parser-linux-arm64-gnu': 0.0.7 + '@umijs/es-module-parser-linux-arm64-musl': 0.0.7 + '@umijs/es-module-parser-linux-x64-gnu': 0.0.7 + '@umijs/es-module-parser-linux-x64-musl': 0.0.7 + '@umijs/es-module-parser-win32-arm64-msvc': 0.0.7 + '@umijs/es-module-parser-win32-x64-msvc': 0.0.7 + + '@umijs/history@5.3.1': + dependencies: + '@babel/runtime': 7.23.6 + query-string: 6.14.1 + + '@umijs/lint@4.4.11(eslint@8.57.1)(stylelint@14.16.1)(typescript@5.4.2)': + dependencies: + '@babel/core': 7.23.6 + '@babel/eslint-parser': 7.23.3(@babel/core@7.23.6)(eslint@8.57.1) + '@stylelint/postcss-css-in-js': 0.38.0(postcss-syntax@0.36.2(postcss@8.5.6))(postcss@8.5.6) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.2))(eslint@8.57.1)(typescript@5.4.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.2) + '@umijs/babel-preset-umi': 4.4.11 + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.2))(eslint@8.57.1)(typescript@5.4.2))(eslint@8.57.1)(typescript@5.4.2) + eslint-plugin-react: 7.33.2(eslint@8.57.1) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.1) + postcss: 8.5.6 + postcss-syntax: 0.36.2(postcss@8.5.6) + stylelint-config-standard: 25.0.0(stylelint@14.16.1) + transitivePeerDependencies: + - eslint + - jest + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - stylelint + - supports-color + - typescript + + '@umijs/mako-darwin-arm64@0.11.10': + optional: true + + '@umijs/mako-darwin-x64@0.11.10': + optional: true + + '@umijs/mako-linux-arm64-gnu@0.11.10': + optional: true + + '@umijs/mako-linux-arm64-musl@0.11.10': + optional: true + + '@umijs/mako-linux-x64-gnu@0.11.10': + optional: true + + '@umijs/mako-linux-x64-musl@0.11.10': + optional: true + + '@umijs/mako-win32-ia32-msvc@0.11.10': + optional: true + + '@umijs/mako-win32-x64-msvc@0.11.10': + optional: true + + '@umijs/mako@0.11.10(postcss@8.5.6)(sass@1.89.2)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)))': + dependencies: + '@module-federation/webpack-bundler-runtime': 0.8.12 + '@swc/helpers': 0.5.1 + '@types/resolve': 1.20.6 + chalk: 4.1.2 + enhanced-resolve: 5.18.2 + less: 4.3.0 + less-loader: 12.3.0(less@4.3.0)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + loader-runner: 4.3.0 + loader-utils: 3.3.1 + lodash: 4.17.21 + node-libs-browser-okam: 2.2.5 + piscina: 4.9.2 + postcss-loader: 8.1.1(postcss@8.5.6)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + react-error-overlay: 6.0.9 + react-refresh: 0.14.2 + resolve: 1.22.10 + sass-loader: 16.0.5(sass@1.89.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + semver: 7.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@umijs/mako-darwin-arm64': 0.11.10 + '@umijs/mako-darwin-x64': 0.11.10 + '@umijs/mako-linux-arm64-gnu': 0.11.10 + '@umijs/mako-linux-arm64-musl': 0.11.10 + '@umijs/mako-linux-x64-gnu': 0.11.10 + '@umijs/mako-linux-x64-musl': 0.11.10 + '@umijs/mako-win32-ia32-msvc': 0.11.10 + '@umijs/mako-win32-x64-msvc': 0.11.10 + transitivePeerDependencies: + - '@rspack/core' + - node-sass + - postcss + - sass + - sass-embedded + - typescript + - webpack + + '@umijs/mfsu@4.4.11': + dependencies: + '@umijs/bundler-esbuild': 4.4.11 + '@umijs/bundler-utils': 4.4.11 + '@umijs/utils': 4.4.11 + enhanced-resolve: 5.9.3 + is-equal: 1.7.0 + transitivePeerDependencies: + - supports-color + + '@umijs/plugin-run@4.4.11': + dependencies: + tsx: 3.12.2 + + '@umijs/preset-umi@4.4.11(@types/node@20.5.1)(@types/react@18.3.23)(lightningcss@1.22.1)(rollup@3.29.5)(sass@1.89.2)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)))': + dependencies: + '@iconify/utils': 2.1.1 + '@svgr/core': 6.5.1 + '@umijs/ast': 4.4.11 + '@umijs/babel-preset-umi': 4.4.11 + '@umijs/bundler-esbuild': 4.4.11 + '@umijs/bundler-mako': 0.11.10(postcss@8.5.6)(sass@1.89.2)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + '@umijs/bundler-utils': 4.4.11 + '@umijs/bundler-vite': 4.4.11(@types/node@20.5.1)(lightningcss@1.22.1)(postcss@8.5.6)(rollup@3.29.5)(sass@1.89.2)(terser@5.43.1) + '@umijs/bundler-webpack': 4.4.11(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + '@umijs/core': 4.4.11 + '@umijs/did-you-know': 1.0.3 + '@umijs/es-module-parser': 0.0.7 + '@umijs/history': 5.3.1 + '@umijs/mfsu': 4.4.11 + '@umijs/plugin-run': 4.4.11 + '@umijs/renderer-react': 4.4.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@umijs/server': 4.4.11 + '@umijs/ui': 3.0.1 + '@umijs/utils': 4.4.11 + '@umijs/zod2ts': 4.4.11 + babel-plugin-dynamic-import-node: 2.3.3 + babel-plugin-react-compiler: 0.0.0-experimental-c23de8d-20240515 + click-to-react-component: 1.1.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + core-js: 3.34.0 + current-script-polyfill: 1.0.0 + enhanced-resolve: 5.9.3 + fast-glob: 3.2.12 + html-webpack-plugin: 5.5.0(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + less-plugin-resolve: 1.0.2 + path-to-regexp: 1.7.0 + postcss: 8.5.6 + postcss-prefix-selector: 1.16.0(postcss@8.5.6) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.3.0(react@18.3.1) + react-router-dom: 6.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - '@rspack/core' + - '@types/node' + - '@types/react' + - '@types/webpack' + - lightningcss + - node-sass + - rollup + - sass + - sass-embedded + - sockjs-client + - stylus + - sugarss + - supports-color + - terser + - type-fest + - typescript + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + + '@umijs/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@1.4.0)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)))': + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.43.0 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.6.0 + loader-utils: 2.0.4 + react-refresh: 0.14.0 + schema-utils: 3.3.0 + source-map: 0.7.4 + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + optionalDependencies: + type-fest: 1.4.0 + + '@umijs/renderer-react@4.4.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.23.6 + '@loadable/component': 5.15.2(react@18.3.1) + history: 5.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router-dom: 6.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + + '@umijs/server@4.4.11': + dependencies: + '@umijs/bundler-utils': 4.4.11 + history: 5.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router-dom: 6.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - supports-color + + '@umijs/test@4.4.11(@babel/core@7.27.7)': + dependencies: + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.27.7) + '@jest/types': 27.5.1 + '@umijs/bundler-utils': 4.4.11 + '@umijs/utils': 4.4.11 + babel-jest: 29.7.0(@babel/core@7.27.7) + esbuild: 0.21.4 + identity-obj-proxy: 3.0.0 + isomorphic-unfetch: 4.0.2 + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@umijs/ui@3.0.1': {} + + '@umijs/utils@4.4.11': + dependencies: + chokidar: 3.5.3 + pino: 7.11.0 + + '@umijs/zod2ts@4.4.11': {} + + '@ungap/structured-clone@1.3.0': {} + + '@vercel/ncc@0.33.3': {} + + '@vitejs/plugin-react@4.0.0(vite@4.5.2(@types/node@20.5.1)(less@4.1.3)(lightningcss@1.22.1)(sass@1.89.2)(terser@5.43.1))': + dependencies: + '@babel/core': 7.27.7 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.7) + react-refresh: 0.14.2 + vite: 4.5.2(@types/node@20.5.1)(less@4.1.3)(lightningcss@1.22.1)(sass@1.89.2)(terser@5.43.1) + transitivePeerDependencies: + - supports-color + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + animated-scroll-to@2.3.2: {} + + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + + ansi-html-community@0.0.8: {} + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + antd-token-previewer@2.0.0-alpha.6(@babel/core@7.27.7)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1): + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/cssinjs': 1.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/icons': 4.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@arvinxu/layout-kit': 1.4.0(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + '@babel/runtime': 7.22.3 + '@ctrl/tinycolor': 3.6.0 + antd: 5.26.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.3.2 + rc-util: 5.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + reactflow: 11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + use-debouncy: 4.6.0(react@18.3.1) + vanilla-jsoneditor: 0.16.1 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + - date-fns + - immer + - luxon + - moment + - react-is + + antd@5.26.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@ant-design/colors': 7.2.1 + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/cssinjs-utils': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/fast-color': 2.0.6 + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/react-slick': 1.1.2(react@18.3.1) + '@babel/runtime': 7.27.6 + '@rc-component/color-picker': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/mutate-observer': 1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/qrcode': 1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/tour': 1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + copy-to-clipboard: 3.3.3 + dayjs: 1.11.13 + rc-cascader: 3.34.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-checkbox: 3.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-collapse: 3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-dialog: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-drawer: 7.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-dropdown: 4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-field-form: 2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-image: 7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-input: 1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-input-number: 9.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-mentions: 2.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-notification: 5.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-pagination: 5.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-picker: 4.11.3(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-progress: 4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-rate: 2.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-segmented: 2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-select: 14.16.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-slider: 11.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-steps: 6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-switch: 4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-table: 7.51.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tabs: 15.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-textarea: 1.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tooltip: 6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree-select: 5.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-upload: 4.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + scroll-into-view-if-needed: 3.1.0 + throttle-debounce: 5.0.2 + transitivePeerDependencies: + - date-fns + - luxon + - moment + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-flatten@1.1.1: {} + + array-ify@1.0.0: {} + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array-union@2.1.0: {} + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.reduce@1.0.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-array-method-boxes-properly: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + is-string: 1.1.1 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + arrify@1.0.1: {} + + asn1.js@4.10.1: + dependencies: + bn.js: 4.12.2 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + assert-okam@1.5.0: + dependencies: + object-assign: 4.1.1 + util: 0.10.3 + + assert@1.5.1: + dependencies: + object.assign: 4.1.7 + util: 0.10.4 + + astral-regex@2.0.0: {} + + astring@1.9.0: {} + + async-function@1.0.0: {} + + atob@2.1.2: {} + + atomic-sleep@1.0.0: {} + + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.25.1 + caniuse-lite: 1.0.30001726 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + babel-jest@29.7.0(@babel/core@7.27.7): + dependencies: + '@babel/core': 7.27.7 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.27.7) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-dynamic-import-node@2.3.3: + dependencies: + object.assign: 4.1.7 + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.7 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.22.3 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + + babel-plugin-module-resolver@4.1.0: + dependencies: + find-babel-config: 1.2.2 + glob: 7.2.3 + pkg-up: 3.1.0 + reselect: 4.1.8 + resolve: 1.22.10 + + babel-plugin-react-compiler@0.0.0-experimental-c23de8d-20240515: + dependencies: + '@babel/generator': 7.2.0 + '@babel/types': 7.27.7 + chalk: 4.1.2 + invariant: 2.2.4 + pretty-format: 24.9.0 + zod: 3.25.67 + zod-validation-error: 2.1.0(zod@3.25.67) + + babel-plugin-styled-components@2.1.4(@babel/core@7.27.7)(styled-components@5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(supports-color@5.5.0): + dependencies: + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - supports-color + + babel-plugin-transform-define@2.0.1: + dependencies: + lodash: 4.17.21 + traverse: 0.6.6 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.7): + dependencies: + '@babel/core': 7.27.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.7) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.7) + + babel-preset-jest@29.6.3(@babel/core@7.27.7): + dependencies: + '@babel/core': 7.27.7 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.7) + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + base64-js@1.5.1: {} + + big-integer@1.6.52: {} + + big.js@5.2.2: {} + + binary-extensions@2.3.0: {} + + binaryextensions@2.3.0: {} + + bn.js@4.12.2: {} + + bn.js@5.2.2: {} + + body-parser@1.20.3: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + boolbase@1.0.0: {} + + bplist-parser@0.2.0: + dependencies: + big-integer: 1.6.52 + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.6 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-cipher@1.0.1: + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + browserify-des@1.0.2: + dependencies: + cipher-base: 1.0.6 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-rsa@4.1.1: + dependencies: + bn.js: 5.2.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + browserify-sign@4.2.3: + dependencies: + bn.js: 5.2.2 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.6.1 + hash-base: 3.0.5 + inherits: 2.0.4 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + browserify-zlib@0.2.0: + dependencies: + pako: 1.0.11 + + browserslist@4.25.1: + dependencies: + caniuse-lite: 1.0.30001726 + electron-to-chromium: 1.5.177 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.1) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@0.1.2: {} + + buffer-from@1.1.2: {} + + buffer-okam@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + + buffer-xor@1.0.3: {} + + buffer@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + + builtin-status-codes@3.0.0: {} + + bundle-name@3.0.0: + dependencies: + run-applescript: 5.0.0 + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + camelize@1.0.1: {} + + caniuse-lite@1.0.30001726: {} + + ccount@2.0.1: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chrome-trace-event@1.0.4: {} + + ci-info@3.9.0: {} + + cipher-base@1.0.6: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + classcat@5.0.5: {} + + classnames@2.3.2: {} + + classnames@2.5.1: {} + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + click-to-react-component@1.1.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@floating-ui/react-dom-interactions': 0.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + htm: 3.1.1 + react: 18.3.1 + react-merge-refs: 1.1.0 + transitivePeerDependencies: + - '@types/react' + - react-dom + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + + coa@2.0.2: + dependencies: + '@types/q': 1.5.8 + chalk: 2.4.2 + q: 1.5.1 + + codesandbox-import-util-types@2.2.3: {} + + codesandbox-import-utils@2.2.3: + dependencies: + codesandbox-import-util-types: 2.2.3 + istextorbinary: 2.6.0 + lz-string: 1.5.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + colord@2.9.3: {} + + colorette@2.0.20: {} + + comlink@4.4.2: {} + + comma-separated-tokens@2.0.3: {} + + commander@11.0.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + commander@9.5.0: + optional: true + + common-path-prefix@3.0.0: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.0: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.0.2 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + compute-scroll-into-view@3.1.1: {} + + concat-map@0.0.1: {} + + connect-history-api-fallback@2.0.0: {} + + console-browserify@1.2.0: {} + + constants-browserify@1.0.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + conventional-changelog-angular@6.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@6.1.0: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@4.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + meow: 8.1.2 + split2: 3.2.2 + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + + core-js-pure@3.43.0: {} + + core-js@3.34.0: {} + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.8.3))(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@5.8.3))(typescript@5.8.3): + dependencies: + '@types/node': 20.5.1 + cosmiconfig: 8.3.6(typescript@5.4.2) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@5.4.2) + typescript: 5.8.3 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@8.3.6(typescript@5.4.2): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.4.2 + + cosmiconfig@9.0.0(typescript@5.4.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.4.2 + + create-ecdh@4.0.4: + dependencies: + bn.js: 4.12.2 + elliptic: 6.6.1 + + create-hash@1.1.3: + dependencies: + cipher-base: 1.0.6 + inherits: 2.0.4 + ripemd160: 2.0.1 + sha.js: 2.4.11 + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.6 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.6 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + create-require@1.1.1: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-browserify@3.12.1: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.3 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + hash-base: 3.0.5 + inherits: 2.0.4 + pbkdf2: 3.1.3 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + + css-blank-pseudo@3.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + css-color-keywords@1.0.0: {} + + css-functions-list@3.2.3: {} + + css-has-pseudo@3.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + css-loader@6.7.1(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) + postcss-value-parser: 4.2.0 + semver: 7.7.2 + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + + css-prefers-color-scheme@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + css-select-base-adapter@0.1.1: {} + + css-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + css-tree@1.0.0-alpha.37: + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@3.4.2: {} + + css-what@6.2.2: {} + + css@3.0.0: + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.6.0 + + cssdb@6.6.3: {} + + cssesc@3.0.0: {} + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + csstype@3.1.3: {} + + current-script-polyfill@1.0.0: {} + + d3-color@3.1.0: {} + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-ease@3.0.1: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-selection@3.0.0: {} + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + dargs@7.0.0: {} + + data-uri-to-buffer@4.0.1: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dayjs@1.11.13: {} + + dayjs@1.11.7: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.4.1(supports-color@5.5.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 5.5.0 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decimal.js@10.5.0: {} + + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + + decode-uri-component@0.2.2: {} + + deep-is@0.1.4: {} + + deep-rename-keys@0.2.1: + dependencies: + kind-of: 3.2.2 + rename-keys: 1.2.0 + + deepmerge@1.5.2: {} + + deepmerge@4.3.1: {} + + default-browser-id@3.0.0: + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + + default-browser@4.0.0: + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + depd@2.0.0: {} + + dequal@2.0.3: {} + + des.js@1.1.0: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + destroy@1.2.0: {} + + detect-indent@7.0.1: {} + + detect-libc@1.0.3: {} + + detect-newline@4.0.1: {} + + detect-node@2.1.0: {} + + diff@4.0.2: {} + + diff@5.2.0: {} + + diffie-hellman@5.0.3: + dependencies: + bn.js: 4.12.2 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domain-browser@1.2.0: {} + + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dumi-afx-deps@1.0.0-alpha.20: {} + + dumi-assets-types@2.4.14: {} + + dumi-theme-antd@0.4.4(@babel/core@7.27.7)(@types/react@18.3.23)(antd@5.26.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(dumi@2.4.21(@babel/core@7.27.7)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@18.3.23)(eslint@8.57.1)(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1): + dependencies: + '@ant-design/cssinjs': 1.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/icons': 5.3.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.22.3 + '@ctrl/tinycolor': 3.6.0 + '@emotion/css': 11.11.2 + '@emotion/react': 11.11.0(@types/react@18.3.23)(react@18.3.1) + '@emotion/server': 11.11.0(@emotion/css@11.11.2) + antd: 5.26.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + antd-token-previewer: 2.0.0-alpha.6(@babel/core@7.27.7)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1) + classnames: 2.3.2 + dayjs: 1.11.7 + dumi: 2.4.21(@babel/core@7.27.7)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@18.3.23)(eslint@8.57.1)(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + lodash.clonedeep: 4.5.0 + prism-react-renderer: 2.3.1(react@18.3.1) + rc-drawer: 6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-footer: 0.6.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-intersection-observer: 9.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + - date-fns + - immer + - luxon + - moment + - react-is + - supports-color + + dumi@2.4.21(@babel/core@7.27.7)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@18.3.23)(eslint@8.57.1)(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + '@ant-design/icons-svg': 4.4.2 + '@makotot/ghostui': 2.0.0(react@18.3.1) + '@stackblitz/sdk': 1.11.0 + '@swc/core': 1.9.2(@swc/helpers@0.5.1) + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + '@umijs/bundler-utils': 4.4.11 + '@umijs/core': 4.4.11 + '@umijs/utils': 4.4.11 + animated-scroll-to: 2.3.2 + classnames: 2.3.2 + codesandbox-import-utils: 2.2.3 + comlink: 4.4.2 + copy-to-clipboard: 3.3.3 + deepmerge: 4.3.1 + dumi-afx-deps: 1.0.0-alpha.20 + dumi-assets-types: 2.4.14 + enhanced-resolve: 5.18.2 + estree-util-to-js: 1.2.0 + estree-util-visit: 1.2.1 + file-system-cache: 2.4.4 + github-slugger: 1.5.0 + hast-util-is-element: 2.1.3 + hast-util-raw: 8.0.0 + hast-util-to-estree: 2.3.3 + hast-util-to-string: 2.0.0 + heti: 0.9.5 + hosted-git-info: 6.1.3 + html-to-text: 9.0.5 + html2sketch: 1.0.2 + js-yaml: 4.1.0 + lodash.throttle: 4.1.1 + mdast-util-find-and-replace: 2.2.2 + mdast-util-to-string: 3.2.0 + nprogress: 0.2.0 + pluralize: 8.0.0 + prism-react-renderer: 1.3.5(react@18.3.1) + prism-themes: 1.9.0 + prismjs: 1.30.0 + raw-loader: 4.0.2(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tabs: 12.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tooltip: 6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-copy-to-clipboard: 5.1.0(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + react-error-boundary: 4.1.2(react@18.3.1) + react-intl: 7.1.11(react@18.3.1)(typescript@5.4.2) + react-loading-skeleton: 3.5.0(react@18.3.1) + react-simple-code-editor: 0.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rehype-autolink-headings: 6.1.1 + rehype-remove-comments: 5.0.0 + rehype-stringify: 9.0.4 + remark-directive: 2.0.1 + remark-frontmatter: 4.0.1 + remark-gfm: 3.0.1 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + sass: 1.89.2 + sitemap: 7.1.2 + sucrase: 3.35.0 + umi: 4.4.11(@babel/core@7.27.7)(@types/node@20.5.1)(@types/react@18.3.23)(eslint@8.57.1)(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(sass@1.89.2)(stylelint@14.16.1)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + unified: 10.1.2 + unist-util-visit: 4.1.2 + unist-util-visit-parents: 5.1.3 + url: 0.11.4 + v8-compile-cache: 2.3.0 + vfile: 5.3.7 + transitivePeerDependencies: + - '@babel/core' + - '@rspack/core' + - '@swc/helpers' + - '@types/node' + - '@types/react' + - '@types/webpack' + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' + - eslint + - jest + - lightningcss + - node-sass + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - prettier + - rollup + - sass-embedded + - sockjs-client + - stylelint + - stylus + - sugarss + - supports-color + - terser + - type-fest + - typescript + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + + duplexify@4.1.3: + dependencies: + end-of-stream: 1.4.5 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + + eastasianwidth@0.2.0: {} + + editions@2.3.1: + dependencies: + errlop: 2.2.0 + semver: 6.3.1 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.177: {} + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.2: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + + enhanced-resolve@5.9.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + + entities@2.2.0: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + env-paths@2.2.1: {} + + errlop@2.2.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-array-method-boxes-properly@1.0.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + is-arguments: 1.2.0 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.1.1 + isarray: 2.0.5 + stop-iteration-iterator: 1.1.0 + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + es5-imcompatible-versions@0.1.90: {} + + es6-promise@4.2.8: {} + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + esbuild@0.21.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.4 + '@esbuild/android-arm': 0.21.4 + '@esbuild/android-arm64': 0.21.4 + '@esbuild/android-x64': 0.21.4 + '@esbuild/darwin-arm64': 0.21.4 + '@esbuild/darwin-x64': 0.21.4 + '@esbuild/freebsd-arm64': 0.21.4 + '@esbuild/freebsd-x64': 0.21.4 + '@esbuild/linux-arm': 0.21.4 + '@esbuild/linux-arm64': 0.21.4 + '@esbuild/linux-ia32': 0.21.4 + '@esbuild/linux-loong64': 0.21.4 + '@esbuild/linux-mips64el': 0.21.4 + '@esbuild/linux-ppc64': 0.21.4 + '@esbuild/linux-riscv64': 0.21.4 + '@esbuild/linux-s390x': 0.21.4 + '@esbuild/linux-x64': 0.21.4 + '@esbuild/netbsd-x64': 0.21.4 + '@esbuild/openbsd-x64': 0.21.4 + '@esbuild/sunos-x64': 0.21.4 + '@esbuild/win32-arm64': 0.21.4 + '@esbuild/win32-ia32': 0.21.4 + '@esbuild/win32-x64': 0.21.4 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.2))(eslint@8.57.1)(typescript@5.4.2))(eslint@8.57.1)(typescript@5.4.2): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.4.2) + eslint: 8.57.1 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.2))(eslint@8.57.1)(typescript@5.4.2) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-react-hooks@4.6.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react@7.33.2(eslint@8.57.1): + dependencies: + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 8.57.1 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1(supports-color@5.5.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-util-attach-comments@2.1.1: + dependencies: + '@types/estree': 1.0.8 + + estree-util-is-identifier-name@2.1.0: {} + + estree-util-to-js@1.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.4 + + estree-util-visit@1.2.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 2.0.11 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@2.0.3: {} + + eventemitter3@5.0.1: {} + + events-okam@3.3.0: {} + + events@3.3.0: {} + + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + express-http-proxy@2.1.1: + dependencies: + debug: 3.2.7 + es6-promise: 4.2.8 + raw-body: 2.5.2 + transitivePeerDependencies: + - supports-color + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.2.12: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-redact@3.5.0: {} + + fast-uri@3.0.6: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + father@4.5.6(@babel/core@7.27.7)(@types/node@20.5.1)(styled-components@5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(type-fest@1.4.0)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + '@microsoft/api-extractor': 7.43.7(@types/node@20.5.1) + '@umijs/babel-preset-umi': 4.4.11 + '@umijs/bundler-utils': 4.4.11 + '@umijs/bundler-webpack': 4.4.11(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 + '@umijs/core': 4.4.11 + '@umijs/utils': 4.4.11 + '@vercel/ncc': 0.33.3 + babel-plugin-dynamic-import-node: 2.3.3 + babel-plugin-module-resolver: 4.1.0 + babel-plugin-styled-components: 2.1.4(@babel/core@7.27.7)(styled-components@5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(supports-color@5.5.0) + babel-plugin-transform-define: 2.0.1 + enhanced-resolve: 5.9.3 + esbuild: 0.17.19 + fast-glob: 3.2.12 + file-system-cache: 2.0.0 + loader-runner: 4.2.0 + minimatch: 3.1.2 + piscina: 4.9.2 + tsconfig-paths: 4.0.0 + typescript: 5.4.2 + typescript-transform-paths: 3.4.7(typescript@5.4.2) + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - '@types/webpack' + - sockjs-client + - styled-components + - supports-color + - type-fest + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.4.6(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-system-cache@2.0.0: + dependencies: + fs-extra: 10.1.0 + ramda: 0.28.0 + + file-system-cache@2.4.4: + dependencies: + '@types/fs-extra': 11.0.1 + '@types/ramda': 0.29.3 + fs-extra: 11.1.1 + ramda: 0.29.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-babel-config@1.2.2: + dependencies: + json5: 1.0.2 + path-exists: 3.0.0 + + find-root@1.1.0: {} + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.3: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + '@babel/code-frame': 7.27.1 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.7.2 + tapable: 2.2.2 + typescript: 5.4.2 + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + + format@0.2.2: {} + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.1.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-monkey@1.0.6: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-tsconfig@4.7.5: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-value@2.0.6: {} + + git-hooks-list@3.2.0: {} + + git-hooks-list@4.1.1: {} + + git-raw-commits@2.0.11: + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + + github-slugger@1.5.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-dirs@0.1.1: + dependencies: + ini: 1.3.8 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + + globjoin@0.1.4: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handle-thing@2.0.1: {} + + hard-rejection@2.1.0: {} + + harmony-reflect@1.6.2: {} + + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-values@0.1.4: {} + + hash-base@2.0.2: + dependencies: + inherits: 2.0.4 + + hash-base@3.0.5: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-from-parse5@7.1.2: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + hastscript: 7.2.0 + property-information: 6.5.0 + vfile: 5.3.7 + vfile-location: 4.1.0 + web-namespaces: 2.0.1 + + hast-util-has-property@2.0.1: {} + + hast-util-heading-rank@2.1.1: + dependencies: + '@types/hast': 2.3.10 + + hast-util-is-conditional-comment@2.0.0: + dependencies: + '@types/hast': 2.3.10 + + hast-util-is-element@2.1.3: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + + hast-util-parse-selector@3.1.1: + dependencies: + '@types/hast': 2.3.10 + + hast-util-raw@7.2.3: + dependencies: + '@types/hast': 2.3.10 + '@types/parse5': 6.0.3 + hast-util-from-parse5: 7.1.2 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + parse5: 6.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-raw@8.0.0: + dependencies: + '@types/hast': 2.3.10 + extend: 3.0.2 + hast-util-from-parse5: 7.1.2 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + mdast-util-to-hast: 12.3.0 + parse5: 7.3.0 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-estree@2.3.3: + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + comma-separated-tokens: 2.0.3 + estree-util-attach-comments: 2.1.1 + estree-util-is-identifier-name: 2.1.0 + hast-util-whitespace: 2.0.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdxjs-esm: 1.3.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 4.0.4 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@8.0.4: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 7.2.3 + hast-util-whitespace: 2.0.1 + html-void-elements: 2.0.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-parse5@7.1.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-string@2.0.0: + dependencies: + '@types/hast': 2.3.10 + + hast-util-whitespace@2.0.1: {} + + hastscript@7.2.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + + he@1.2.0: {} + + heti-findandreplacedomtext@0.5.0: {} + + heti@0.9.5: + dependencies: + heti-findandreplacedomtext: 0.5.0 + + history@5.3.0: + dependencies: + '@babel/runtime': 7.23.6 + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hosted-git-info@6.1.3: + dependencies: + lru-cache: 7.18.3 + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + htm@3.1.1: {} + + html-entities@2.6.0: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.43.1 + + html-tags@3.3.1: {} + + html-to-text@9.0.5: + dependencies: + '@selderee/plugin-htmlparser2': 0.11.0 + deepmerge: 4.3.1 + dom-serializer: 2.0.0 + htmlparser2: 8.0.2 + selderee: 0.11.0 + + html-tokenize@2.0.1: + dependencies: + buffer-from: 0.1.2 + inherits: 2.0.4 + minimist: 1.2.8 + readable-stream: 1.0.34 + through2: 0.4.2 + + html-void-elements@2.0.1: {} + + html-webpack-plugin@5.5.0(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.2 + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + + html2sketch@1.0.2: + dependencies: + '@sketch-hq/sketch-file-format-ts': 6.5.0 + color: 3.2.1 + css: 3.0.0 + svg-pathdata: 5.0.5 + svgo-browser: 1.3.8 + svgson: 4.1.0 + transformation-matrix: 2.16.1 + uuid: 8.3.2 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-deceiver@1.2.7: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + https-browserify@1.0.0: {} + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + husky@8.0.3: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + icss-utils@5.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + identity-obj-proxy@3.0.0: + dependencies: + harmony-reflect: 1.6.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + image-size@0.5.5: + optional: true + + immutable@5.1.3: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@4.0.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.1: {} + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + inline-style-parser@0.1.1: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + intl-messageformat@10.7.16: + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/icu-messageformat-parser': 2.11.2 + tslib: 2.8.1 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + ipaddr.js@1.9.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: {} + + is-arrow-function@2.0.3: + dependencies: + is-callable: 1.2.7 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-buffer@2.0.5: {} + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-decimal@2.0.1: {} + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-equal@1.7.0: + dependencies: + es-get-iterator: 1.1.3 + es-to-primitive: 1.3.0 + functions-have-names: 1.2.3 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + is-arrow-function: 2.0.3 + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-generator-function: 1.1.0 + is-number-object: 1.1.1 + is-regex: 1.2.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + isarray: 2.0.5 + object-inspect: 1.13.4 + object.entries: 1.1.9 + object.getprototypeof: 1.0.7 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@1.1.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-text-path@1.0.1: + dependencies: + text-extensions: 1.9.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-what@3.14.1: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + isomorphic-rslog@0.0.7: {} + + isomorphic-unfetch@4.0.2: + dependencies: + node-fetch: 3.3.2 + unfetch: 5.0.0 + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.27.7 + '@babel/parser': 7.27.7 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istextorbinary@2.6.0: + dependencies: + binaryextensions: 2.3.0 + editions: 2.3.1 + textextensions: 2.6.0 + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + javascript-stringify@2.1.0: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 24.0.7 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-regex-util@29.6.3: {} + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 24.0.7 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-worker@27.5.1: + dependencies: + '@types/node': 24.0.7 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.4.3: + dependencies: + '@types/node': 24.0.7 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 24.0.7 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@1.21.7: {} + + jju@1.4.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@2.5.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json2mq@0.2.0: + dependencies: + string-convert: 0.2.1 + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@6.0.3: {} + + kleur@4.1.5: {} + + known-css-properties@0.26.0: {} + + kolorist@1.8.0: {} + + leac@0.6.0: {} + + less-loader@12.3.0(less@4.3.0)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + less: 4.3.0 + optionalDependencies: + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + + less-plugin-resolve@1.0.2: + dependencies: + enhanced-resolve: 5.18.2 + + less@4.1.3: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + less@4.3.0: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-darwin-arm64@1.22.1: + optional: true + + lightningcss-darwin-x64@1.22.1: + optional: true + + lightningcss-freebsd-x64@1.22.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.22.1: + optional: true + + lightningcss-linux-arm64-gnu@1.22.1: + optional: true + + lightningcss-linux-arm64-musl@1.22.1: + optional: true + + lightningcss-linux-x64-gnu@1.22.1: + optional: true + + lightningcss-linux-x64-musl@1.22.1: + optional: true + + lightningcss-win32-x64-msvc@1.22.1: + optional: true + + lightningcss@1.22.1: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.22.1 + lightningcss-darwin-x64: 1.22.1 + lightningcss-freebsd-x64: 1.22.1 + lightningcss-linux-arm-gnueabihf: 1.22.1 + lightningcss-linux-arm64-gnu: 1.22.1 + lightningcss-linux-arm64-musl: 1.22.1 + lightningcss-linux-x64-gnu: 1.22.1 + lightningcss-linux-x64-musl: 1.22.1 + lightningcss-win32-x64-msvc: 1.22.1 + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + lint-staged@13.3.0: + dependencies: + chalk: 5.3.0 + commander: 11.0.0 + debug: 4.3.4 + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 6.6.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + + listr2@6.6.1: + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.4.1 + wrap-ansi: 8.1.0 + + loader-runner@4.2.0: {} + + loader-runner@4.3.0: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + loader-utils@3.3.1: {} + + local-pkg@0.4.3: {} + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.get@4.4.2: {} + + lodash.isequal@4.5.0: {} + + lodash.isfunction@3.0.9: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.throttle@4.1.1: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-update@5.0.1: + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-cache@7.18.3: {} + + lz-string@1.5.0: {} + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + mathml-tag-names@2.1.3: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.0.5 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + mdast-util-definitions@5.1.2: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + unist-util-visit: 4.1.2 + + mdast-util-directive@2.2.4: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-visit-parents: 5.1.3 + transitivePeerDependencies: + - supports-color + + mdast-util-find-and-replace@2.2.2: + dependencies: + '@types/mdast': 3.0.15 + escape-string-regexp: 5.0.0 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + mdast-util-from-markdown@1.3.1: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + decode-named-character-reference: 1.2.0 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + + mdast-util-frontmatter@1.0.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + micromark-extension-frontmatter: 1.1.1 + + mdast-util-gfm-autolink-literal@1.0.3: + dependencies: + '@types/mdast': 3.0.15 + ccount: 2.0.1 + mdast-util-find-and-replace: 2.2.2 + micromark-util-character: 1.2.0 + + mdast-util-gfm-footnote@1.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + micromark-util-normalize-identifier: 1.1.0 + + mdast-util-gfm-strikethrough@1.0.3: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + + mdast-util-gfm-table@1.0.7: + dependencies: + '@types/mdast': 3.0.15 + markdown-table: 3.0.4 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@1.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + + mdast-util-gfm@2.0.2: + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-gfm-autolink-literal: 1.0.3 + mdast-util-gfm-footnote: 1.0.2 + mdast-util-gfm-strikethrough: 1.0.3 + mdast-util-gfm-table: 1.0.7 + mdast-util-gfm-task-list-item: 1.0.2 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@1.3.2: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@1.3.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@3.0.1: + dependencies: + '@types/mdast': 3.0.15 + unist-util-is: 5.2.1 + + mdast-util-to-hast@12.3.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.2.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + + mdast-util-to-markdown@1.5.0: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + + mdast-util-to-string@3.2.0: + dependencies: + '@types/mdast': 3.0.15 + + mdn-data@2.0.14: {} + + mdn-data@2.0.4: {} + + media-typer@0.3.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + + meow@8.1.2: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + meow@9.0.0: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromark-core-commonmark@1.1.0: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-directive@2.2.1: + dependencies: + micromark-factory-space: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + parse-entities: 4.0.2 + uvu: 0.5.6 + + micromark-extension-frontmatter@1.1.1: + dependencies: + fault: 2.0.1 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-extension-gfm-autolink-literal@1.0.5: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-extension-gfm-footnote@1.1.2: + dependencies: + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-strikethrough@1.0.7: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-table@1.0.7: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-tagfilter@1.0.2: + dependencies: + micromark-util-types: 1.1.0 + + micromark-extension-gfm-task-list-item@1.0.5: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm@2.0.3: + dependencies: + micromark-extension-gfm-autolink-literal: 1.0.5 + micromark-extension-gfm-footnote: 1.1.2 + micromark-extension-gfm-strikethrough: 1.0.7 + micromark-extension-gfm-table: 1.0.7 + micromark-extension-gfm-tagfilter: 1.0.2 + micromark-extension-gfm-task-list-item: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-destination@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-label@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-factory-space@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + + micromark-factory-title@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-whitespace@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-character@1.2.0: + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-chunked@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-classify-character@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-combine-extensions@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-decode-numeric-character-reference@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-decode-string@1.1.0: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + + micromark-util-encode@1.1.0: {} + + micromark-util-html-tag-name@1.2.0: {} + + micromark-util-normalize-identifier@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-resolve-all@1.1.0: + dependencies: + micromark-util-types: 1.1.0 + + micromark-util-sanitize-uri@1.2.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + + micromark-util-subtokenize@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-util-symbol@1.1.0: {} + + micromark-util-types@1.1.0: {} + + micromark@3.2.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.1(supports-color@5.5.0) + decode-named-character-reference: 1.2.0 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.5: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + miller-rabin@4.0.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-indent@1.0.1: {} + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.0.8: + dependencies: + brace-expansion: 1.1.12 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mri@1.2.0: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + multipipe@1.0.2: + dependencies: + duplexer2: 0.1.4 + object-assign: 4.1.1 + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.11: {} + + natural-compare-lite@1.4.0: {} + + natural-compare@1.4.0: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-abort-controller@3.1.1: {} + + node-addon-api@7.1.1: + optional: true + + node-domexception@1.0.0: {} + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-int64@0.4.0: {} + + node-libs-browser-okam@2.2.5: + dependencies: + assert-okam: 1.5.0 + browserify-zlib: 0.2.0 + buffer-okam: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.1 + domain-browser: 1.2.0 + events-okam: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process-okam: 0.11.10 + punycode-okam: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.8 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder-okam: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url-okam: 0.11.1 + util-okam: 0.11.1 + vm-browserify: 1.1.2 + + node-libs-browser@2.2.1: + dependencies: + assert: 1.5.1 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.1 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.8 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.4 + util: 0.11.1 + vm-browserify: 1.1.2 + + node-releases@2.0.19: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.16.1 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nprogress@0.2.0: {} + + nth-check@1.0.2: + dependencies: + boolbase: 1.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@0.4.0: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + + object.getownpropertydescriptors@2.1.8: + dependencies: + array.prototype.reduce: 1.0.8 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + gopd: 1.2.0 + safe-array-concat: 1.1.3 + + object.getprototypeof@1.0.7: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + get-proto: 1.0.1 + reflect.getprototypeof: 1.0.10 + + object.hasown@1.1.4: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + obuf@1.1.2: {} + + omit-deep@0.3.0: + dependencies: + is-plain-object: 2.0.4 + unset-value: 0.1.2 + + on-exit-leak-free@0.2.0: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@9.1.0: + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + os-browserify@0.3.0: {} + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + pako@1.0.11: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-asn1@5.1.7: + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + hash-base: 3.0.5 + pbkdf2: 3.1.3 + safe-buffer: 5.2.1 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.2.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: {} + + parse5@6.0.1: {} + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parseley@0.12.1: + dependencies: + leac: 0.6.0 + peberminta: 0.9.0 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + path-browserify@0.0.1: {} + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@0.1.12: {} + + path-to-regexp@1.7.0: + dependencies: + isarray: 0.0.1 + + path-type@4.0.0: {} + + pbkdf2@3.1.3: + dependencies: + create-hash: 1.1.3 + create-hmac: 1.1.7 + ripemd160: 2.0.1 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + to-buffer: 1.2.1 + + peberminta@0.9.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pify@4.0.1: + optional: true + + pino-abstract-transport@0.5.0: + dependencies: + duplexify: 4.1.3 + split2: 4.2.0 + + pino-std-serializers@4.0.0: {} + + pino@7.11.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + + pirates@4.0.7: {} + + piscina@4.9.2: + optionalDependencies: + '@napi-rs/nice': 1.0.1 + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + + pluralize@8.0.0: {} + + pnpm@10.12.4: {} + + point-in-polygon@1.1.0: {} + + possible-typed-array-names@1.1.0: {} + + postcss-attribute-case-insensitive@5.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-clamp@4.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-color-functional-notation@4.2.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-color-hex-alpha@8.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-color-rebeccapurple@7.1.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-custom-media@8.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-custom-properties@12.1.11(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-custom-selectors@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-dir-pseudo-class@6.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-double-position-gradients@3.1.2(postcss@8.5.6): + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-env-function@4.0.6(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-flexbugs-fixes@5.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-focus-visible@6.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-focus-within@5.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-font-variant@5.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-gap-properties@3.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-image-set-function@4.0.7(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-initial@4.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-lab-function@4.2.1(postcss@8.5.6): + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-loader@8.1.1(postcss@8.5.6)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + cosmiconfig: 9.0.0(typescript@5.4.2) + jiti: 1.21.7 + postcss: 8.5.6 + semver: 7.7.2 + optionalDependencies: + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + transitivePeerDependencies: + - typescript + + postcss-logical@5.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-media-minmax@5.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-media-query-parser@0.2.3: {} + + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-modules-values@4.0.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + + postcss-nesting@10.2.0(postcss@8.5.6): + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-opacity-percentage@1.1.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-overflow-shorthand@3.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-page-break@3.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-place@7.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-prefix-selector@1.16.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-preset-env@7.5.0(postcss@8.5.6): + dependencies: + '@csstools/postcss-color-function': 1.1.1(postcss@8.5.6) + '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.5.6) + '@csstools/postcss-hwb-function': 1.0.2(postcss@8.5.6) + '@csstools/postcss-ic-unit': 1.0.1(postcss@8.5.6) + '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.5.6) + '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.5.6) + '@csstools/postcss-oklab-function': 1.1.1(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.5.6) + '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.5.6) + '@csstools/postcss-unset-value': 1.0.2(postcss@8.5.6) + autoprefixer: 10.4.21(postcss@8.5.6) + browserslist: 4.25.1 + css-blank-pseudo: 3.0.3(postcss@8.5.6) + css-has-pseudo: 3.0.4(postcss@8.5.6) + css-prefers-color-scheme: 6.0.3(postcss@8.5.6) + cssdb: 6.6.3 + postcss: 8.5.6 + postcss-attribute-case-insensitive: 5.0.2(postcss@8.5.6) + postcss-clamp: 4.1.0(postcss@8.5.6) + postcss-color-functional-notation: 4.2.4(postcss@8.5.6) + postcss-color-hex-alpha: 8.0.4(postcss@8.5.6) + postcss-color-rebeccapurple: 7.1.1(postcss@8.5.6) + postcss-custom-media: 8.0.2(postcss@8.5.6) + postcss-custom-properties: 12.1.11(postcss@8.5.6) + postcss-custom-selectors: 6.0.3(postcss@8.5.6) + postcss-dir-pseudo-class: 6.0.5(postcss@8.5.6) + postcss-double-position-gradients: 3.1.2(postcss@8.5.6) + postcss-env-function: 4.0.6(postcss@8.5.6) + postcss-focus-visible: 6.0.4(postcss@8.5.6) + postcss-focus-within: 5.0.4(postcss@8.5.6) + postcss-font-variant: 5.0.0(postcss@8.5.6) + postcss-gap-properties: 3.0.5(postcss@8.5.6) + postcss-image-set-function: 4.0.7(postcss@8.5.6) + postcss-initial: 4.0.1(postcss@8.5.6) + postcss-lab-function: 4.2.1(postcss@8.5.6) + postcss-logical: 5.0.4(postcss@8.5.6) + postcss-media-minmax: 5.0.0(postcss@8.5.6) + postcss-nesting: 10.2.0(postcss@8.5.6) + postcss-opacity-percentage: 1.1.3(postcss@8.5.6) + postcss-overflow-shorthand: 3.0.4(postcss@8.5.6) + postcss-page-break: 3.0.4(postcss@8.5.6) + postcss-place: 7.0.5(postcss@8.5.6) + postcss-pseudo-class-any-link: 7.1.6(postcss@8.5.6) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.6) + postcss-selector-not: 5.0.0(postcss@8.5.6) + postcss-value-parser: 4.2.0 + + postcss-pseudo-class-any-link@7.1.6(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@6.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-selector-not@5.0.0(postcss@8.5.6): + dependencies: + balanced-match: 1.0.2 + postcss: 8.5.6 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-syntax@0.36.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-plugin-organize-imports@3.2.4(prettier@2.8.8)(typescript@5.4.2): + dependencies: + prettier: 2.8.8 + typescript: 5.4.2 + + prettier-plugin-packagejson@2.4.3(prettier@2.8.8): + dependencies: + sort-package-json: 2.4.1 + synckit: 0.8.5 + optionalDependencies: + prettier: 2.8.8 + + prettier-plugin-packagejson@2.5.17(prettier@2.8.8): + dependencies: + sort-package-json: 3.3.1 + synckit: 0.11.8 + optionalDependencies: + prettier: 2.8.8 + + prettier@2.8.8: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + + pretty-format@24.9.0: + dependencies: + '@jest/types': 24.9.0 + ansi-regex: 4.1.1 + ansi-styles: 3.2.1 + react-is: 16.13.1 + + prism-react-renderer@1.3.5(react@18.3.1): + dependencies: + react: 18.3.1 + + prism-react-renderer@2.3.1(react@18.3.1): + dependencies: + '@types/prismjs': 1.26.5 + clsx: 2.1.1 + react: 18.3.1 + + prism-themes@1.9.0: {} + + prismjs@1.30.0: {} + + process-nextick-args@2.0.1: {} + + process-okam@0.11.10: {} + + process-warning@1.0.0: {} + + process@0.11.10: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@6.5.0: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + prr@1.0.1: + optional: true + + public-encrypt@4.0.3: + dependencies: + bn.js: 4.12.2 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + parse-asn1: 5.1.7 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + punycode-okam@1.4.1: {} + + punycode@1.4.1: {} + + punycode@2.3.1: {} + + q@1.5.1: {} + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + query-string@6.14.1: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + querystring-es3@0.2.1: {} + + queue-microtask@1.2.3: {} + + quick-format-unescaped@4.0.4: {} + + quick-lru@4.0.1: {} + + ramda@0.28.0: {} + + ramda@0.29.0: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + randomfill@1.0.4: + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + raw-loader@4.0.2(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + + rc-cascader@3.34.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-select: 14.16.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-checkbox@3.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-collapse@3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-dialog@9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-drawer@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.3.2 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-drawer@7.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-dropdown@4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/trigger': 1.18.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.3.2 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-dropdown@4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/trigger': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/async-validator': 5.0.4 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-footer@0.6.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-image@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-dialog: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-input-number@9.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/mini-decimal': 1.1.0 + classnames: 2.5.1 + rc-input: 1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-input@1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-mentions@2.20.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/trigger': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-input: 1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-textarea: 1.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-menu@9.12.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/trigger': 1.18.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.3.2 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-menu@9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/trigger': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-motion@2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.3.2 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-notification@5.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-overflow@1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.3.2 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-pagination@5.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-picker@4.11.3(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/trigger': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + dayjs: 1.11.13 + + rc-progress@4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-rate@2.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-resize-observer@1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.3.2 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + resize-observer-polyfill: 1.5.1 + + rc-segmented@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-select@14.16.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/trigger': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-slider@11.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-steps@6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-switch@4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-table@7.51.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/context': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tabs@12.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.3.2 + rc-dropdown: 4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.12.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tabs@15.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-dropdown: 4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-textarea@1.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-input: 1.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tooltip@6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + '@rc-component/trigger': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.3.2 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tree-select@5.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-select: 14.16.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tree@5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.3.2 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-upload@4.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-util@5.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.22.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + + rc-util@5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + + rc-virtual-list@3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + classnames: 2.3.2 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-colorful@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-copy-to-clipboard@5.1.0(react@18.3.1): + dependencies: + copy-to-clipboard: 3.3.3 + prop-types: 15.8.1 + react: 18.3.1 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-error-boundary@4.1.2(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.6 + react: 18.3.1 + + react-error-overlay@6.0.9: {} + + react-fast-compare@3.2.2: {} + + react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.23.6 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + + react-intersection-observer@9.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + react-intl@7.1.11(react@18.3.1)(typescript@5.4.2): + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/icu-messageformat-parser': 2.11.2 + '@formatjs/intl': 3.1.6(typescript@5.4.2) + '@types/hoist-non-react-statics': 3.3.6 + '@types/react': 18.3.23 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.7.16 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + typescript: 5.4.2 + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-loading-skeleton@3.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + + react-merge-refs@1.1.0: {} + + react-refresh@0.14.0: {} + + react-refresh@0.14.2: {} + + react-router-dom@6.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + history: 5.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.3.0(react@18.3.1) + + react-router@6.3.0(react@18.3.1): + dependencies: + history: 5.3.0 + react: 18.3.1 + + react-simple-code-editor@0.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + reactflow@11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@reactflow/background': 11.3.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reactflow/controls': 11.2.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reactflow/core': 11.11.4(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reactflow/minimap': 11.7.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reactflow/node-resizer': 2.2.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@reactflow/node-toolbar': 1.3.14(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@1.0.34: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + real-require@0.1.0: {} + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.1.1: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + rehype-autolink-headings@6.1.1: + dependencies: + '@types/hast': 2.3.10 + extend: 3.0.2 + hast-util-has-property: 2.0.1 + hast-util-heading-rank: 2.1.1 + hast-util-is-element: 2.1.3 + unified: 10.1.2 + unist-util-visit: 4.1.2 + + rehype-remove-comments@5.0.0: + dependencies: + '@types/hast': 2.3.10 + hast-util-is-conditional-comment: 2.0.0 + unified: 10.1.2 + unist-util-filter: 4.0.1 + + rehype-stringify@9.0.4: + dependencies: + '@types/hast': 2.3.10 + hast-util-to-html: 8.0.4 + unified: 10.1.2 + + relateurl@0.2.7: {} + + remark-directive@2.0.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-directive: 2.2.4 + micromark-extension-directive: 2.2.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + + remark-frontmatter@4.0.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-frontmatter: 1.0.1 + micromark-extension-frontmatter: 1.1.1 + unified: 10.1.2 + + remark-gfm@3.0.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-gfm: 2.0.2 + micromark-extension-gfm: 2.0.3 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + + remark-parse@10.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + + remark-rehype@10.1.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-to-hast: 12.3.0 + unified: 10.1.2 + + rename-keys@1.2.0: {} + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + reselect@4.1.8: {} + + resize-observer-polyfill@1.5.1: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-global@1.0.0: + dependencies: + global-dirs: 0.1.1 + + resolve-pkg-maps@1.0.0: {} + + resolve@1.19.0: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.1: + dependencies: + glob: 10.4.5 + + ripemd160@2.0.1: + dependencies: + hash-base: 2.0.2 + inherits: 2.0.4 + + ripemd160@2.0.2: + dependencies: + hash-base: 3.0.5 + inherits: 2.0.4 + + rollup-plugin-visualizer@5.9.0(rollup@3.29.5): + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.7.2 + optionalDependencies: + rollup: 3.29.5 + + rollup@3.29.5: + optionalDependencies: + fsevents: 2.3.3 + + run-applescript@5.0.0: + dependencies: + execa: 5.1.1 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + sass-loader@16.0.5(sass@1.89.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + neo-async: 2.6.2 + optionalDependencies: + sass: 1.89.2 + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + + sass@1.89.2: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.1 + + sax@1.2.4: {} + + sax@1.4.1: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.2: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + scroll-into-view-if-needed@3.1.0: + dependencies: + compute-scroll-into-view: 3.1.1 + + selderee@0.11.0: + dependencies: + parseley: 0.12.1 + + select-hose@2.0.0: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + semver@7.7.2: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + setimmediate@1.0.5: {} + + setprototypeof@1.2.0: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + shallowequal@1.1.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sitemap@7.1.2: + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.4.1 + + slash@3.0.0: {} + + slash@4.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + sonic-boom@2.8.0: + dependencies: + atomic-sleep: 1.0.0 + + sort-object-keys@1.1.3: {} + + sort-package-json@2.4.1: + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.1 + git-hooks-list: 3.2.0 + globby: 13.2.2 + is-plain-obj: 4.1.0 + sort-object-keys: 1.1.3 + + sort-package-json@3.3.1: + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.1 + git-hooks-list: 4.1.1 + is-plain-obj: 4.1.0 + semver: 7.7.2 + sort-object-keys: 1.1.3 + tinyglobby: 0.2.14 + + source-map-js@1.2.1: {} + + source-map-resolve@0.6.0: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + space-separated-tokens@2.0.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.4.1(supports-color@5.5.0) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.4.1(supports-color@5.5.0) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + split-on-first@1.1.0: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + stable@0.1.8: {} + + stackframe@1.3.4: {} + + statuses@2.0.1: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + stream-browserify@2.0.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + stream-http@2.8.3: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.8 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + + stream-shift@1.0.3: {} + + strict-uri-encode@2.0.0: {} + + string-argv@0.3.2: {} + + string-convert@0.2.1: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder-okam@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + style-search@0.1.0: {} + + style-to-object@0.4.4: + dependencies: + inline-style-parser: 0.1.1 + + styled-components@5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1): + dependencies: + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) + '@babel/traverse': 7.27.7(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.3.1 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.4(@babel/core@7.27.7)(styled-components@5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(supports-color@5.5.0) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + shallowequal: 1.1.0 + supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' + + stylelint-config-recommended@7.0.0(stylelint@14.16.1): + dependencies: + stylelint: 14.16.1 + + stylelint-config-standard@25.0.0(stylelint@14.16.1): + dependencies: + stylelint: 14.16.1 + stylelint-config-recommended: 7.0.0(stylelint@14.16.1) + + stylelint@14.16.1: + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2) + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 7.1.0 + css-functions-list: 3.2.3 + debug: 4.4.1(supports-color@5.5.0) + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 5.3.2 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.26.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 6.0.0(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + supports-hyperlinks: 2.3.0 + svg-tags: 1.0.0 + table: 6.9.0 + v8-compile-cache: 2.4.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + stylis@4.2.0: {} + + stylis@4.3.6: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.10 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-parser@2.0.4: {} + + svg-pathdata@5.0.5: {} + + svg-tags@1.0.0: {} + + svgo-browser@1.3.8: + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + stable: 0.1.8 + + svgson@4.1.0: + dependencies: + deep-rename-keys: 0.2.1 + omit-deep: 0.3.0 + xml-reader: 2.4.3 + + synckit@0.11.8: + dependencies: + '@pkgr/core': 0.2.7 + + synckit@0.8.5: + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.8.1 + + systemjs@6.15.1: {} + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tapable@2.2.2: {} + + terser-webpack-plugin@5.3.14(@swc/core@1.9.2(@swc/helpers@0.5.1))(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + '@jridgewell/trace-mapping': 0.3.27 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.43.1 + webpack: 5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)) + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.1) + + terser@5.43.1: + dependencies: + '@jridgewell/source-map': 0.3.8 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-extensions@1.9.0: {} + + text-table@0.2.0: {} + + textextensions@2.6.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + thread-stream@0.15.2: + dependencies: + real-require: 0.1.0 + + throttle-debounce@5.0.2: {} + + through2@0.4.2: + dependencies: + readable-stream: 1.0.34 + xtend: 2.1.2 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + + timers-browserify@2.0.12: + dependencies: + setimmediate: 1.0.5 + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + + titleize@3.0.0: {} + + tmpl@1.0.5: {} + + to-arraybuffer@1.0.1: {} + + to-buffer@1.2.1: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toggle-selection@1.0.6: {} + + toidentifier@1.0.1: {} + + transformation-matrix@2.16.1: {} + + traverse@0.6.6: {} + + trim-lines@3.0.1: {} + + trim-newlines@3.0.1: {} + + trim-right@1.0.1: {} + + trough@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@5.4.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.5.1 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.1) + + ts-toolbelt@9.6.0: {} + + tsconfig-paths@4.0.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tsutils@3.21.0(typescript@5.4.2): + dependencies: + tslib: 1.14.1 + typescript: 5.4.2 + + tsx@3.12.2: + dependencies: + '@esbuild-kit/cjs-loader': 2.4.4 + '@esbuild-kit/core-utils': 3.3.2 + '@esbuild-kit/esm-loader': 2.6.5 + optionalDependencies: + fsevents: 2.3.3 + + tty-browserify@0.0.0: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.18.1: {} + + type-fest@0.20.2: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@1.4.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + types-ramda@0.29.10: + dependencies: + ts-toolbelt: 9.6.0 + + typescript-transform-paths@3.4.7(typescript@5.4.2): + dependencies: + minimatch: 3.1.2 + typescript: 5.4.2 + + typescript@5.4.2: {} + + typescript@5.8.3: {} + + umi@4.4.11(@babel/core@7.27.7)(@types/node@20.5.1)(@types/react@18.3.23)(eslint@8.57.1)(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(sass@1.89.2)(stylelint@14.16.1)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))): + dependencies: + '@babel/runtime': 7.23.6 + '@umijs/bundler-utils': 4.4.11 + '@umijs/bundler-webpack': 4.4.11(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + '@umijs/core': 4.4.11 + '@umijs/lint': 4.4.11(eslint@8.57.1)(stylelint@14.16.1)(typescript@5.4.2) + '@umijs/preset-umi': 4.4.11(@types/node@20.5.1)(@types/react@18.3.23)(lightningcss@1.22.1)(rollup@3.29.5)(sass@1.89.2)(terser@5.43.1)(type-fest@1.4.0)(typescript@5.4.2)(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + '@umijs/renderer-react': 4.4.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@umijs/server': 4.4.11 + '@umijs/test': 4.4.11(@babel/core@7.27.7) + '@umijs/utils': 4.4.11 + prettier-plugin-organize-imports: 3.2.4(prettier@2.8.8)(typescript@5.4.2) + prettier-plugin-packagejson: 2.4.3(prettier@2.8.8) + transitivePeerDependencies: + - '@babel/core' + - '@rspack/core' + - '@types/node' + - '@types/react' + - '@types/webpack' + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' + - eslint + - jest + - lightningcss + - node-sass + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - prettier + - react + - react-dom + - rollup + - sass + - sass-embedded + - sockjs-client + - stylelint + - stylus + - sugarss + - supports-color + - terser + - type-fest + - typescript + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@7.8.0: {} + + unfetch@5.0.0: {} + + unified@10.1.2: + dependencies: + '@types/unist': 2.0.11 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + + unist-util-filter@4.0.1: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + unist-util-generated@2.0.1: {} + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.11 + + unist-util-position@4.0.4: + dependencies: + '@types/unist': 2.0.11 + + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.11 + + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unquote@1.1.1: {} + + unset-value@0.1.2: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + untildify@4.0.0: {} + + update-browserslist-db@1.1.3(browserslist@4.25.1): + dependencies: + browserslist: 4.25.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-okam@0.11.1: + dependencies: + punycode: 1.4.1 + qs: 6.14.0 + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.14.0 + + use-debouncy@4.6.0(react@18.3.1): + dependencies: + react: 18.3.1 + + use-isomorphic-layout-effect@1.2.1(@types/react@18.3.23)(react@18.3.1): + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.23 + + use-sync-external-store@1.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + + util-deprecate@1.0.2: {} + + util-okam@0.11.1: + dependencies: + inherits: 2.0.3 + + util.promisify@1.0.1: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.0 + has-symbols: 1.1.0 + object.getownpropertydescriptors: 2.1.8 + + util@0.10.3: + dependencies: + inherits: 2.0.1 + + util@0.10.4: + dependencies: + inherits: 2.0.3 + + util@0.11.1: + dependencies: + inherits: 2.0.3 + + utila@0.4.0: {} + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + + uvu@0.5.6: + dependencies: + dequal: 2.0.3 + diff: 5.2.0 + kleur: 4.1.5 + sade: 1.8.1 + + v8-compile-cache-lib@3.0.1: {} + + v8-compile-cache@2.3.0: {} + + v8-compile-cache@2.4.0: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validator@13.15.15: {} + + vanilla-jsoneditor@0.16.1: {} + + vary@1.1.2: {} + + vfile-location@4.1.0: + dependencies: + '@types/unist': 2.0.11 + vfile: 5.3.7 + + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.11 + unist-util-stringify-position: 3.0.3 + + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.11 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + + vite@4.5.2(@types/node@20.5.1)(less@4.1.3)(lightningcss@1.22.1)(sass@1.89.2)(terser@5.43.1): + dependencies: + esbuild: 0.18.20 + postcss: 8.5.6 + rollup: 3.29.5 + optionalDependencies: + '@types/node': 20.5.1 + fsevents: 2.3.3 + less: 4.1.3 + lightningcss: 1.22.1 + sass: 1.89.2 + terser: 5.43.1 + + vm-browserify@1.1.2: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + watchpack@2.4.4: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + web-namespaces@2.0.1: {} + + web-streams-polyfill@3.3.3: {} + + webpack-5-chain@8.0.1: + dependencies: + deepmerge: 1.5.2 + javascript-stringify: 2.1.0 + + webpack-sources@3.3.3: {} + + webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1)): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + browserslist: 4.25.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.2 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.2 + terser-webpack-plugin: 5.3.14(@swc/core@1.9.2(@swc/helpers@0.5.1))(webpack@5.99.9(@swc/core@1.9.2(@swc/helpers@0.5.1))) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + xml-lexer@0.2.2: + dependencies: + eventemitter3: 2.0.3 + + xml-reader@2.4.3: + dependencies: + eventemitter3: 2.0.3 + xml-lexer: 0.2.2 + + xtend@2.1.2: + dependencies: + object-keys: 0.4.0 + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yaml@2.3.1: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + z-schema@5.0.5: + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.15.15 + optionalDependencies: + commander: 9.5.0 + + zod-validation-error@2.1.0(zod@3.25.67): + dependencies: + zod: 3.25.67 + + zod@3.25.67: {} + + zustand@4.5.7(@types/react@18.3.23)(react@18.3.1): + dependencies: + use-sync-external-store: 1.5.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + react: 18.3.1 + + zwitch@2.0.4: {} diff --git a/packages/inula2-ui2/inulaUI/src/button/index.md b/packages/inula2-ui2/inulaUI/src/button/index.md new file mode 100644 index 00000000..fc52cb70 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/button/index.md @@ -0,0 +1,245 @@ +# Button 按钮组件 + +支持五种类型和四种状态属性。 + +## 何时使用 + +标记了一个(或封装一组)操作命令,响应用户点击行为,触发相应的业务逻辑。 + +在 inula-ui 中我们提供了五种按钮。 + +- 🔵 主按钮:用于主行动点,一个操作区域只能有一个主按钮。 +- ⚪️ 默认按钮:用于没有主次之分的一组行动点。 +- 😶 虚线按钮:常用于添加操作。 +- 🔤 文本按钮:用于最次级的行动点。 +- 🔗 链接按钮:一般用于链接,即导航至某位置。 + +以及四种状态属性与上面配合使用。 + +- ⚠️ 危险:删除/移动/修改权限等危险操作,一般需要二次确认。 +- 👻 幽灵:用于背景色比较复杂的地方,常用在首页/产品页等展示场景。 +- 🚫 禁用:行动点不可用的时候,一般需要文案解释。 +- 🔃 加载中:用于异步操作等待反馈的时候,也可以避免多次提交。 + +## 代码演示 + + +
+ +

基本

+

展示按钮的五种类型:主按钮、默认按钮、虚线按钮、文本按钮、链接按钮、变体样式。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button} from 'inula-ui'; + +function ButtonDemo() { + let loading = false; + return ( +
+ + + + + + + + + +
+ ); +} +export default ButtonDemo; + +``` + +
+
+ + + +
+ +

危险

+

展示五种类型按钮的'危险'状态用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button} from 'inula-ui'; + +function ButtonDemo() { + let loading = false; + return ( +
+ + + + + +
+ ); +} +export default ButtonDemo; + +``` + +
+
+ + + +
+ +

幽灵

+

展示按钮的'幽灵'状态,包括主按钮、默认按钮和危险主按钮的幽灵样式。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button} from 'inula-ui'; + +function ButtonDemo() { + return ( +
+ + + +
+ ); +} +export default ButtonDemo; +``` + +
+
+ + + +
+ +

禁用

+

展示五种类型按钮的'禁用'状态用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button} from 'inula-ui'; + +function ButtonDemo() { + return ( +
+ + + + + +
+ ); +} +export default ButtonDemo; +``` + +
+
+ + + +
+ +

加载中

+

展示五种类型按钮的'加载中'状态用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button} from 'inula-ui'; + +function ButtonDemo() { + return ( +
+ + + + + +
+ ); +} +export default ButtonDemo; +``` + +
+
+ + + +
+ +

交互加载

+

演示点击按钮后进入加载中状态,1.5秒后恢复。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button} from 'inula-ui'; + +function ButtonDemo() { + let loading = false; + return ( +
+ +
+ ); +} +export default ButtonDemo; +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| type | 按钮类型 | `string` | `primary` / `default` / `dashed` / `text` / `link` | `default` | +| variant | 视觉变体 | `string` | `outlined` / `filled` / `borderless` / `underlined` | `outlined` | +| danger | 危险状态样式 | `boolean` | - | `false` | +| ghost | 幽灵样式(深色背景常用) | `boolean` | - | `false` | +| disabled | 禁用状态 | `boolean` | - | `false` | +| loading | 加载中状态(禁用且展示旋转图标) | `boolean` | - | `false` | +| htmlType | 原生按钮类型 | `string` | `button` / `submit` / `reset` | `button` | +| onClick | 点击回调 | `(e) => void` | - | - | +| children | 按钮内容 | `ReactNode` | - | - | + +说明:其余属性会透传给原生 `button` 元素(如 `title`、`id`、`aria-*` 等)。 diff --git a/packages/inula2-ui2/inulaUI/src/card/index.md b/packages/inula2-ui2/inulaUI/src/card/index.md new file mode 100644 index 00000000..c588e9f6 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/card/index.md @@ -0,0 +1,508 @@ +# Card 卡片组件 + +## 何时使用 + +卡片容器,可承载文字、列表、图片、段落,常用于后台概览页面。 + +## 代码演示 + + +
+ +

基本

+

完整的Card由header、body、footer三部分组成,支持两种大小、两种边框样式、两种hover动效

+ +
+ 查看示例代码 + +```jsx | pure +import { Card, Tag, Icon } from 'inula-ui'; + +const actions = [ + , + , + , +]; + +const CardDemo = () => { + return ( +
+ + 完整Card布局 + +
+ More
} + cover={ + example + } + actions={actions} + > +
Card content
+ Card content + Card content + +
+ + 不同大小、边框、hover动效的Card + +
+ +
默认型号,无hover动效
+
+ +
小号,有hover动效
+
+
+
+ ); +}; + +export default CardDemo; +``` + + + + + + +
+ +

加载、嵌套

+

支持受控加载、嵌套卡片

+ +
+ 查看示例代码 + +```jsx | pure +import { Card, Tag, Switch, Icon } from 'inula-ui'; + +const actions = [ + , + , + , +]; + +const CardDemo = () => { + let loading = false; + return ( +
+ + 定义加载内容状态的Card + +
+ More
} + cover={ + example + } + actions={actions} + loading={loading} + > +
Card content
+ Card content + Card content + +
+ { + loading = !loading; + }} + /> + 点击切换内容加载状态 +
+ + 嵌套Card样式 + + +
放在Card下的Card组件样式
+
+
+
+ ); +}; + +export default CardDemo; +``` + + + + + + +
+ +

CardMeta组件

+

CardMeta组件可以快速定义固定布局的内容。

+ +
+ 查看示例代码 + +```jsx | pure +import { Card, Tag, Icon, CardMeta } from 'inula-ui'; + +const actions = [ + , + , + , +]; + +const CardDemo = () => { + return ( +
+ + Meta组件,快速定义内容 + +
+ + } + actions={actions} + > + + } + title="Card title" + description="This is the description" + /> + +
+
+ ); +}; + +export default CardDemo; +``` + +
+
+ + + +
+ +

CardGrid网格型内嵌卡片

+

常见的卡片内容区隔模式。

+ +
+ 查看示例代码 + +```jsx | pure +import { Card, CardGrid, Tag } from 'inula-ui'; + +const CardDemo = () => { + return ( +
+ + Grid组件,网格型内嵌 + +
+ + + Content + + + Content + + + Content + + + Content + + + Content + + + Content + + + Content + + +
+
+ ); +}; + +export default CardDemo; +``` + +
+
+ + + +
+ +

Tabs切换卡片

+

可以定义带标签的卡片。

+ +
+ 查看示例代码 + +```jsx | pure +import { Card, Tag } from 'inula-ui'; + +const tabList = [ + { + key: 'tab1', + tab: 'tab1', + }, + { + key: 'tab2', + tab: 'tab2', + }, +]; + +const contentList = { + tab1:

content1

, + tab2:

content2

, +}; + +const tabListNoTitle = [ + { + key: 'article', + label: 'article', + }, + { + key: 'app', + label: 'app', + }, + { + key: 'project', + label: 'project', + }, +]; + +const contentListNoTitle = { + article:

article content

, + app:

app content

, + project:

project content

, +}; + +const CardDemo = () => { + let activeTabKey1 = 'tab1'; + let activeTabKey2 = 'article'; + const onTab1Change = (key) => { + activeTabKey1 = key; + }; + + const onTab2Change = (key) => { + activeTabKey2 = key; + }; + + return ( +
+ + 两种传参方式的标签卡片 + +
+ More} + tabList={tabList} + activeTabKey={activeTabKey1} + onTabChange={onTab1Change} + > + {contentList[activeTabKey1]} + +
+
+ More} + onTabChange={onTab2Change} + tabProps={{ + size: 'middle', + }} + > + {contentListNoTitle[activeTabKey2]} + +
+
+ ); +}; + +export default CardDemo; +``` + +
+
+ + +## API + +### Card + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +| ------------------- | ------------------------------------------------------ | ------------------------------------------------------------------- | ---------------------------- | ------------ | +| type | 卡片类型 | `string` | `'default' \| 'inner'` | `'default'` | +| size | 卡片大小 | `string` | `'small' \| 'default'` | `'default'` | +| loading | 卡片内容加载 | `boolean` | - | `false` | +| variant | 边框样式 | `string` | `'outlined' \| 'borderless'` | `'outlined'` | +| hoverable | 悬停浮空 | `boolean` | - | `false` | +| gridbox | 网格布局,只有`children`全为`CardGrid`时才能传入`true` | `boolean` | - | `false` | +| tabList | tab 标签 | `{ key: string, tab: string }[] \| { key: string,label: string }[]` | - | - | +| tabProps | tab 相关属性 | `object` | - | - | +| activeTabKey | tab 选中标签 | `string` | - | - | +| defaultActiveTabKey | tab 初始选中标签 | `string` | - | - | +| onTabChange | tab 状态改变事件 | `function(key)` | - | - | +| title | 头部 title | `string` | - | - | +| extra | 头部额外内容 | `node` | - | - | +| cover | 卡片封面,位于 header 下方 | `node` | - | - | +| actions | 卡片操作栏 | `node[] \|string[]` | - | - | +| children | 卡片内容 | `node` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | +| ...rest | 其他属性 | - | - | - | + +### CardMeta + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +| ----------- | ---------- | --------------- | ------ | ------ | +| avatar | 头像型 | `node` | - | - | +| title | 标题 | `string\| node` | - | - | +| description | 介绍 | `string\|node` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | + +### CardGrid + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +| --------- | ------------------ | --------------- | ------ | ------ | +| hoverable | hover 悬浮动画效果 | `string` | - | `true` | +| children | 卡片内容 | `node` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | +| ...rest | 其他属性 | - | - | - | + +说明: + +- 完整布局 Card 的 header 包含`title、extra`,如果为标签卡片还包含`tabs`,body 包含`cover`封面、`children`内容,footer 为`actions`。 +- 网格布局属性`gridbox`只有孩子全为`CardGrid`才会生效。 diff --git a/packages/inula2-ui2/inulaUI/src/checkbox/index.md b/packages/inula2-ui2/inulaUI/src/checkbox/index.md new file mode 100644 index 00000000..c03c1e71 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/checkbox/index.md @@ -0,0 +1,253 @@ +# Checkbox 多选框 + +收集用户的多项选择。 + +## 何时使用 + +在一组可选项中进行多项选择时; + +单独使用可以表示两种状态之间的切换,和 switch 类似。区别在于切换 switch 会直接触发状态改变,而 checkbox 一般用于状态标记,需要和提交操作配合。 + +## 代码演示 + + +
+ +

基本Checkbox

+

选中、默认选中、禁用、indeterminate样式

+ +
+ 查看示例代码 + +```jsx | pure +import {Checkbox,Tag} from 'inula-ui'; + +const CheckboxDemo = () => { + return ( +
+
+ 基本状态 + 普通Checkbox + 选中 + 默认选中 +
+
+ indeterminate复选框样式 + indeterminate按钮 + + indeterminate选中 + +
+
+ 禁用状态 + 禁用未选中 + + 禁用选中 + + + 禁用默认选中 + + + indeterminate按钮禁用 + +
+
+ ); +}; + +export default CheckboxDemo; + +``` + +
+
+ + + +
+ +

CheckboxGroup

+

选中、默认选中、禁用、外部受控

+ +
+ 查看示例代码 + +```jsx | pure +import {Tag,CheckboxGroup} from 'inula-ui'; + +const CheckboxDemo = () => { + let checkedList = ["Apple", "Pear"]; + + const options = [ + { label: "Apple", value: "Apple", disabled: true }, + { label: "Pear", value: "Pear" }, + { label: "Orange", value: "Orange" }, + ]; + + const onChange = (list) => { + checkedList = list; + }; + + return ( +
+
+ 定义默认选中和选中: + +
+
+ 只定义默认选中 + +
+
+ 只定义选中 + +
+
+ 全禁用 + +
+
+ 外部受控 + +
+
+ ); +}; + +export default CheckboxDemo; + +``` + +
+
+ + + +
+ +

案例

+

区分全不选、部分选、全选的复选框案例

+ +
+ 查看示例代码 + +```jsx | pure +import {Checkbox, CheckboxGroup} from 'inula-ui'; + +const plainOptions = ['Apple', 'Pear', 'Orange']; +const defaultCheckedList = ['Apple', 'Orange']; + +const CheckboxDemo = () => { + let checkedList = defaultCheckedList; + let checkAll = plainOptions.length === checkedList.length; + let indeterminate = checkedList.length > 0 && checkedList.length < plainOptions.length; + + const onChange = (list) => { + checkedList = list; + }; + + const onCheckAllChange = (e) => { + checkedList = e.target.checked ? plainOptions : []; + }; + + return ( +
+ + Check all + + +
+ ); +}; + +export default CheckboxDemo; +``` + +
+
+ + +## API + +### Checkbox + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| checked | 受控模式下的选中状态 | `boolean` | - | - | +| defaultChecked | 非受控模式下的初始选中状态 | `boolean` | - | `false` | +| disabled | 是否禁用 | `boolean` | - | `false` | +| indeterminate | 半选状态 | `boolean` | - | `false` | +| variant | 复选框形态 | `string` | `outlined` / `filled` / `borderless` / `underlined` | `outlined` | +| onChange | 变化时回调 | `(e) => void` | - | - | +| onBlur | 失去焦点时回调 | `(e) => void` | - | - | +| onFocus | 获得焦点时回调 | `(e) => void` | - | - | +| children | 复选框内容 | `ReactNode` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | + +### CheckboxGroup + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| value | 受控模式下的选中值数组 | `string[]` | - | - | +| defaultValue | 非受控模式下的初始选中值数组 | `string[]` | - | `[]` | +| disabled | 是否禁用所有复选框 | `boolean` | - | `false` | +| options | 选项配置 | `string[] \| { value: string, label: string, disabled?: boolean, className?: string, style?: CSSProperties }[]` | - | - | +| onChange | 变化时回调 | `(checkedValues: string[]) => void` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | + +说明: + +- 受控/非受控:Checkbox 传 `checked` 为受控模式,传 `defaultChecked` 为非受控模式;CheckboxGroup 传 `value` 为受控模式,传 `defaultValue` 为非受控模式。 +- 半选状态:`indeterminate` 为 `true` 时显示半选样式,常用于全选/部分选场景。 +- 选项配置:`options` 可以是字符串数组,也可以是对象数组,对象支持 `value`、`label`、`disabled`、`className`、`style` 属性。 +- 事件回调:Checkbox 的 `onChange` 返回事件对象,CheckboxGroup 的 `onChange` 返回选中值数组。 diff --git a/packages/inula2-ui2/inulaUI/src/datepicker/index.md b/packages/inula2-ui2/inulaUI/src/datepicker/index.md new file mode 100644 index 00000000..3a8a03bb --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/datepicker/index.md @@ -0,0 +1,1256 @@ +# DatePicker 日期选择器 + +用于选择和展示日期 + +## 何时使用 + +当需要选择和展示日期时。 + +## 代码演示 + + +
+ +

基本datepicker

+

支持五种picker、四种varient、两种status

+ +
+ 查看示例代码 + +```jsx | pure +import { DatePicker, Tag } from 'inula-ui'; + +function DatePickerDemo() { + const handleChange = (value) => { + console.log('选择的值:', value); + }; + + return ( +
+
+ 五种picker基本日期选择器 + + + + + +
+ +
+ 不同尺寸日期选择器 + + + +
+ +
+ 禁用状态基本日期选择器 + +
+ +
+ 四种varient变体基本选择器 + + + + +
+ +
+ 两种status基本日期选择器 + + +
+
+ ); +} + +export default DatePickerDemo; +``` + +
+
+ + + +
+ +

needConfirm,showNow,Icon

+

支持needConfirm确认模式,显示今天,自定义图标

+ +
+ 查看示例代码 + +```jsx | pure +import { DatePicker, Tag, Icon } from 'inula-ui'; + +function DatePickerDemo() { + return ( +
+
+ 需要确认的日期选择器 + + + + + +
+ +
+ showNow控制今天按钮显示 + +
+ +
+ 自定义prefix,suffixIcon图标 + } + placeholder="prefix" + /> + } + placeholder="suffixIcon" + /> +
+ +
+ 自定义日历title切换图标 + } + style={{ width: 200 }} + placeholder="prevIcon" + placement="topLeft" + /> + } + style={{ width: 200 }} + placeholder="nextIcon" + placement="topLeft" + /> + } + style={{ width: 200 }} + placeholder="superPrevIcon" + placement="topLeft" + /> + } + style={{ width: 200 }} + placeholder="superNextIcon" + placement="topLeft" + /> +
+
+ ); +} + +export default DatePickerDemo; +``` + +
+
+ + + +
+ +

defaultValue, defaultPickerValue

+

支持日期默认值,日期浮层默认值,定义浮层默认值时,每次点击会自动返回默认值面板

+ +
+ 查看示例代码 + +```jsx | pure +import { DatePicker, Tag } from 'inula-ui'; + +function DatePickerDemo() { + return ( +
+
+ 日期默认值 + + + + + +
+ +
+ calendar浮窗面板默认值 + + + + + +
+
+ ); +} + +export default DatePickerDemo; +``` + +
+
+ + + +
+ +

disbaledDate,minDate,maxDate

+

可以通过自定义字段来限制选中范围

+ +
+ 查看示例代码 + +```jsx | pure +import { DatePicker, Tag } from 'inula-ui'; + +function DatePickerDemo() { + return ( +
+ 范围和选中限制 + + + + + +
+ ); +} + +export default DatePickerDemo; +``` + +
+
+ + + +
+ +

回调、受控、弹出位置

+

可以自定义回调函数、受控控制calendar浮层开关、通过placement控制浮层弹出位置

+ +
+ 查看示例代码 + +```jsx | pure +import { DatePicker, Tag, Button } from 'inula-ui'; + +function DatePickerDemo() { + let open = false; + let defaultOpen = false; + let placement = 'bottomLeft'; + let picker = 'date'; + let size = 'default'; + + const handleControllOpenChange = (isOpen) => { + open = !isOpen; + }; + + const handleChange = (value) => { + console.log('选择的值:', value); + }; + + const handleOpenChange = (isOpen) => { + console.log(isOpen); + }; + + const handlePanleChange = (value, mode) => { + console.log(value, mode); + }; + + const handleClickOk = (value) => { + console.log('ok', value); + }; + + const onBlur = () => { + console.log(111); + }; + + const onFocus = () => { + console.log(111); + }; + + return ( +
+
+ + 回调函数示例 + +
+ + + + + +
+
+ +
+ + open受控示例 + +
+ + +
+
+ +
+ + 日历弹出位置控制 + +
+ +
+
+ + + + + + + + + + + + +
+
+
+ ); +} + +export default DatePickerDemo; +``` + +
+
+ + + +
+ +

rangepicker

+

支持五种picker、四种varient、两种status

+ +
+ 查看示例代码 + +```jsx | pure +import { RangePicker, Tag } from 'inula-ui'; + +function RangePickerDemo() { + const handleChange = (value) => { + console.log('选择的值:', value); + }; + + return ( +
+
+ + 五种picker-range日期选择器 + +
+ + + + + +
+
+ +
+ + 三种size-range日期选择器 + +
+ + + +
+
+ +
+ + 禁用状态range日期选择器 + +
+ +
+
+ +
+ + 四种varient-range日期选择器 + +
+ + + + +
+
+ +
+ + 两种status-range日期选择器 + +
+ + +
+
+
+ ); +} + +export default RangePickerDemo; +``` + +
+
+ + + +
+ +

needConfirm,Icon,defaultValue,范围限制

+

rangepicker也支持确认模式,自定义图标,默认值,日期范围限制

+ +
+ 查看示例代码 + +```jsx | pure +import { RangePicker, Tag, Icon } from 'inula-ui'; + +function RangePickerDemo() { + const handleChange = (value) => { + console.log('选择的值:', value); + }; + + return ( +
+
+ + 需要确认的rang日期选择器 + +
+ + + + + +
+
+ +
+ + 自定义前后缀图标和title切换图标的range日期选择器 + +
+ } + placeholder="prefix" + /> + } + placeholder="suffixIcon" + /> + } + placeholder="prevIcon" + /> + } + placeholder="nextIcon" + /> + } + placeholder="superPrevIcon" + /> + } + placeholder="superNextIcon" + /> +
+
+ +
+ + 带defaultValue的range日期选择器 + +
+ + + + + +
+
+ +
+ + 带日期范围限制的range日期选择器 + +
+ + + + + +
+
+
+ ); +} + +export default RangePickerDemo; +``` + +
+
+ + + +
+ +

回调、受控、弹出位置

+

rangepikcer也可以自定义回调函数、受控控制calendar浮层开关、通过placement控制浮层弹出位置

+ +
+ 查看示例代码 + +```jsx | pure +import { RangePicker, Tag, Button } from 'inula-ui'; + +function RangePickerDemo() { + let open = false; + let defaultOpen = false; + let placement = 'bottomLeft'; + let picker = 'date'; + let size = 'default'; + + const handleControllOpenChange = (isOpen) => { + open = !isOpen; + }; + + const handleChange = (value) => { + console.log('选择的值:', value); + }; + + const handleOpenChange = (isOpen) => { + console.log(isOpen); + }; + + const handlePanleChange = (value, mode) => { + console.log(value, mode); + }; + + const handleClickOk = (value) => { + console.log('ok', value); + }; + + const onBlur = () => { + console.log(111); + }; + + const onFocus = () => { + console.log(111); + }; + + return ( +
+
+ + 自定义回调函数的range日期选择器 + +
+ + + + + +
+
+ +
+ + 浮层弹出受控示例 + +
+ + +
+
+ +
+ + 控制日历弹出位置 + +
+ +
+
+ + + + + + + + + + + + +
+
+
+ ); +} + +export default RangePickerDemo; +``` + +
+
+ + +## API + +### DatePicker + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +| ------------------ | -------------------- | --------------------------- | ---------------------------------------------------------- | -------------- | +| allowClear | 自定义清除按钮 | `node` | - | - | +| showNow | 是否展示“今天”按钮 | `boolean` | - | `true` | +| autoFocus | 自动获取焦点 | `boolean` | - | `false` | +| inputReadOnly | 设置输入框只读 | `boolean` | - | `false` | +| defaultOpen | 是否默认展开控制弹层 | `boolean` | - | `false` | +| disabled | 禁用 | `boolean` | - | `false` | +| disabledDate | 不可选择的日期 | `dateType[]` | - | - | +| onChange | 时间变化回调 | `(value:dateType) => void` | - | - | +| onOk | 点击确定回调 | `(value:dateType) => void` | - | - | +| open | 控制弹层是否展开 | `boolean` | - | - | +| defaultPickerValue | 默认面板日期 | `dateType` | - | - | +| defaultValue | 默认值 | `dateType` | - | - | +| minDate | 最小日期 | `dateType` | - | - | +| maxDate | 最大日期 | `dateType` | - | - | +| needConfirm | 是否需要确认按钮 | `boolean` | - | `false` | +| picker | 设置选择器类型 | `string` | `'date' \| 'week' \| 'month' \| 'quarter'` `year` | `'date'` | +| placeholder | 输入框提示文字 | `string` | - | - | +| placement | 选择器弹出的位置 | `string` | `'bottomLeft' \| 'bottomRight' \| 'topLeft' \| 'topRight'` | `'bottomLeft'` | +| prefix | 自定义前缀 | `node` | - | - | +| prevIcon | 自定义上一个图标-月 | `node` | - | - | +| nextIcon | 自定义下一个图标-月 | `node` | - | - | +| suffixIcon | 自定义后缀 | `node` | - | - | +| superNextIcon | 自定义下一个图标-年 | `node` | - | - | +| superPrevIcon | 自定义上一个图标-年 | `node` | - | - | +| size | input 大小 | `string` | `'large':40px, 'small':24px, 'default':32px` | - | +| status | 设置校验状态 | `string` | `'error' \| 'warning'` - | - | +| disabled | 是否禁用 | `boolean` | - | `false` | +| variant | 复选框形态 | `string` | `'outlined' \| 'filled' \| 'borderless' \| 'underlined'` | `'outlined'` | +| onOpenChange | 变化时回调 | `(value: dateType) => void` | - | - | +| onPanleChange | 变化时回调 | `(value: dateType) => void` | - | - | +| onBlur | 失去焦点时回调 | `(value: dateType) => void` | - | - | +| onFocus | 获得焦点时回调 | `(value: dateType) => void` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | + +### RangePicker + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +| ------------- | -------------------- | --------------------------- | ---------------------------------------------------------- | -------------- | +| allowClear | 自定义清除按钮 | `node` | - | - | +| showNow | 是否展示“今天”按钮 | `boolean` | - | `true` | +| autoFocus | 自动获取焦点 | `boolean` | - | `false` | +| inputReadOnly | 设置输入框只读 | `boolean` | - | `false` | +| defaultOpen | 是否默认展开控制弹层 | `boolean` | - | `false` | +| disabled | 禁用 | `boolean` | - | `false` | +| disabledDate | 不可选择的日期 | `dateType[]` | - | - | +| onChange | 时间变化回调 | `(value:dateType) => void` | - | - | +| onOk | 点击确定回调 | `(value:dateType) => void` | - | - | +| open | 控制弹层是否展开 | `boolean` | - | - | +| order | 是否自动排序 | `boolean` | - | `true` | +| defaultValue | 默认值 | `dateType[]` | - | - | +| minDate | 最小日期 | `dateType` | - | - | +| maxDate | 最大日期 | `dateType` | - | - | +| needConfirm | 是否需要确认按钮 | `boolean` | - | `false` | +| picker | 设置选择器类型 | `string` | `'date' \| 'week' \| 'month' \| 'quarter'` `year` | `'date'` | +| placeholder | 输入框提示文字 | `string[]` | - | - | +| placement | 选择器弹出的位置 | `string` | `'bottomLeft' \| 'bottomRight' \| 'topLeft' \| 'topRight'` | `'bottomLeft'` | +| prefixIcon | 自定义前缀 | `node` | - | - | +| prevIcon | 自定义上一个图标-月 | `node` | - | - | +| nextIcon | 自定义下一个图标-月 | `node` | - | - | +| suffixIcon | 自定义后缀 | `node` | - | - | +| superNextIcon | 自定义下一个图标-年 | `node` | - | - | +| superPrevIcon | 自定义上一个图标-年 | `node` | - | - | +| size | input 大小 | `string` | `'large':40px, 'small':24px, 'default':32px` | - | +| status | 设置校验状态 | `string` | `'error' \| 'warning'` - | - | +| disabled | 是否禁用 | `boolean` | - | `false` | +| variant | 复选框形态 | `string` | `'outlined' \| 'filled' \| 'borderless' \| 'underlined'` | `'outlined'` | +| onOpenChange | 变化时回调 | `(value: dateType) => void` | - | - | +| onPanelChange | 变化时回调 | `(value: dateType) => void` | - | - | +| onBlur | 失去焦点时回调 | `(value: dateType) => void` | - | - | +| onFocus | 获得焦点时回调 | `(value: dateType) => void` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | + +说明: + +- dateType:为对应 picker 日期选择器的格式,`date`为`YYYY-MM-DD`,`week`为`YYYY-WW周`,`month`为`YYYY-MM`,`quarter`为`YYYY-QW`,`year`为`YYYY`。 +- 受控模式:当传入`open`字段时,calendar 浮层的打开会变成受控模式。 diff --git a/packages/inula2-ui2/inulaUI/src/dialog/index.md b/packages/inula2-ui2/inulaUI/src/dialog/index.md new file mode 100644 index 00000000..43d253c2 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/dialog/index.md @@ -0,0 +1,320 @@ +# Modal 对话框 + +展示一个对话框,提供标题、内容区、操作区。 + +## 何时使用 + +需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 Modal 在当前页面正中打开一个浮层,承载相应的操作。 + +## 代码演示 + + +
+ +

普通弹窗

+

演示普通弹窗的用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Modal,Button} from 'inula-ui'; + + +function Demo1() { + let open = false; + + return ( +
+ + open = false} + title="普通弹窗" + > +
这是一个最基础的弹出框内容。
+
+
+ ); +} +export default Demo1; +``` + +
+
+ + + +
+ +

自定义标题样式

+

演示如何自定义弹窗的标题样式

+ +
+ 查看示例代码 + +```jsx | pure +import {Modal,Button} from 'inula-ui'; + +function Demo2() { + let open = false; + + return ( +
+ + 自定义标题样式
} + onClose={() => open = false} + > +
对话框内容。
+ +
+ ); +} +export default Demo2; + +``` + + + + + + +
+ +

自定义内容

+

可以在对话框内放置任何内容。

+ +
+ 查看示例代码 + +```jsx | pure +import {Modal,Button} from 'inula-ui'; + +function Demo3() { + let open = false; + + return ( +
+ + open = false} + > +
+

这是一个自定义内容

+

可以放置任何内容

+ 示例图片 +
+
+
+ ); +} +export default Demo3; +``` + +
+
+ + + +
+ +

自定义页脚

+

演示如何为弹窗添加自定义页脚。

+ +
+ 查看示例代码 + +```jsx | pure +import {Modal,Button} from 'inula-ui'; + +function Demo4() { + let open = false; + + return ( +
+ + 自定义标题样式
} + onClose={() => open = false} + footer={ + + } + > +
对话框内容。
+ +
+ ); +} +export default Demo4; +``` + + + + + + +
+ +

居中弹窗

+

设置 centered 可以让对话框垂直居中。

+ +
+ 查看示例代码 + +```jsx | pure +import {Modal,Button} from 'inula-ui'; + +function Demo5() { + let open = false; + + return ( +
+ + open = false} + centered={true} + > +
对话框内容。
+
+
+ ); +} +export default Demo5; +``` + +
+
+ + + +
+ +

异步关闭弹窗

+

演示如何设置异步关闭弹窗。

+ +
+ 查看示例代码 + +```jsx | pure +import {Modal,Button} from 'inula-ui'; + + +function Demo6() { + let open = false; + + const handleOk = async () => { + try { + await new Promise(resolve => setTimeout(resolve, 2000)); + open = false; + } catch (error) { + console.error('操作失败:', error); + } + }; + return ( +
+ + open = false} + onBeforeClose={handleOk} + title="异步关闭弹窗" + > +
内容
+
+
+ ); +} +export default Demo6; +``` + +
+
+ + + +
+ +

全屏弹窗

+

演示如何设置全屏弹窗。

+ +
+ 查看示例代码 + +```jsx | pure +import {Modal,Button} from 'inula-ui'; + +function Demo7() { + let open = false; + + return ( +
+ + open = false} + title="全屏弹窗" + fullscreen={true} + > +
这是全屏弹窗内容
+
+
+ ); +} +export default Demo7; +``` + +
+
+ +## API + +| 属性 | 说明 | 类型 | 默认值 | +|---|---|---|---| +| open | 是否打开对话框 | `boolean` | - | +| onClose | 关闭回调 | `() => void` | - | +| title | 标题内容 | `ReactNode` | - | +| children | 对话框内容区域 | `ReactNode` | - | +| footer | 自定义页脚;不传则展示默认页脚(取消/确定) | `ReactNode` | - | +| className | 自定义类名 | `string` | `""` | +| style | 行内样式 | `CSSProperties` | `{}` | +| maskClosable | 点击遮罩是否可关闭 | `boolean` | `true` | +| zIndex | 遮罩及弹窗层级 | `number` | `1000` | +| fullscreen | 是否全屏显示 | `boolean` | `false` | +| centered | 是否垂直居中 | `boolean` | `false` | +| onBeforeClose | 关闭前拦截,返回 `false` 可阻止关闭;支持返回 `Promise` | `() => boolean \| Promise` | - | + +说明: + +- 未传 `footer` 时,组件会渲染默认页脚:`取消` 与 `确定` 按钮,均会触发关闭逻辑。 +- `onBeforeClose` 支持同步或异步返回;当返回值为 `false`(或异步返回 `false`)时,取消本次关闭。 +- 异步关闭处理中会进入内部 `closing` 状态:关闭按钮与确认按钮会禁用并显示加载效果。 +- 点击遮罩在 `maskClosable=true` 时触发关闭;点击内容区域不会关闭。 +- 组件通过 `Portal` 渲染至 `#root` 容器,请确保文档中存在对应元素。 diff --git a/packages/inula2-ui2/inulaUI/src/enum.ts b/packages/inula2-ui2/inulaUI/src/enum.ts new file mode 100644 index 00000000..4f216c89 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/enum.ts @@ -0,0 +1,9 @@ +// button按钮 +export enum Button { + demo1 = 'http://localhost:5174/#/button/demo1', + demo2 = 'http://localhost:5174/#/button/demo2', + demo3 = 'http://localhost:5174/#/button/demo3', + demo4 = 'http://localhost:5174/#/button/demo4', + demo5 = 'http://localhost:5174/#/button/demo5', + demo6 = 'http://localhost:5174/#/button/demo6', +} \ No newline at end of file diff --git a/packages/inula2-ui2/inulaUI/src/form/index.md b/packages/inula2-ui2/inulaUI/src/form/index.md new file mode 100644 index 00000000..3df2515f --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/form/index.md @@ -0,0 +1,721 @@ +# Form 表单 + +高性能表单控件,自带数据域管理。包含数据录入、校验以及对应样式。 + +## 何时使用 + +用于创建一个实体或收集信息。 + +需要对输入的数据类型进行校验时。 + +## 代码演示 + + +
+ +

基本

+

基本的表单数据域控制展示,包含布局、初始化、验证、提交。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Input,Form, FormItem, setValueByPath,Checkbox} from 'inula-ui'; + +const Demo1 = () => { + let layout = 'horizontal'; + let user = { + username: '', + password: '', + remember: false, + }; + + const rules = { + username: [ + { required: true, message: '请输入用户名' }, + { min: 3, message: '至少 3 个字符' } + ], + password: [ + { required: true, message: '请输入密码' }, + { min: 6, message: '至少 6 位' } + ], + }; + + const handleFinish = (values) => { + console.log('提交成功:', values); + alert('提交成功: ' + JSON.stringify(values)); + }; + + const handleFailed = ({ errors }) => { + console.log('提交失败:', errors); + // alert('提交失败: ' + JSON.stringify(errors)); + }; + + return ( +
+
+ + setValueByPath(user, 'username', e.target.value)} + /> + + + + setValueByPath(user, 'password', e.target.value)} + /> + + + + { + user.remember = e.target.checked; + }} + > + Remember me + + + + + + +
+
+ ); +}; + +export default Demo1; + +``` + +
+
+ + + +
+ +

表单方法调用

+

展示表单的各种方法调用,包括校验、重置、设置值等。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Input,Form, FormItem, setValueByPath} from 'inula-ui'; + +const Demo = () => { + let layout = 'horizontal'; + let user = { + username: '', + email: '', + phone: '' + }; + + const rules = { + username: [ + { required: true, message: '请输入用户名' }, + { min: 3, message: '至少 3 个字符' } + ], + email: [ + { required: true, message: '请输入邮箱' }, + { pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, message: '邮箱格式不正确' } + ], + phone: [ + { required: true, message: '请输入手机号' }, + { pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确' } + ] + }; + + let formRef = null; + + const handleFinish = (values) => { + console.log('提交成功:', values); + }; + + const handleFailed = ({ errors }) => { + console.log('提交失败:', errors); + }; + + const handleSetValues = () => { + + // 尝试通过重新赋值整个对象来触发响应式更新 + user.username = 'testuser'; + user.email = 'test@example.com'; + user.phone = '13800138000'; + + // 强制触发响应式更新 + // user = { ...user }; + + console.log('SetValues - user:', user); + alert('表单值已设置'); + }; + + return ( +
+
+ + setValueByPath(user, 'username', e.target.value)} + /> + + + + setValueByPath(user, 'email', e.target.value)} + /> + + + + setValueByPath(user, 'phone', e.target.value)} + /> + + +
+ + + +
+
+
+ ); +}; + +export default Demo; + +``` + +
+
+ + + +
+ +

表单布局

+

表单有三种布局。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Input,Form, FormItem, setValueByPath,Select} from 'inula-ui'; + +const Demo3 = () => { + let layout = 'inline'; + let searchForm = { + keyword: '', + category: '' + }; + + const categoryOptions = [ + { label: '全部', value: 'all' }, + { label: '技术', value: 'tech' }, + { label: '设计', value: 'design' }, + { label: '产品', value: 'product' } + ]; + + const handleSearch = (values) => { + console.log('搜索条件:', values); + }; + + const handleReset = () => { + searchForm.keyword = ''; + searchForm.category = ''; + }; + + return ( +
+
+ +
+ + + +
+
+ + setValueByPath(searchForm, 'keyword', e.target.value)} + /> + + + + setValueByPath(formData, 'input', e.target.value)} + disabled={isDisabled} + /> + + + + setValueByPath(formData, 'textarea', e.target.value)} + disabled={isDisabled} + /> + + + + { + formData.switch = !formData.switch; + }} + onChange={(e) => setValueByPath(formData, 'switch', e.target.checked)} + disabled={isDisabled} + /> + + + + + + + + + +
+
+ ); +}; + +export default Demo4; + +``` + +
+
+ + + +
+ +

表单变体

+

展示四种不同的表单变体:outlined(默认)、filled、borderless、underlined。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Form, FormItem, getValueByPath, setValueByPath,,Input,Select,Checkbox,Radio,Switch} from 'inula-ui'; + +function Demo5() { + let variant = 'outlined'; + // 创建表单数据模型 + let formData = { + username: '', + email: '', + country: '', + description: '', + agree: false, + gender: '', + notifications: false + }; + + const selectOptions = [ + // { label: '中国', value: 'china' }, + // { label: '美国', value: 'usa' }, + // { label: '日本', value: 'japan' }, + // { label: '韩国', value: 'korea' }, + ]; + + const handleFinish = (values) => { + console.log('表单提交成功:', values); + alert('表单提交成功!请查看控制台输出。'); + }; + + const handleFailed = (errors) => { + console.log('表单校验失败:', errors); + alert('表单校验失败,请检查输入!'); + }; + + return ( +
+
+ +
+ + + + +
+
+ + + setValueByPath(formData, 'username', e.target.value)} + /> + + + + setValueByPath(formData, 'email', e.target.value)} + /> + + + + setValueByPath(formData, 'description', e.target.value)} + /> + + + + + +
+
+ ); +} + +export default Demo5; + +``` + +
+
+ + + +
+ +

自定义必填标记

+

展示自定义必填标记的功能,包括默认、可选、隐藏、自定义。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Input,Tag,Form, FormItem, setValueByPath} from 'inula-ui'; + +const Demo7 = () => { + let layout = 'vertical'; + let requiredMark = 'default'; // default | optional | hidden | customize + + let formModel = { + fieldA: '', + fieldB: '' + }; + + const rules = { + fieldA: [{ required: true, message: 'Field A 为必填项' }], + fieldB: [] + }; + + + const customizeRequiredMark = (label, { required }) => ( + <> + {required ? Required : optional} + {label} + + ); + + const onFinish = (values) => { + console.log('提交成功: ', values); + }; + + const onFailed = ({ errors }) => { + console.log('提交失败: ', errors); + }; + + return ( +
+
+ +
+ + + + +
+
+ + setValueByPath(formModel, 'fieldA', e.target.value)} + /> + + + + setValueByPath(formModel, 'fieldB', e.target.value)} + /> + + + + + +
+
+ ); +}; + +export default Demo7; +``` + +
+
+ + +## API + +### Form 属性 + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| model | 表单数据模型(响应式对象) | `Record` | - | `{}` | +| rules | 表单级校验规则 | `Record` | - | `{}` | +| layout | 表单布局 | `string` | `horizontal` / `vertical` / `inline` | `horizontal` | +| labelAlign | 标签对齐方式 | `string` | `left` / `right` | `right` | +| colon | 是否在标签后显示冒号 | `boolean` | - | `true` | +| disabled | 整体禁用 | `boolean` | - | `false` | +| variant | 视觉变体 | `string` | `outlined` / `filled` / `borderless` / `underlined` | `outlined` | +| size | 表单控件尺寸 | `string` | `small` / `medium` / `large` | `medium` | +| requiredMark | 必填标记策略 | `string` | `default` / `optional` / `hidden` / `customize` | `default` | +| requiredMarkRender | 自定义必填标记渲染 | `(label, ctx) => any` | - | `null` | +| onFinish | 提交且校验通过回调 | `(values) => void` | - | - | +| onFinishFailed | 提交且校验失败回调 | `({ errors, values }) => void` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 内联样式 | `Record` | - | - | + +说明:其余属性会透传给原生 `form` 元素。 + +#### Rule 规则项 + +| 字段 | 说明 | 类型 | +|---|---|---| +| required | 是否必填 | `boolean` | +| min | 最小值/最小长度 | `number` | +| max | 最大值/最大长度 | `number` | +| pattern | 正则校验 | `RegExp` | +| validator | 自定义校验函数,返回 `false` 或错误文案表示失败 | `(value, model) => boolean \| string \| { valid: boolean; message?: string }` | +| message | 校验失败的提示文案 | `string` | + +### Form 实例方法 + +| 方法 | 说明 | 签名 | +|---|---|---| +| validate | 校验表单,返回是否通过与错误/值 | `(fieldNames?: string[]) => { valid: boolean; errors: Record; values: any }` | +| validateField | 校验单个字段 | `(fieldName: string) => { valid: boolean; error: string; value: any }` | +| resetFields | 重置字段为默认空值 | `(fieldNames?: string[]) => void` | +| setFieldsValue | 批量设置字段值 | `(values: Record) => void` | +| getFieldsValue | 获取全部或部分字段值 | `(fieldNames?: string[]) => any` | +| clearValidate | 清除校验状态(占位,按需扩展) | `(fieldNames?: string[]) => void` | +| submit | 触发表单提交 | `() => void` | + +### FormItem 属性 + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| name | 字段名(支持路径 `a.b.c`) | `string` | - | - | +| label | 标签文本,传 `null` 隐藏 | `any` | - | - | +| required | 是否必填(叠加到规则) | `boolean` | - | `false` | +| rules | 字段级规则(与表单级规则合并) | `Rule \| Rule[]` | - | `[]` | +| model | 绑定的表单模型(用于注册字段) | `Record` | - | - | +| validateOn | 触发校验时机 | `string` | `change` / `blur` / `submit` | `change` | +| help | 帮助文案 | `any` | - | - | +| extra | 额外说明 | `any` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 内联样式 | `Record` | - | - | +| colon | 覆盖是否展示冒号 | `boolean` | - | `true` | +| children | 表单控件 | `any` | - | - | + +说明:`disabled`、`variant`、`size`、`requiredMark` 等会从 `Form` 上下文继承。 + +### 辅助函数 + +从包中额外导出以下工具函数: + +- `getValueByPath(obj, path)`:根据路径获取对象值。 +- `setValueByPath(obj, path, value)`:根据路径设置对象值。 diff --git a/packages/inula2-ui2/inulaUI/src/global.d.ts b/packages/inula2-ui2/inulaUI/src/global.d.ts new file mode 100644 index 00000000..b0fbe18d --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/global.d.ts @@ -0,0 +1,4 @@ +declare module '*.jsx' { + const component: any; + export default component; +} \ No newline at end of file diff --git a/packages/inula2-ui2/inulaUI/src/icon/index.md b/packages/inula2-ui2/inulaUI/src/icon/index.md new file mode 100644 index 00000000..896b7919 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/icon/index.md @@ -0,0 +1,348 @@ +# Button 按钮组件 + +支持五种类型和四种状态属性。 + +## 何时使用 + +标记了一个(或封装一组)操作命令,响应用户点击行为,触发相应的业务逻辑。 + +在 inula-ui 中我们提供了五种按钮。 + +- 🔵 主按钮:用于主行动点,一个操作区域只能有一个主按钮。 +- ⚪️ 默认按钮:用于没有主次之分的一组行动点。 +- 😶 虚线按钮:常用于添加操作。 +- 🔤 文本按钮:用于最次级的行动点。 +- 🔗 链接按钮:一般用于链接,即导航至某位置。 + +以及四种状态属性与上面配合使用。 + +- ⚠️ 危险:删除/移动/修改权限等危险操作,一般需要二次确认。 +- 👻 幽灵:用于背景色比较复杂的地方,常用在首页/产品页等展示场景。 +- 🚫 禁用:行动点不可用的时候,一般需要文案解释。 +- 🔃 加载中:用于异步操作等待反馈的时候,也可以避免多次提交。 + +## 代码演示 + + +
+ +

基本

+

展示按钮的五种类型:主按钮、默认按钮、虚线按钮、文本按钮、链接按钮、变体样式。

+ +
+ 查看示例代码 + +```jsx | pure +import {Icon} from 'inula-ui'; + +function IconDemo() { + return ( +
+
+ + user默认实体 +
+
+ + user实体 +
+
+ + user实体蓝色 +
+
+ ); +} + +export default IconDemo; + +``` + +
+
+ + + +
+ +

危险

+

展示五种类型按钮的'危险'状态用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Icon} from 'inula-ui'; + +function IconDemo() { + return ( +
+
+ + 下箭头默认实体 +
+ {/*
+ + 下箭头线条 +
*/} +
+ + 下箭头实体 +
+ {/*
+ + 下箭头双色 +
*/} +
+ + 下箭头实体32px +
+
+ ); +} + +export default IconDemo; + +``` + +
+
+ + + +
+ +

幽灵

+

展示按钮的'幽灵'状态,包括主按钮、默认按钮和危险主按钮的幽灵样式。

+ +
+ 查看示例代码 + +```jsx | pure +import {Icon} from 'inula-ui'; + +function IconDemo() { + return ( +
+
+ + caret-left默认实体 +
+
+ + caret-left实体 +
+
+ + caret-left实体蓝色 +
+
+ + caret-left实体天蓝色旋转45 +
+
+ + caret-left实体天蓝色旋转 +
+
+ ); +} + +export default IconDemo; + +``` + +
+
+ + + +
+ +

禁用

+

展示五种类型按钮的'禁用'状态用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Icon} from 'inula-ui'; + +function IconDemo() { + return ( +
+
+ + 苹果品牌图标 +
+
+ + 苹果品牌图标32px +
+
+ + 苹果品牌图标绿色 +
+
+ + 苹果品牌图标绿色旋转120度 +
+
+ + 苹果品牌图标绿色旋转 +
+
+ ); +} + +export default IconDemo; + +``` + +
+
+ + + +
+ +

加载中

+

展示五种类型按钮的'加载中'状态用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Icon} from 'inula-ui'; +import { success, error } from "../../Notification/index.jsx"; +import "../index.css"; +import { filledIconValueList, brandIconValueList } from "./iconlist.ts"; + +const handleCopy = async (text) => { + try { + await navigator.clipboard.writeText(text); + success({ message: "Copy success!", placement: "top" }); + } catch (err) { + error({ message: "Copy failed!", placement: "top" }); + } +}; + +const IconItem = ({ value, theme }) => { + const text = ``; + return ( +
handleCopy(text)}> +
+ +
+ {value} +
+ ); +}; + +const IconDemo = () => { + return ( +
+
+ 实体图标表 +
+ {filledIconValueList.map((value) => ( + + ))} +
+
+
+ 品牌图标表 +
+ {brandIconValueList.map((value) => ( + + ))} +
+
+
+ ); +}; + +export default IconDemo; + +``` + +
+
+ + + +
+ +

交互加载

+

演示点击按钮后进入加载中状态,1.5秒后恢复。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button} from 'inula-ui'; + +function ButtonDemo() { + let loading = false; + return ( +
+ +
+ ); +} +export default ButtonDemo; +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| type | 按钮类型 | `string` | `primary` / `default` / `dashed` / `text` / `link` | `default` | +| variant | 视觉变体 | `string` | `outlined` / `filled` / `borderless` / `underlined` | `outlined` | +| danger | 危险状态样式 | `boolean` | - | `false` | +| ghost | 幽灵样式(深色背景常用) | `boolean` | - | `false` | +| disabled | 禁用状态 | `boolean` | - | `false` | +| loading | 加载中状态(禁用且展示旋转图标) | `boolean` | - | `false` | +| htmlType | 原生按钮类型 | `string` | `button` / `submit` / `reset` | `button` | +| onClick | 点击回调 | `(e) => void` | - | - | +| children | 按钮内容 | `ReactNode` | - | - | + +说明:其余属性会透传给原生 `button` 元素(如 `title`、`id`、`aria-*` 等)。 diff --git a/packages/inula2-ui2/inulaUI/src/index.ts b/packages/inula2-ui2/inulaUI/src/index.ts new file mode 100644 index 00000000..6539c399 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/index.ts @@ -0,0 +1,2 @@ +// export { default as Foo } from './Foo'; +export { default as Button } from './button'; diff --git a/packages/inula2-ui2/inulaUI/src/input/index.md b/packages/inula2-ui2/inulaUI/src/input/index.md new file mode 100644 index 00000000..955f32df --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/input/index.md @@ -0,0 +1,502 @@ +# Input 输入框 + +通过鼠标或键盘输入内容,是最基础的表单域的包装。 + +## 何时使用 + +需要用户输入表单域内容时。 + +提供组合型输入框,带搜索的输入框,还可以进行大小选择。 + +## 代码演示 + + +
+ +

基础输入框

+

演示基础输入框的用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Tag} from 'inula-ui'; + +function Demo1() { + let value = ""; + + function handleInput(e) { + value = e.target.value; + } + return ( +
+
+ 非受控组件 + + 受控组件 + +
+
+ 不带默认值 + + 带默认值 + +
+
+ ); +} + +export default Demo1; + +``` + +
+
+ + + +
+ +

不同尺寸

+

演示不同尺寸的输入框。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Tag} from 'inula-ui'; + +function Demo2() { + + return ( +
+
+ input + + + +
+
+ textarea + + + +
+
+ ); + +} + +export default Demo2; + +``` + +
+
+ + + +
+ +

不同形态

+

演示不同形态的输入框。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Tag} from 'inula-ui'; + +function Demo3() { + + return ( +
+
+ input + + + + + +
+
+ textarea + + + + + +
+ +
+ ); + +} + +export default Demo3; + +``` + +
+
+ + + +
+ +

前后缀

+

演示带前后缀的输入框。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input} from 'inula-ui'; + +function Demo4() { + + return ( +
+ +
+ ) + +} + +export default Demo4; + +``` + +
+
+ + + +
+ +

字数统计

+

演示带字数统计的输入框。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input} from 'inula-ui'; + +function Demo5() { + let value = "这是一个输入框"; + + function handleInput(e) { + value = e.target.value; + } + + return ( +
+ + + +
+ ); +} + +export default Demo5; + +``` + +
+
+ + + +
+ +

清除按钮

+

演示带清除按钮的输入框。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input} from 'inula-ui'; + +function Demo6() { + let value = ""; + + function handleInput(e) { + value = e.target.value; + } + + return ( +
+ + +
+ ); +} + +export default Demo6; + +``` + +
+
+ + + +
+ +

Textarea 自动调整高度

+

演示 textarea 的自动调整高度功能。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Tag} from 'inula-ui'; + +const Demo7 = () => { + return ( +
+
+ 基础 textarea + +
+
+ 自动调整高度(布尔值) + +
+ +
+ 自定义最小最大行数 + +
+ +
+ ); +}; + +export default Demo7; + +``` + +
+
+ + + +
+ +

状态

+ +
+ 查看示例代码 + +```jsx | pure +import {Input} from 'inula-ui'; + +const Demo8 = () => { + + let value = ""; + + function handleInput(e) { + console.log("handleInput111", e.target.value); + value = e.target.value; + } + return ( +
+ + + +
+ ); +} + +export default Demo8; +``` + +
+
+ + + +
+ +

密码框

+ +
+ 查看示例代码 + +```jsx | pure +import {Input} from 'inula-ui'; + +let password = ''; + +function handlePasswordInput(e) { + password = e.target.value; +} + + +const Demo9 = () => { + return +} + +export default Demo9; +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| value | 受控模式下的输入值 | `string` | - | - | +| defaultValue | 非受控模式下的初始值 | `string` | - | `""` | +| type | 输入框类型 | `string` | `text` / `password` / `textarea` | `text` | +| size | 输入框尺寸 | `string` | `small` / `default` / `large` | `default` | +| variant | 输入框形态 | `string` | `outlined` / `filled` / `borderless` / `underlined` | `outlined` | +| placeholder | 占位符文本 | `string` | - | `""` | +| disabled | 是否禁用 | `boolean` | - | `false` | +| allowClear | 是否显示清除按钮 | `boolean` | - | `false` | +| showCount | 是否显示字数统计 | `boolean` | - | `false` | +| maxLength | 最大输入长度 | `number` | - | `5000` | +| autoSize | 自动调整高度(仅 textarea) | `boolean \| { minRows: number, maxRows: number }` | - | `false` | +| addonBefore | 前置标签 | `ReactNode` | - | - | +| addonAfter | 后置标签 | `ReactNode` | - | - | +| status | 输入框状态 | `string` | `error` / `warning` | - | +| onInput | 输入事件回调 | `(e) => void` | - | - | +| onChange | 变更事件回调 | `(e) => void` | - | - | +| className | 自定义类名 | `string` | - | `""` | +| style | 行内样式 | `CSSProperties` | - | `{}` | + +说明: + +- 受控/非受控:传 `value` 为受控模式,传 `defaultValue` 为非受控模式。 +- 密码框:`type="password"` 时自动显示密码可见性切换按钮。 +- 自动调整:`autoSize` 为 `true` 时无限制调整;为对象时可设置 `minRows` 与 `maxRows`。 +- 字数统计:`showCount` 为 `true` 时在输入框右下角显示当前字数与最大长度。 +- 清除按钮:`allowClear` 为 `true` 且非禁用且有内容时显示清除按钮。 +- 前后缀:`addonBefore` 与 `addonAfter` 会在输入框前后添加标签。 +- 状态:`status` 为 `error` 或 `warning` 时显示对应状态样式。 diff --git a/packages/inula2-ui2/inulaUI/src/notification/index.md b/packages/inula2-ui2/inulaUI/src/notification/index.md new file mode 100644 index 00000000..4b954dbc --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/notification/index.md @@ -0,0 +1,251 @@ +# Notification 通知提示框 + +全局展示通知提醒信息。 + +## 何时使用 + +在系统四个角显示通知提醒信息。经常用于以下情况: + +- 较为复杂的通知内容。 +- 带有交互的通知,给出用户下一步的行动点。 +- 系统主动推送。 + +## 代码演示 + + +
+ +

基础通知

+

演示信息、成功、警告、错误四种类型的通知用法。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Tag,Button} from 'inula-ui'; +import { info, success, warning, error } from 'inula-ui/notification'; + +function Demo1() { + function show(type) { + if (type === 'info') info({ message: '信息提示', bgColor: true, description: '这是一条普通的信息提示' }); + if (type === 'success') success({ message: '成功提示', description: '操作已成功完成' }); + if (type === 'warning') warning({ message: '警告提示', description: '请注意相关事项' }); + if (type === 'error') error({ message: '错误提示', description: '操作失败,请重试' }); + if (type === 'text') text({ message: '文本提示', bgColor: true, description: '这是一条普通的文本提示' }); + } + return ( +
+ + + + +
+ ); +} + +export default Demo1; + +``` + +
+
+ + + +
+ +

自定义关闭按钮

+

演示如何自定义通知的关闭按钮文本和样式。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Tag,Button} from 'inula-ui'; + +import { text } from 'inula-ui/notification'; + +function Demo2() { + function showCustomClose() { + text({ + message: '自定义关闭按钮', + description: '关闭按钮变成了"关闭"并加粗变色', + closeText: '关闭', + closeClassName: 'my-close-btn', + }); + } + return ( +
+ +
+ ); +} + +export default Demo2; + +``` + +
+
+ + + +
+ +

自定义操作按钮

+

演示如何为通知添加自定义操作按钮。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Tag,Button} from 'inula-ui'; + +import { text } from 'inula-ui/notification'; + +function Demo3() { + function showCustomActions() { + text({ + message: 'Notification Title', + description: 'A function will be called after the notification is closed...', + actions: ({ notification, remove, onClose }) => ( + <> + + + + ) + }); + } + return ( +
+ +
+ ); +} + +export default Demo3; + +``` + +
+
+ + + +
+ +

弹出位置

+

演示通知在不同屏幕位置的弹出效果。

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Button} from 'inula-ui'; + +import { text } from 'inula-ui/notification'; + +function Demo4() { + return ( +
+ + + + + + +
+ ); +} + +export default Demo4; + +``` + +
+
+ + + +
+ +

选择背景颜色

+

可以传入bgColor显示不同的背景颜色

+ +
+ 查看示例代码 + +```jsx | pure +import {Input,Button} from 'inula-ui'; + +import { text, info } from 'inula-ui/notification'; + +function Demo5() { + function show(type) { + if (type === 'text') text({ message: '不带bgColor', description: '这是一条普通的信息提示' }); + if (type === 'info') info({ message: '带bgColor', bgColor: true, description: '这是一条普通的文本提示' }); + } + return ( +
+ + +
+ ); +} + +export default Demo5; +``` + +
+
+ + +## API + +### 静态方法 + +- `notification.open(options)`:以自定义 `type` 打开通知。 +- `notification.info(options)`:信息通知。 +- `notification.success(options)`:成功通知。 +- `notification.warning(options)`:警告通知。 +- `notification.error(options)`:错误通知。 +- `notification.text(options)`:无图标的文本通知。 + +> 以上方法均为即时调用,不返回实例;通知会在 `duration` 到时或点击关闭按钮后消失。 + +### options + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| message | 通知标题 | `string` | - | - | +| description | 通知内容 | `string` | - | - | +| duration | 自动关闭时间,单位 ms;为 `0` 时不自动关闭 | `number` | - | `3000` | +| placement | 弹出位置 | `"topLeft" \| "topRight" \| "bottomLeft" \| "bottomRight" \| "top" \| "bottom"` | - | `topRight` | +| closeText | 关闭按钮文本 | `string` | - | `×` | +| closeClassName | 关闭按钮类名 | `string` | - | `inula-notification-close` | +| actions | 自定义操作区域 | `ReactNode \| (ctx) => ReactNode` | - | - | +| bgColor | 是否使用类型背景色 | `boolean` | - | `false` | +| onClose | 点击关闭时回调 | `() => void` | - | - | +| type | 通知类型,仅 `open` 时需要 | `"info" \| "success" \| "warning" \| "error" \| "text"` | - | `info` | + +说明: + +- `actions` 支持传入节点或函数。函数签名:`({ notification, remove, onClose }) => ReactNode`,可通过 `remove(notification.key)` 主动关闭当前通知,或调用 `onClose()` 触发关闭。 +- 未设置 `duration` 时默认为 3000ms;设为 `0` 可常驻。 +- `placement` 支持六个方位:`topRight`(默认)、`topLeft`、`bottomRight`、`bottomLeft`、`top`、`bottom`。 +- `type` 在 `info/success/warning/error/text` 方法中已内置,无需再传;仅在使用 `open` 时按需指定。 diff --git a/packages/inula2-ui2/inulaUI/src/radio/index.md b/packages/inula2-ui2/inulaUI/src/radio/index.md new file mode 100644 index 00000000..cbc827b8 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/radio/index.md @@ -0,0 +1,248 @@ +# Radio 单选框 + +用于在多个备选项中选中单个状态。 + +## 何时使用 + +用于在多个备选项中选中单个状态。 + +和 Select 的区别是,Radio 所有选项默认可见,方便用户在比较中选择,因此选项不宜过多。 + +## 代码演示 + + +
+ +

基础用法

+

最基础的单选框,支持选项切换。

+ +
+ 查看示例代码 + +```jsx | pure +import {Radio} from 'inula-ui'; + +function Demo1() { + let selected = 'a'; + + function handleRadioChange(val) { + selected = val; + } + + return ( +
+ + +
+ ); +} + +export default Demo1; + +``` + +
+
+ + + +
+ +

选项组用法

+

通过 options 属性批量渲染单选框组。。

+ +
+ 查看示例代码 + +```jsx | pure +import {Radio} from 'inula-ui'; + +function Demo2() { + let selected = 'a'; + function handleRadioChange(val) { + selected = val; + } + const options = [ + { label: '选项A', value: 'a', checked: selected === 'a' }, + { label: '选项B', value: 'b', checked: selected === 'b' }, + { label: '选项C', value: 'c', checked: selected === 'c' }, + ]; + return ( + + ); +} +export default Demo2; + +``` + +
+
+ + + +
+ +

不同尺寸

+

展示单选框的三种尺寸:大号、默认、小号。

+ +
+ 查看示例代码 + +```jsx | pure +import {Radio} from 'inula-ui'; + +function Demo3() { + let selected = 'a'; + + function handleRadioChange(val) { + selected = val; + } + + return ( +
+ + + +
+ ); +} + +export default Demo3; +``` + +
+
+ + + +
+ +

禁用状态

+

展示禁用的单选框,用户无法进行选择。

+ +
+ 查看示例代码 + +```jsx | pure +import {Radio} from 'inula-ui'; + +function Demo4() { + return ( +
+ + +
+ ); +} +export default Demo4; +``` + +
+
+ + + +
+ +

只读状态

+

展示只读的单选框,选中状态不可更改。

+ +
+ 查看示例代码 + +```jsx | pure +import {Radio} from 'inula-ui'; + +function Demo5() { + let selected = 'a'; + function handleRadioChange(val) { + selected = val; + } + return ( +
+ + +
+ ); +} +export default Demo5; +``` + +
+
+ + + +
+ +

选中、只读、禁用

+ +
+ 查看示例代码 + +```jsx | pure +import {Radio} from 'inula-ui'; + +function Demo6() { + let selected = 'a'; + function handleRadioChange(val) { + selected = val; + } + const options = [ + { label: 'A', value: 'a', checked: selected === 'a' }, + { label: 'B(禁用)', value: 'b', checked: selected === 'b', disabled: true }, + { label: 'C(只读)', value: 'c', checked: selected === 'c', readOnly: true }, + ]; + return ( + + ); +} +export default Demo6; +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| checked | 是否选中 | `boolean` | - | `false` | +| disabled | 是否禁用 | `boolean` | - | `false` | +| readOnly | 是否只读 | `boolean` | - | `false` | +| value | 单选框的值 | `string` | - | `""` | +| name | 单选框组名 | `string` | - | `""` | +| label | 单选框标签 | `string` | - | `""` | +| size | 单选框尺寸 | `string` | `large` / `default` / `small` | `default` | +| variant | 单选框形态 | `string` | `outlined` / `filled` / `borderless` / `underlined` | `outlined` | +| options | 选项组配置 | `{ label: string, value: string, checked?: boolean, disabled?: boolean, readOnly?: boolean }[]` | - | - | +| onChange | 变化时回调 | `(value: string, e: Event) => void` | - | - | +| className | 自定义类名 | `string` | - | `""` | +| style | 行内样式 | `CSSProperties` | - | `{}` | + +说明: + +- 单选逻辑:同组内只能选中一个选项,选中新选项时会自动取消其他选项的选中状态。 +- 选项组:传 `options` 数组时,组件会渲染为单选框组,每个选项支持独立的 `checked`、`disabled`、`readOnly` 状态。 +- 事件回调:`onChange` 回调接收两个参数:选中值 `value` 和事件对象 `e`。 +- 只读状态:`readOnly` 为 `true` 时,选中状态不可更改,但仍可触发 `onChange` 回调。 +- 禁用状态:`disabled` 为 `true` 时,单选框不可交互,不会触发 `onChange` 回调。 diff --git a/packages/inula2-ui2/inulaUI/src/select/index.md b/packages/inula2-ui2/inulaUI/src/select/index.md new file mode 100644 index 00000000..43edc817 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/select/index.md @@ -0,0 +1,366 @@ +# Select 选择器 + +下拉选择器。 + +## 何时使用 + +弹出一个下拉菜单给用户选择操作,用于代替原生的选择器,或者需要一个更优雅的多选器时。 + +当选项少时(少于 5 项),建议直接将选项平铺,使用 Radio 是更好的选择。 + +如果你在寻找一个可输可选的输入框,那你可能需要 AutoComplete。 + +## 代码演示 + + +
+ +

基础用法

+

最基础的下拉选择框,支持选项切换。

+ +
+ 查看示例代码 + +```jsx | pure +import {Select} from 'inula-ui'; + +function Demo1() { + let value = ''; + const options = [ + { label: 'Option A', value: 'a' }, + { label: 'Option B', value: 'b' }, + { label: 'Option C', value: 'c' }, + { label: 'Option D', value: 'd' }, + ]; + + function handleChange(val) { + value = val + } + + return +} + +export default Demo2; + +``` + +
+
+ + + +
+ +

禁用

+

可禁用整个下拉选择框和单个选项。

+ +
+ 查看示例代码 + +```jsx | pure +import {Select} from 'inula-ui'; + +function Demo3() { + + const options = [ + { label: '选项A', value: 'a' }, + { label: '选项B', value: 'b' }, + { label: '选项C', value: 'c', disabled: true }, + { label: '选项D', value: 'd' }, + ]; + + return ( +
+ +
+ ) +} + +export default Demo3; +``` + +
+
+ + + +
+ +

默认值

+

设置默认选中项。

+ +
+ 查看示例代码 + +```jsx | pure +import {Select} from 'inula-ui'; + +function Demo4() { + let value = ''; + + const options = [ + { label: '选项A', value: 'a' }, + { label: '选项B', value: 'b' }, + { label: '选项C', value: 'c' }, + { label: '选项D', value: 'd' }, + ]; + + function handleChange(val) { + value = val; + } + + return +} + +export default Demo5; +``` + +
+
+ + + +
+ +

多选

+

支持多选功能。

+ +
+ 查看示例代码 + +```jsx | pure +import {Select} from 'inula-ui'; + +function Demo6() { + let value = ''; + + const options = [ + { label: '选项A', value: 'a' }, + { label: '选项B', value: 'b' }, + { label: '选项C', value: 'c' }, + { label: '选项D', value: 'd' }, + ]; + + function handleChange(val) { + value = val; + } + + return +} + +export default Demo7; +``` + +
+
+ + + +
+ +

变体样式

+

支持变体样式。

+ +
+ 查看示例代码 + +```jsx | pure +import {Select} from 'inula-ui'; + +function Demo8() { + + const options = [ + { label: '选项A', value: 'a' }, + { label: '选项B', value: 'b' }, + { label: '选项C', value: 'c', disabled: true }, + { label: '选项D', value: 'd' }, + ]; + + return ( +
+ + +
+ ) +} + +export default Demo8; +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| options | 选项数据 | `{ label: string, value: string, disabled?: boolean }[] \| { label: string, options: { label: string, value: string, disabled?: boolean }[] }[]` | - | `[]` | +| value | 受控模式下的选中值 | `string \| string[]` | - | - | +| defaultValue | 非受控模式下的初始选中值 | `string \| string[]` | - | `""` | +| disabled | 是否禁用 | `boolean` | - | `false` | +| placeholder | 占位符文本 | `string` | - | `""` | +| onChange | 变化时回调 | `(value: string \| string[]) => void` | - | - | +| allowClear | 是否显示清除按钮 | `boolean` | - | `false` | +| multiple | 是否多选 | `boolean` | - | `false` | +| size | 选择器尺寸 | `string` | `small` / `default` / `large` / `medium` | `default` | +| variant | 选择器形态 | `string` | `outlined` / `filled` / `borderless` / `underlined` | `outlined` | +| className | 自定义类名 | `string` | - | `""` | +| style | 行内样式 | `CSSProperties` | - | `{}` | + +说明: + +- 受控/非受控:传 `value` 为受控模式,传 `defaultValue` 为非受控模式。 +- 选项数据:`options` 支持普通选项数组和分组选项数组,分组选项格式为 `{ label: string, options: [...] }`。 +- 多选模式:`multiple` 为 `true` 时,`value` 和 `onChange` 回调的值为数组类型。 +- 清除功能:`allowClear` 为 `true` 时,在选中项存在且非禁用状态下显示清除按钮。 +- 尺寸兼容:`medium` 尺寸等同于 `default`。 +- 选项禁用:单个选项可通过 `disabled: true` 禁用,分组标题不支持禁用。 diff --git a/packages/inula2-ui2/inulaUI/src/spin/index.md b/packages/inula2-ui2/inulaUI/src/spin/index.md new file mode 100644 index 00000000..25ea0c74 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/spin/index.md @@ -0,0 +1,349 @@ +# Spin 加载中 + +用于页面和区块的加载中状态。 + +## 何时使用 + +页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦虑。 + +## 代码演示 + + +
+ +

基本样式

+

默认加载指示器,大中小型号

+ +
+ 查看示例代码 + +```jsx | pure +import {Spin,Tag} from 'inula-ui'; + +const SpinDemo = () => { + + return ( +
+
+ 最简单的Spin + +
+
+ 小中大的Spin + + + +
+
+ ); +}; + +export default SpinDemo; + +``` + +
+
+ + + +
+ +

嵌套状态样式

+

包裹子组件且不为全屏状态情况,加载覆盖子组件、自定义tip

+ +
+ 查看示例代码 + +```jsx | pure +import {Spin,Switch,Tag} from 'inula-ui'; + +const SpinDemo = () => { + let loading = false; + + return ( +
+
+ 简单嵌套状态 + +
+ 这是子组件 +
+
+ (loading = !loading)} /> + 切换嵌套组件的加载状态 +
+
+ 自定义tip的Spin,小中大样式 + +
+
+ +
+
+ +
+
+
+
+ ); +}; + +export default SpinDemo; + +``` + +
+
+ + + +
+ +

带delay延迟触发加载动画

+ +
+ 查看示例代码 + +```jsx | pure +import {Spin,Switch,Tag} from 'inula-ui'; + +const SpinDemo = () => { + let loading = false; + + return ( +
+
+ + 点击延迟一秒触发加载 + + +
+ 这是子组件 +
+
+ (loading = !loading)} /> + 延迟触发切换状态按钮 +
+
+ ); +}; + +export default SpinDemo; + +``` + +
+
+ + + +
+ +

全屏覆盖加载动画

+ +
+ 查看示例代码 + +```jsx | pure +import {ButSpinton,Button} from 'inula-ui'; +const SpinDemo = () => { + let showFullScreen = false; + let percent = -100; + + const showLoader = () => { + showFullScreen = true; + const interval = setInterval(() => { + percent += 10; + if (percent >= 100) { + clearInterval(interval); + showFullScreen = false; + percent = -100; + } + }, 100); + }; + + return ( +
+
+ + +
+
+ ); +}; + +export default SpinDemo; + +``` + +
+
+ + + +
+ +

永不停止的进度条加载

+ +
+ 查看示例代码 + +```jsx | pure +import {Spin,Switch} from 'inula-ui'; +const SpinDemo = () => { + let auto = false; + let percent = -50; + + watch(() => { + if (auto) { + percent = "auto"; + return; + } else { + percent = -50; + const interval = setInterval(() => { + percent += 10; + if (percent >= 100) { + percent = -50; + } + }, 100); + + return () => { + clearInterval(interval); + }; + } + }); + + return ( +
+
+ + + +
+
+ (auto = !auto)} + unCheckedChildren="auto" + checkedChildren="auto" + /> + 点击切换auto,进度条永不停止 +
+
+ ); +}; + +export default SpinDemo; + +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| spinning | 是否显示加载状态 | `boolean` | - | `true` | +| delay | 延迟显示加载状态的时间(毫秒) | `number` | - | - | +| fullscreen | 是否全屏显示 | `boolean` | - | `false` | +| indicator | 自定义加载指示器 | `ReactNode` | - | - | +| percent | 进度百分比 | `number \| "auto"` | - | - | +| size | 加载指示器尺寸 | `string` | `small` / `default` / `large` | `default` | +| tip | 加载提示文本 | `string` | - | - | +| wrapperClassName | 包装器类名 | `string` | - | - | +| className | 自定义类名 | `string` | - | - | +| children | 子组件(嵌套模式) | `ReactNode` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | +| maxProgressWidth | 进度条最大宽度 | `number` | - | `44` | + +说明: + +- 显示模式:有 `children` 且非 `fullscreen` 时为嵌套模式,覆盖子组件显示;`fullscreen` 为全屏模式;否则为独立模式。 +- 延迟显示:`delay` 设置延迟时间,避免快速切换时闪烁,使用防抖机制实现。 +- 进度指示:`percent` 为数字时显示进度条,为 `"auto"` 时显示无限循环进度条。 +- 自定义指示器:`indicator` 可完全自定义加载指示器,优先级高于默认指示器。 +- 提示文本:`tip` 在嵌套模式和全屏模式下显示在指示器下方。 +- 尺寸影响:不同 `size` 会影响指示器大小和进度条宽度(`maxProgressWidth` 会自动调整)。 diff --git a/packages/inula2-ui2/inulaUI/src/switch/index.md b/packages/inula2-ui2/inulaUI/src/switch/index.md new file mode 100644 index 00000000..cacba950 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/switch/index.md @@ -0,0 +1,233 @@ +# Switch 开关组件 + +## 何时使用 + +使用开关可以切换两种状态。 + +## 代码演示 + + +
+ +

基本

+

两种型号开关,支持默认选中、禁用

+ +
+ 查看示例代码 + +```jsx | pure +import { Switch, Tag } from 'inula-ui'; + +const SwitchDemo = () => { + let checked = false; + + return ( +
+
+ 默认型号、小号开关 + + 默认型号 + + 小号 +
+
+ 默认选中 + + 默认选中 +
+
+ 禁用开关 + + 默认选中禁用 + + 禁用 +
+
+ ); +}; + +export default SwitchDemo; +``` + +
+
+ + + +
+ +

受控

+

开关状态外部受控案例

+ +
+ 查看示例代码 + +```jsx | pure +import { Switch, Tag, Button } from 'inula-ui'; + +const SwitchDemo = () => { + let checked = false; + + return ( +
+
+ 外部受控开关 + + 选中 + + +
+
+ ); +}; + +export default SwitchDemo; +``` + +
+
+ + + +
+ +

带内容开关

+

可以自定义选中和非选中时开关的内容

+ +
+ 查看示例代码 + +```jsx | pure +import { Switch, Tag, Icon } from 'inula-ui'; + +const SwitchDemo = () => { + return ( +
+
+ 带内容的开关 + + + } + unCheckedChildren={} + defaultChecked + /> +
+
+ ); +}; + +export default SwitchDemo; +``` + +
+
+ + + +
+ +

加载

+

支持加载状态开关,加载中不可操作。

+ +
+ 查看示例代码 + +```jsx | pure +import { Switch, Tag } from 'inula-ui'; + +const SwitchDemo = () => { + return ( +
+
+ 加载状态开关 + + +
+
+ ); +}; + +export default SwitchDemo; +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +| ----------------- | -------------------------------- | --------------- | ---------------------- | ------- | +| defaultChecked | 默认选中 | `boolean` | - | `false` | +| defaultValue | defaultChecked 别名 | `boolean` | - | `false` | +| size | 开关大小 | `string` | `'default' \| 'small'` | `false` | +| checked | 当前选中状态 | `boolean` | - | - | +| disabled | 禁用状态 | `boolean` | - | `false` | +| loading | 加载中状态(禁用且展示旋转图标) | `boolean` | - | `false` | +| checkedChildren | 选中时 swicth 自带内容 | `node` | - | - | +| unCheckedChildren | 非选中时 swicth 自带内容 | `node` | - | - | +| onChange | 状态改变回调 | `(e) => void` | - | - | +| onClick | 点击回调 | `(e) => void` | - | - | +| className | 自定义样式类 | `string` | - | - | +| style | 自定义行内样式 | `CSSProperties` | - | - | + +说明:当传入`checked`时 switch 为外部受控状态。 diff --git a/packages/inula2-ui2/inulaUI/src/tabs/index.md b/packages/inula2-ui2/inulaUI/src/tabs/index.md new file mode 100644 index 00000000..af4cc2ea --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/tabs/index.md @@ -0,0 +1,713 @@ +# Tabs 标签页 + +选项卡切换组件。 + +## 何时使用 + +提供平级的区域将大块内容进行收纳和展现,保持界面整洁。 + +## 代码演示 + + +
+ +

基本

+

默认选中第一项

+ +
+ 查看示例代码 + +```jsx | pure +import {Tabs} from 'inula-ui'; + +const TabsDemo = () => { + + const onChange = (key) => { + console.log(key); + }; + + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + }, + { key: "3", label: "Tab 3", children: "Content of Tab Pane 3" }, + ]; + + return ( +
+
+ +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + + +
+ +

禁用

+

禁用第二项

+ +
+ 查看示例代码 + +```jsx | pure +import {Tabs} from 'inula-ui'; + +const TabsDemo = () => { + const onChange = (key) => { + console.log(key); + }; + + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + disabled: true, + }, + { key: "3", label: "Tab 3", children: "Content of Tab Pane 3" }, + ]; + + return ( +
+
+ +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + + +
+ +

居中

+

标签居中显示

+ +
+ 查看示例代码 + +```jsx | pure +import {Tabs} from 'inula-ui'; + +const TabsDemo = () => { + const onChange = (key) => { + console.log(key); + }; + return ( +
+
+ { + const id = String(i + 1); + return { + label: `Tab ${id}`, + key: id, + children: `Content of Tab Pane ${id}`, + }; + })} + centered + defaultActiveKey="1" + onChange={onChange} + /> +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + + +
+ +

图标

+

带有图标的标签

+ +
+ 查看示例代码 + +```jsx | pure +import {Tabs,Icon} from 'inula-ui'; + +const TabsDemo = () => { + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + icon: , + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + icon: , + }, + ]; + return ( +
+
+ +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + + +
+ +

指示条

+

设置 indicator 属性,自定义指示条宽度和对齐方式。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Tabs} from 'inula-ui'; + +const TabsDemo = () => { + let indicator = "center"; // start | center | end | { size?: number | (origin: number) => number; align: start | center | end; } 自定义指示器长度和对齐方式 + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + }, + { key: "3", label: "Tab 3", children: "Content of Tab Pane 3" }, + ]; + return ( +
+
+ origin - 20, align: indicator }} /> +
+
+ + + +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + + +
+ +

位置

+

有四个位置,tabPosition="left|right|top|bottom"。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Tabs} from 'inula-ui'; + +const TabsDemo = () => { + let pos = "top"; // top | bottom | left | right + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + }, + { key: "3", label: "Tab 3", children: "Content of Tab Pane 3" }, + ]; + return ( +
+
+ +
+
+ + + + +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + + +
+ +

大小

+

有三种大小,size="small|middle|large"。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Tabs} from 'inula-ui'; + +const TabsDemo = () => { + let size = "default"; //small | default | large + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + }, + { key: "3", label: "Tab 3", children: "Content of Tab Pane 3" }, + ]; + return ( +
+
+ + + +
+
+ + + +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + + +
+ +

新增和关闭标签

+

只有卡片样式的页签支持新增和关闭选项。使用 closable={false} 禁止关闭。

+ +
+ 查看示例代码 + +```jsx | pure +import {Tabs} from 'inula-ui'; + +const TabsDemo = () => { + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + }, + { key: "3", label: "Tab 3", children: "Content of Tab Pane 3", closable: false }, + ]; + + return ( +
+
+ +
+
+ ) +} + +export default TabsDemo; +``` + +
+
+ + + +
+ +

自定义增加标签

+

自定义新增标签。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Tabs} from 'inula-ui'; + +const TabsDemo = () => { + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + }, + { + key: "3", + label: "Tab 3", + children: "Content of Tab Pane 3", + closable: false, + }, + ]; + + return ( +
+
+ +
+
+ +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + + +
+ +

标签额外内容

+ +
+ 查看示例代码 + +```jsx | pure +import {Tabs,Icon,Button} from 'inula-ui'; + +const LeftExtraContent = ; +const RightExtraContent = ; + +const TabsDemo = () => { + let tabBarExtraContent = { left: LeftExtraContent, right: RightExtraContent }; + const items = [ + { + key: "1", + label: "Tab 1", + children: "Content of Tab Pane 1", + icon: , + }, + { + key: "2", + label: "Tab 2", + children: "Content of Tab Pane 2", + }, + { key: "3", label: "Tab 3", children: "Content of Tab Pane 3" }, + ]; + return ( +
+
+ +
+
+ ); +}; + +export default TabsDemo; +``` + +
+
+ + + +
+ +

标签滚动

+

标签过多时,可滚动。

+ +
+ 查看示例代码 + +```jsx | pure +import {Button,Tabs} from 'inula-ui'; + +const TabsDemo = () => { + let mode = "top"; + + return ( +
+
+ { + const id = String(i); + return { + label: `Tab-${id}`, + key: id, + disabled: i === 28, + children: `Content of tab ${id}`, + }; + })} + /> +
+
+ + +
+
+ ); +}; + +export default TabsDemo; + +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| items | 选项卡配置数组 | `TabProps[]` | - | - | +| type | 选项卡类型 | `string` | `line` / `card` / `editable-card` | `line` | +| size | 选项卡尺寸 | `string` | `small` / `default` / `large` | `default` | +| tabPosition | 选项卡位置 | `string` | `top` / `bottom` / `left` / `right` | `top` | +| centered | 是否居中显示 | `boolean` | - | `false` | +| activeKey | 受控模式下的当前激活选项卡 | `string` | - | - | +| defaultActiveKey | 非受控模式下的默认激活选项卡 | `string` | - | `items[0].key` | +| addIcon | 添加按钮图标 | `ReactNode` | - | `` | +| hideAdd | 是否隐藏添加按钮 | `boolean` | - | `false` | +| indicator | 指示器配置 | `{ size?: number \| (origin: number) => number; align?: 'start' \| 'center' \| 'end' }` | - | - | +| tabBarExtraContent | 标签栏额外内容 | `ReactNode \| { left?: ReactNode; right?: ReactNode }` | - | - | +| tabBarGutter | 标签栏间隔距离 | `number` | - | - | +| tabBarStyle | 标签栏样式 | `CSSProperties` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | +| onChange | 选项卡切换回调 | `(key: string) => void` | - | - | +| onTabClick | 选项卡点击回调 | `(key: string, e: React.MouseEvent) => void` | - | - | +| onEdit | 选项卡编辑回调 | `(targetKey: string, action: 'add' \| 'remove') => void` | - | - | +| onTabScroll | 选项卡滚动回调 | `({ direction: 'left' \| 'right' \| 'top' \| 'bottom' }) => void` | - | - | + +### TabProps + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| key | 选项卡唯一标识 | `string` | - | - | +| label | 选项卡标题 | `ReactNode` | - | - | +| children | 选项卡内容 | `ReactNode` | - | - | +| disabled | 是否禁用 | `boolean` | - | `false` | +| icon | 选项卡图标 | `ReactNode` | - | - | +| closable | 是否可关闭 | `boolean` | - | `true` | +| closeIcon | 关闭按钮图标 | `ReactNode` | - | `` | + +说明: + +- 受控/非受控:传 `activeKey` 为受控模式,传 `defaultActiveKey` 为非受控模式。 +- 可编辑卡片:`type="editable-card"` 时支持添加/删除选项卡,可通过 `hideAdd` 隐藏添加按钮。 +- 指示器:`indicator.size` 可为数字或函数,函数接收原始宽度返回新宽度;`indicator.align` 控制对齐方式。 +- 额外内容:`tabBarExtraContent` 可为 ReactNode 或包含 `left`/`right` 的对象。 +- 事件回调:`onEdit` 仅在 `type="editable-card"` 时有效;`onTabScroll` 在标签栏滚动时触发。 diff --git a/packages/inula2-ui2/inulaUI/src/tag/index.md b/packages/inula2-ui2/inulaUI/src/tag/index.md new file mode 100644 index 00000000..5ccb02c3 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/tag/index.md @@ -0,0 +1,304 @@ +# Tag 标签组件 + +## 何时使用 + +进行标记和分类的小标签。 + +## 代码演示 + + +
+ +

基本

+

基本标签、link标签、带关闭按钮的标签

+ +
+ 查看示例代码 + +```jsx | pure +import { Tag } from 'inula-ui'; + +const Demo1 = () => { + return ( +
+ 基本标签 + + + Link标签 + + + Prevent Default +
+ ); +}; + +export default Demo1; +``` + +
+
+ + + +
+ +

颜色

+

不同颜色的Tag

+ +
+ 查看示例代码 + +```jsx | pure +import { Tag } from 'inula-ui'; + +const Demo2 = () => { + const colors = [ + 'magenta', + 'red', + 'volcano', + 'orange', + 'gold', + 'lime', + 'green', + 'cyan', + 'blue', + 'geekblue', + 'purple', + ]; + + return ( +
+
+
Presets
+ {colors.map((c) => ( + + {c} + + ))} +
+
+
Custom
+ #2db7f5 + #87d068 +
+
+ ); +}; + +export default Demo2; +``` + +
+
+ + +[//]: # () + +[//]: # (
) + +[//]: # () + +[//]: # (

增删tag

) + +[//]: # (

可以控制增加删减tag

) + +[//]: # () +[//]: # (
) + +[//]: # ( 查看示例代码) + +[//]: # () +[//]: # (```jsx | pure) + +[//]: # (import { Tag } from 'inula-ui';) + +[//]: # () +[//]: # (const Demo3 = () => {) + +[//]: # ( let tags = ['Unremovable', 'Tag 2', '大家读'];) + +[//]: # ( let newIndex = 1;) + +[//]: # () +[//]: # ( const handleClose = (removed) => {) + +[//]: # ( tags = tags.filter((t) => t !== removed);) + +[//]: # ( };) + +[//]: # () +[//]: # ( const addTag = () => {) + +[//]: # ( const next = `New Tag ${newIndex++}`;) + +[//]: # ( tags = [...tags, next];) + +[//]: # ( };) + +[//]: # () +[//]: # ( return () + +[//]: # ( ) + +[//]: # ( {tags.map((tag, i) => () + +[//]: # ( handleClose(tag)}>) + +[//]: # ( {tag}) + +[//]: # ( ) + +[//]: # ( ))}) + +[//]: # ( ) + +[//]: # ( + New Tag) + +[//]: # ( ) + +[//]: # (
) + +[//]: # ( );) + +[//]: # (};) + +[//]: # () +[//]: # (export default Demo3;) + +[//]: # (```) + +[//]: # () +[//]: # () + +[//]: # () + +[//]: # () + + +
+ +

CheckableTag

+

支持可以选中的Tag

+ +
+ 查看示例代码 + +```jsx | pure +import { CheckabelTag } from 'inula-ui'; + +const Demo4 = () => { + let checked = [true, false, false, false]; + const tags = ['Movies', 'Books', 'Music', 'Sports']; + + return ( +
+ {tags.map((tag, i) => ( + { + checked[i] = next; + }} + > + {tag} + + ))} +
+ ); +}; + +export default Demo4; +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +| --------- | ---------------- | --------------- | -------------------------------- | ----------- | +| color | 标签内置颜色 | `string` | `PRESET-COLORS` | `'default'` | +| size | 标签大小 | `string` | `'small' \| 'default' \| 'large` | `'default'` | +| icon | 自定义图标 | `node` | `- | - | +| closable | 是否显示关闭按钮 | `boolean` | - | `false` | +| bordered | 是否显示边框 | `boolean` | - | `true` | +| round | 是否显示圆角 | `boolean` | - | `false` | +| disabled | 是否禁用标签 | `boolean` | - | `false` | +| onClose | 关闭回调 | `function(e)` | - | - | +| onClick | 点击回调 | `function(e)` | - | - | +| children | 卡片内容 | `node` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | +| ...rest | 其他属性 | - | - | - | + +### CheckableTag + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +| -------------- | ------------ | ------------- | ------ | ------- | +| checked | 当前选中状态 | `boolean` | - | - | +| defaultChecked | 默认选中 | `boolean` | - | `false` | +| disabled | 是否禁用标签 | `boolean` | - | `false` | +| onChange | 状态改变回调 | `function(e)` | - | - | +| children | 卡片内容 | `node` | - | - | +| className | 自定义类名 | `string` | - | - | +| ...rest | 其他属性 | - | - | - | + +说明: + +- `PRESET_COLORS`:[ + 'magenta','red','volcano','orange','gold','lime','green','cyan','blue','geekblue','purple', + 'success','processing','warning','error','default' + ] +- 当传入`checked`时 CheckableTag 为外部受控状态。 diff --git a/packages/inula2-ui2/inulaUI/src/tooltip/index.md b/packages/inula2-ui2/inulaUI/src/tooltip/index.md new file mode 100644 index 00000000..9d1d62f7 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/tooltip/index.md @@ -0,0 +1,148 @@ +# Tooltip 文字提示 + +简单的文字提示气泡框。 + +## 何时使用 + +鼠标移入则显示提示,移出消失,气泡浮层不承载复杂文本和操作。 + +可用来代替系统默认的 title 提示,提供一个 按钮/文字/操作 的文案解释。 + +## 代码演示 + + +
+ +

基本用法

+

最基础的 Tooltip 用法,鼠标悬停显示提示内容。

+ +
+ 查看示例代码 + +```jsx | pure +import {Tooltip,Button} from 'inula-ui'; + +function Demo1() { + return ( +
+ + + +
+ ); +} + +export default Demo1; + +``` + +
+
+ + + +
+ +

不同位置

+

Tooltip 支持在上、下、左、右等不同方向显示。

+ +
+ 查看示例代码 + +```jsx | pure +import {Tooltip,Button} from 'inula-ui'; + +function Demo() { + return ( +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ ); +} +export default Demo; + +``` + +
+
+ + + +
+ +

模式

+

Tooltip 支持hover和click模式

+ +
+ 查看示例代码 + +```jsx | pure +import {Tooltip,Button} from 'inula-ui'; + +function Demo() { + return ( +
+
+ + + +
+
+ + + +
+
+ ); +} +export default Demo; +``` + +
+
+ + +## API + +| 属性 | 说明 | 类型 | 可选值 | 默认值 | +|---|---|---|---|---| +| title | 提示内容 | `ReactNode` | - | - | +| placement | 提示框位置 | `string` | `top` / `bottom` / `left` / `right` | `top` | +| trigger | 触发方式 | `string` | `hover` / `click` | `hover` | +| className | 自定义类名 | `string` | - | `""` | +| style | 行内样式 | `CSSProperties` | - | `{}` | +| children | 触发节点 | `ReactNode` | - | - | + +说明: + +- 触发说明:`hover` 下鼠标移入显示/移出隐藏;`click` 下单击切换显隐; +- 点击触发节点与浮层外部区域会关闭已打开的提示框(外部点击防抖由文档事件实现)。 +- `className` 与 `style` 作用于外层包裹元素(触发节点容器)。 diff --git a/packages/inula2-ui2/inulaUI/src/tree/index.md b/packages/inula2-ui2/inulaUI/src/tree/index.md new file mode 100644 index 00000000..0b3697f2 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/src/tree/index.md @@ -0,0 +1,506 @@ +# Tree 树形控件 + +## 何时使用 + +文件夹、组织架构、生物分类、国家地区等等,世间万物的大多数结构都是树形结构。使用`树控件`可以完整展现其中的层级关系,并具有展开收起选择等交互功能。 + +## 代码演示 + + +
+ +

基本

+

基本的checkbox选中、select选中、展开收起

+ +
+ 查看示例代码 + +```jsx | pure +import { Tree } from 'inula-ui'; + +const TreeDemo = () => { + const onSelect = (selectedKeys, info) => { + console.log('selected', selectedKeys, info); + }; + + const onCheck = (checkedKeys, info) => { + console.log('onCheck', checkedKeys, info); + }; + const treeData = [ + { + title: 'parent 1', + key: '0-0', + children: [ + { + title: 'parent 1-0', + key: '0-0-0', + disabled: true, + children: [ + { + title: 'leaf', + key: '0-0-0-0', + disableCheckbox: true, + }, + { + title: 'leaf', + key: '0-0-0-1', + }, + ], + }, + { + title: 'parent 1-1', + key: '0-0-1', + children: [ + { + title: sss, + key: '0-0-1-0', + }, + ], + }, + { title: 'parent 1-0', key: '0-0-2' }, + ], + }, + ]; + + return ( +
+
+ +
+
+ ); +}; + +export default TreeDemo; +``` + +
+
+ + + +
+ +

受控示例

+

外部受控控制checkbox选择,select选中,展开收起

+ +
+ 查看示例代码 + +```jsx | pure +import { Tree } from 'inula-ui'; + +const treeData = [ + { + title: '0-0', + key: '0-0', + children: [ + { + title: '0-0-0', + key: '0-0-0', + children: [ + { title: '0-0-0-0', key: '0-0-0-0' }, + { title: '0-0-0-1', key: '0-0-0-1' }, + { title: '0-0-0-2', key: '0-0-0-2' }, + ], + }, + { + title: '0-0-1', + key: '0-0-1', + children: [ + { title: '0-0-1-0', key: '0-0-1-0' }, + { title: '0-0-1-1', key: '0-0-1-1' }, + { title: '0-0-1-2', key: '0-0-1-2' }, + ], + }, + { + title: '0-0-2', + key: '0-0-2', + }, + ], + }, + { + title: '0-1', + key: '0-1', + children: [ + { title: '0-1-0-0', key: '0-1-0-0' }, + { title: '0-1-0-1', key: '0-1-0-1' }, + { title: '0-1-0-2', key: '0-1-0-2' }, + ], + }, + { + title: '0-2', + key: '0-2', + }, +]; + +const TreeDemo = () => { + let expandedKeys = ['0-0-0', '0-0-1']; + let checkedKeys = ['0-0-0']; + let selectedKeys = []; + let autoExpandParent = true; + + const onExpand = (expandedKeysValue) => { + console.log('onExpand', expandedKeysValue); + expandedKeys = expandedKeysValue; + autoExpandParent = false; + }; + + const onCheck = (checkedKeysValue) => { + console.log('onCheck', checkedKeysValue); + checkedKeys = checkedKeysValue; + }; + + const onSelect = (selectedKeysValue, info) => { + console.log('onSelect', info); + selectedKeys = selectedKeysValue; + }; + + return ( + + ); +}; + +export default TreeDemo; +``` + +
+
+ + + +
+ +

自定义图标、连接线

+

可以文字前图标和展开按钮图标,支持连接线

+ +
+ 查看示例代码 + +```jsx | pure +import { Tree, Icon } from 'inula-ui'; + +const treeData1 = [ + { + title: 'parent 1', + key: '0-0', + icon: , + children: [ + { + title: 'leaf', + key: '0-0-0', + icon: ( + + ), + }, + { + title: 'leaf', + key: '0-0-1', + icon: , + }, + ], + }, +]; + +const treeData2 = [ + { + title: 'parent 1', + key: '0-0', + children: [ + { + title: 'parent 1-0', + key: '0-0-0', + children: [ + { + title: 'leaf', + key: '0-0-0-0', + }, + { + title: 'leaf', + key: '0-0-0-1', + }, + { + title: 'leaf', + key: '0-0-0-2', + }, + ], + }, + { + title: 'parent 1-1', + key: '0-0-1', + children: [ + { + title: 'leaf', + key: '0-0-1-0', + }, + ], + }, + { + title: 'parent 1-2', + key: '0-0-2', + children: [ + { + title: 'leaf', + key: '0-0-2-0', + }, + { + title: 'leaf', + key: '0-0-2-1', + }, + ], + }, + ], + }, +]; + +const TreeDemo = () => { + const onSelect = (selectedKeys, info) => { + console.log('selected', selectedKeys, info); + }; + return ( +
+
+ } + treeData={treeData1} + /> +
+
+ } + defaultExpandedKeys={['0-0-0']} + onSelect={onSelect} + treeData={treeData2} + /> +
+
+ ); +}; + +export default TreeDemo; +``` + +
+
+ + + +
+ +

异步加载

+

支持树控件异步加载。

+ +
+ 查看示例代码 + +```jsx | pure +import { Tree } from 'inula-ui'; + +const initTreeData = [ + { title: 'Expand to load', key: '0' }, + { title: 'Expand to load', key: '1' }, + { title: 'Tree Node', key: '2', isLeaf: true }, +]; + +const updateTreeData = (list, key, children) => + list.map((node) => { + if (node.key === key) { + return { + ...node, + children, + }; + } + if (node.children) { + return { + ...node, + children: updateTreeData(node.children, key, children), + }; + } + return node; + }); + +const TreeDemo = () => { + let treeData = initTreeData; + + const onLoadData = ({ key, children }) => + new Promise((resolve) => { + if (children) { + resolve(); + return; + } + setTimeout(() => { + treeData = updateTreeData(treeData, key, [ + { title: 'Child Node', key: `${key}-0` }, + { title: 'Child Node', key: `${key}-1` }, + ]); + + resolve(); + }, 1000); + }); + + return ; +}; + +export default TreeDemo; +``` + +
+
+ + + +
+ +

虚拟列表

+

数控件支持虚拟列表。

+ +
+ 查看示例代码 + +```jsx | pure +import { Tree } from 'inula-ui'; + +const dig = (path = '0', level = 3) => { + const list = []; + for (let i = 0; i < 10; i += 1) { + const key = `${path}-${i}`; + const treeNode = { + title: key, + key, + }; + + if (level > 0) { + treeNode.children = dig(key, level - 1); + } + + list.push(treeNode); + } + return list; +}; + +const treeData = dig(); + +const TreeDemo = () => ( + { + const title = item.title; + return {title}; + }} + /> +); + +export default TreeDemo; +``` + +
+
+ + +## API + +### Card + +| 属性 | 说明 | 类型 | 可选值 | 默认值     | +| ------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------ | ------------------------------ | +| autoExpandParent | 是否自动展开父节点 | `boolean` | - | `false` | +| checkable | 是否显示复选框 | `boolean` | - | `false` | +| checkedKeys | 受控选中复选框的树节点 | `string[] \| checkStrictly:{checked: string[], halfChecked: string[]}` | - | `[]` | +| checkStrictly | 父子节点不再关联,完全受控 | `boolean` | - | `false` | +| defaultCheckedKeys | 默认选中的树节点 | `string[]` | - | `[]` | +| defaultExpandAll | 默认展开所有树节点 | `boolean` | - | `false` | +| defaultExpandParent | 默认展开父节点 | `boolean` | - | `true` | +| defaultExpandedKeys | 默认展开指定的树节点 | `string[]` | - | `[]` | +| expandedKeys | 受控展开的树节点 | `string[]` | - | `[]` | +| disabled | 禁用树 | `boolean` | - | `false` | +| height | 设置虚拟滚动容器高度,设置后内部不再支持横向滚动 | `number` | - | - | +| icon | 标题之前插入自定义图标,需设置 showIcon 为 true | `node` | - | - | +| loadData | 异步加载数据,需设置 loadData 属性,返回 Promise 对象,返回值为树节点数据 | `function` | - | - | +| loadedKeys | 受控已加载的树节点,用于控制异步加载,需配合 loadData 属性使用 | `string[]` | - | `[]` | +| multiple | 是否支持多选 | `boolean` | - | `false` | +| selectable | 是否支持选中,为 false 时点击为 check 选中 | `boolean` | - | `true` | +| defaultSelectedKeys | 默认选中的树节点,多选需配合 multiple 属性使用 | `string[]` | - | `[]` | +| selectedKeys | 受控选中的树节点,多选需配合 multiple 属性使用 | `string[]` | - | `[]` | +| showIcon | 是否显示图标 | `boolean` | - | `false` | +| showLine | 是否显示连接线 | `boolean` | - | `false` | +| switcherIcon | 自定义展开图标 | `node` | - | - | +| switcherLoadingIcon | 自定义加载中图标 | `node` | - | - | +| titleRender | 自定义渲染节点 | `function` | - | - | +| rootStyle | Tree 最外层 style | `CSSProperties` | - | - | +| treeData | 树节点数据 | `array<{key, title, children, (disabled, selectable)}>` | - | - | +| virtual | 是否开启虚拟滚动,设置 false 关闭虚拟滚动 | `boolean` | - | `false` | +| onCheck | 点击复选框触发 | `function(e)` | - | - | +| onExpand | 展开/收起节点时触发 | `function(e)` | - | - | +| onLoad | 异步加载数据时触发 | `function(e)` | - | - | +| onSelect | 选中/取消选中节点时触发 | `function(e)` | - | - | +| className | 自定义类名 | `string` | - | - | +| style | 行内样式 | `CSSProperties` | - | - | +| ...rest | 其他属性 | - | - | - | + +说明: + +- `check、select、expand` 均支持受控。 +- 虚拟列表模式一定要设置`height`高度,不然不会生效。 diff --git a/packages/inula2-ui2/inulaUI/tsconfig.json b/packages/inula2-ui2/inulaUI/tsconfig.json new file mode 100644 index 00000000..2a278884 --- /dev/null +++ b/packages/inula2-ui2/inulaUI/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "strict": true, + "declaration": true, + "skipLibCheck": true, + "esModuleInterop": true, + "jsx": "react", + "baseUrl": "./", + "paths": { + "@@/*": [".dumi/tmp/*"], + "inulaUI": ["src"], + "inulaUI/*": ["src/*", "*"] + }, + "allowJs": true, + "checkJs": false + }, + "include": [".dumirc.ts", "src/**/*"] +} diff --git a/packages/inula2-ui2/library_code/.gitignore b/packages/inula2-ui2/library_code/.gitignore new file mode 100644 index 00000000..2a3120ea --- /dev/null +++ b/packages/inula2-ui2/library_code/.gitignore @@ -0,0 +1,17 @@ +# 依赖目录 +node_modules/ +.vscode/ +.idea/ + +# 构建产物 +dist/ +build/ +*.log + +# 缓存文件 +.cache/ +*.tmp + +# 包管理器文件 +yarn.lock +package-lock.json diff --git a/packages/inula2-ui2/library_code/index.html b/packages/inula2-ui2/library_code/index.html new file mode 100644 index 00000000..30fdb852 --- /dev/null +++ b/packages/inula2-ui2/library_code/index.html @@ -0,0 +1,17 @@ + + + + + Inula-Next + + + + + + +
+
+
+ + + diff --git a/packages/inula2-ui2/library_code/package.json b/packages/inula2-ui2/library_code/package.json new file mode 100644 index 00000000..15a21efc --- /dev/null +++ b/packages/inula2-ui2/library_code/package.json @@ -0,0 +1,46 @@ +{ + "name": "inula-ui", + "version": "0.0.8", + "description": "openinula2.0 组件库", + "author": "陈海彬、涂宇恒", + "repository": { + "type": "git", + "url": "https://github.com/cychenhaibin/openinula2.0_library.git" + }, + "type": "module", + "main": "dist/index.cjs.js", + "module": "dist/index.es.js", + "exports": { + ".": { + "import": "./dist/index.es.js", + "require": "./dist/index.cjs.js" + }, + "./notification": { + "import": "./dist/notification.es.js", + "require": "./dist/notification.cjs.js" + }, + "./style.css": "./dist/style.css", + "./dist/*": "./dist/*" + }, + "files": [ + "dist" + ], + "sideEffects": [ + "**/*.css" + ], + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@openinula/next": "^0.0.5" + }, + "devDependencies": { + "@openinula/unplugin": "^0.0.2", + "vite": "^4.4.9" + }, + "keywords": [ + "inula-next" + ] +} diff --git a/packages/inula2-ui2/library_code/src/colors.css b/packages/inula2-ui2/library_code/src/colors.css new file mode 100644 index 00000000..2c853489 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/colors.css @@ -0,0 +1,112 @@ +:root { + /* 主要颜色 */ + --inula-color-primary: #1677ff; + /* 主要颜色 hover */ + --inula-color-primary-hover: #4096ff; + /* 主要颜色 active */ + --inula-color-primary-active: #0958d9; + /* 默认背景颜色 */ + --inula-color-default-bg: #fff; + /* 默认背景颜色 hover */ + --inula-color-default-hover-bg: #f0f7ff; + /* 默认背景颜色 active */ + --inula-color-default-active-bg: #e6f4ff; + /* 警告背景颜色*/ + --inula-color-warning-bg: #fffbe6; + /* 危险背景颜色*/ + --inula-color-danger-bg: #fff2f0; + /* 默认边框颜色 */ + --inula-color-default-border: #d9d9d9; + /* 警告边框颜色 */ + --inula-color-warning-border: #ffe58f; + /* 危险边框颜色 */ + --inula-color-danger-border: #ffccc7; + /* 默认文字颜色 */ + --inula-color-primary-text: #333; + /* 次要文字颜色 */ + --inula-color-secondary-text: #666; + /* 禁用文字颜色 */ + --inula-color-disabled-text: #999; + /* 警告文字颜色 */ + --inula-color-warning-text: #faad14; + /* 危险文字颜色 */ + --inula-color-danger-text: #ff4d4f; + + /* 虚线按钮颜色 */ + --inula-color-dashed-border: #d9d9d9; + + /* 文本按钮颜色 */ + --inula-color-text: #1677ff; + --inula-color-text-hover-bg: #e6f4ff; + --inula-color-text-active-bg: #bae0ff; + + /* 链接按钮颜色 */ + --inula-color-link: #1677ff; + --inula-color-link-hover: #0958d9; + + /* 危险按钮颜色 */ + --inula-color-danger: #ff4d4f; + --inula-color-danger-bg: #fff1f0; + --inula-color-danger-hover-bg: #ff4d4f; + --inula-color-danger-hover-text: #fff; + --inula-color-danger-active-bg: #d9363e; + + /* 幽灵按钮背景色 */ + --inula-color-ghost-bg-hover: rgba(22, 119, 255, 0.08); + --inula-color-ghost-bg-active: rgba(22, 119, 255, 0.16); + + /* 禁用状态颜色 */ + --inula-color-disabled-bg: #fff; + --inula-color-disabled-text: #333; + --inula-color-disabled-border: #d9d9d9; + + /* 加载中 spinner 颜色 */ + --inula-color-spinner: #ccc; + --inula-color-spinner-active: #1677ff; + + /* demo 深色背景 */ + --inula-demo-dark-bg: #222; + + /* Radio 颜色 */ + --inula-radio-bg: #fff; + --inula-radio-border: #d9d9d9; + --inula-radio-hover-border: #1677ff; + --inula-radio-hover-shadow: 0 0 0 2px rgba(64,158,255,0.12); + --inula-radio-checked-border: #1677ff; + --inula-radio-checked-bg: #1677ff; + --inula-radio-disabled-bg: #f5f5f5; + --inula-radio-disabled-border: #d9d9d9; + --inula-radio-disabled-dot: #d9d9d9; + --inula-radio-disabled-label: #c0c4cc; + --inula-radio-readonly-bg: #eaf4ff; + --inula-radio-readonly-border: #b3c6e6; + --inula-radio-readonly-label: #bfbfbf; + --inula-radio-readonly-dot: #b3d4fc; + + /* Select 颜色 */ + --inula-select-bg: #fff; + --inula-select-border: #d9d9d9; + --inula-select-option-hover-bg: #f5faff; + --inula-select-border-top: #e8e8e8; + --inula-select-hover-border: #4096ff; + --inula-select-hover-bg: #f0f7ff; + --inula-select-active-bg: #e6f4ff; + --inula-select-disabled-bg: #f5f5f5; + --inula-select-disabled-text: #bfbfbf; + --inula-select-disabled-border: #d9d9d9; + --inula-select-readonly-bg: #eaf4ff; + --inula-select-tag-hover-bg: #e6f4ff; + --inula-select-tag-hover-text: #1677ff; + --inula-select-arrow-color: #999; + --inula-select-tag-text: #333; + + /* 变体样式颜色 - 参考 Ant Design 5.0 设计规范 */ + --inula-variant-filled-bg: #fafafa; + --inula-variant-filled-hover-bg: #f0f0f0; + --inula-variant-filled-focus-bg: #ffffff; + --inula-variant-borderless-hover-bg: rgba(0, 0, 0, 0.04); + --inula-variant-borderless-focus-bg: rgba(0, 0, 0, 0.08); + --inula-variant-underlined-border: #d9d9d9; + --inula-variant-underlined-hover-border: #4096ff; + --inula-variant-underlined-focus-border: #1677ff; +} \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/Notification/demo.jsx b/packages/inula2-ui2/library_code/src/components/Notification/demo.jsx new file mode 100644 index 00000000..c125f0c8 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/Notification/demo.jsx @@ -0,0 +1,46 @@ +// import Button from './index.jsx'; +import demo1 from './demos/demo1.jsx'; +import demo2 from './demos/demo2.jsx'; +import demo3 from './demos/demo3.jsx'; +import demo4 from './demos/demo4.jsx'; +import demo5 from './demos/demo5.jsx'; + +function NotificationDemo() { + let loading = false; + return ( +
+
+

基础通知

+
演示信息、成功、警告、错误四种类型的通知用法。
+
+
+ +
+

自定义关闭按钮

+
演示如何自定义通知的关闭按钮文本和样式。
+
+
+ +
+

自定义操作按钮

+
演示如何为通知添加自定义操作按钮。
+
+
+ +
+

弹出位置

+
演示通知在不同屏幕位置的弹出效果。
+
+
+ +
+

选择背景颜色

+
可以传入bgColor显示不同的背景颜色
+
+
+ + +
+ ); +} +export default NotificationDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/Notification/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo1.jsx new file mode 100644 index 00000000..f893a61a --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo1.jsx @@ -0,0 +1,23 @@ +import { info, success, warning, error } from '../index.jsx'; +import Button from '../../button/index.jsx'; +import '../index.css'; + +function Demo1() { + function show(type) { + if (type === 'info') info({ message: '信息提示', bgColor: true, description: '这是一条普通的信息提示' }); + if (type === 'success') success({ message: '成功提示', description: '操作已成功完成' }); + if (type === 'warning') warning({ message: '警告提示', description: '请注意相关事项' }); + if (type === 'error') error({ message: '错误提示', description: '操作失败,请重试' }); + if (type === 'text') text({ message: '文本提示', bgColor: true, description: '这是一条普通的文本提示' }); + } + return ( +
+ + + + +
+ ); +} + +export default Demo1; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/Notification/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo2.jsx new file mode 100644 index 00000000..9ae92335 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo2.jsx @@ -0,0 +1,21 @@ +import { text } from '../index.jsx'; +import Button from '../../button/index.jsx'; +import '../index.css'; + +function Demo2() { + function showCustomClose() { + text({ + message: '自定义关闭按钮', + description: '关闭按钮变成了"关闭"并加粗变色', + closeText: '关闭', + closeClassName: 'my-close-btn', + }); + } + return ( +
+ +
+ ); +} + +export default Demo2; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/Notification/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo3.jsx new file mode 100644 index 00000000..6a71dfe2 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo3.jsx @@ -0,0 +1,25 @@ +import { text } from '../index.jsx'; +import Button from '../../button/index.jsx'; +import '../index.css'; + +function Demo3() { + function showCustomActions() { + text({ + message: 'Notification Title', + description: 'A function will be called after the notification is closed...', + actions: ({ notification, remove, onClose }) => ( + <> + + + + ) + }); + } + return ( +
+ +
+ ); +} + +export default Demo3; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/Notification/demos/demo4.jsx b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo4.jsx new file mode 100644 index 00000000..91f08a2d --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo4.jsx @@ -0,0 +1,18 @@ +import { text } from '../index.jsx'; +import Button from '../../button/index.jsx'; +import '../index.css'; + +function Demo4() { + return ( +
+ + + + + + +
+ ); +} + +export default Demo4; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/Notification/demos/demo5.jsx b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo5.jsx new file mode 100644 index 00000000..571a47ba --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/Notification/demos/demo5.jsx @@ -0,0 +1,18 @@ +import { text, info } from '../index.jsx'; +import Button from '../../button/index.jsx'; +import '../index.css'; + +function Demo5() { + function show(type) { + if (type === 'text') text({ message: '不带bgColor', description: '这是一条普通的信息提示' }); + if (type === 'info') info({ message: '带bgColor', bgColor: true, description: '这是一条普通的文本提示' }); + } + return ( +
+ + +
+ ); +} + +export default Demo5; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/Notification/index.css b/packages/inula2-ui2/library_code/src/components/Notification/index.css new file mode 100644 index 00000000..d0b35842 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/Notification/index.css @@ -0,0 +1,197 @@ +@import '../../colors.css'; +.inula-notification-wrapper { + width: 368px; + position: fixed; + top: 24px; + right: 24px; + z-index: 2000; + display: flex; + flex-direction: column; + gap: 16px; + pointer-events: none; +} +.inula-notification { + display: flex; + align-items: flex-start; + background: #fff; + border-radius: 8px; + box-shadow: 0 6px 24px 0 rgba(0,0,0,0.12); + padding: 18px 28px 18px 18px; + min-width: 320px; + max-width: 368px; + border-left: 4px solid var(--inula-color-primary); + margin: 0; + position: relative; + animation: inula-notification-fadein 0.4s cubic-bezier(.23,1.01,.32,1); + transition: box-shadow 0.2s, transform 0.2s, opacity 0.3s; + opacity: 1; + pointer-events: auto; + margin-bottom: 8px; +} +.inula-notification-info { + border-left-color: var(--inula-color-primary); + background: #e6f4ff; +} +.inula-notification-success { + border-left-color: #52c41a; + background: #f6ffed; +} +.inula-notification-warning { + border-left-color: #faad14; + background: #fffbe6; +} +.inula-notification-error { + border-left-color: var(--inula-color-danger); + background: #fff2f0; +} + +.inula-notification-icon { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + font-size: 22px; + font-weight: bold; + border-radius: 50%; + margin-right: 16px; + margin-top: 2px; + flex-shrink: 0; + box-shadow: 0 2px 8px rgba(0,0,0,0.04); +} +.inula-notification-icon-success { background: #f6ffed; color: #52c41a; } +.inula-notification-icon-warning { background: #fffbe6; color: #faad14; } +.inula-notification-icon-error { background: #fff2f0; color: var(--inula-color-danger); } +.inula-notification-icon-info { background: #e6f4ff; color: var(--inula-color-primary); } + +.inula-notification-content { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 2px; +} +.inula-notification-message { + font-weight: 600; + font-size: 16px; + color: #222; + margin-bottom: 4px; + line-height: 1.3; +} +.inula-notification-description { + font-size: 14px; + color: #666; + line-height: 1.5; +} +.inula-notification-close { + font-size: 18px; + color: #bbb; + cursor: pointer; + margin-left: 18px; + user-select: none; + transition: color 0.2s, background 0.2s; + border-radius: 50%; + padding: 2px 6px; + position: absolute; + top: 12px; + right: 16px; + background: transparent; +} +.inula-notification-close:hover { + color: #1677ff; + background: #f0f5ff; +} +@keyframes inula-notification-fadein { + from { opacity: 0; transform: translateY(-30px) scale(0.98); } + to { opacity: 1; transform: translateY(0) scale(1); } +} +@keyframes inula-notification-fadeout { + from { opacity: 1; transform: translateY(0) scale(1); } + to { opacity: 0; transform: translateY(30px) scale(0.98); } +} +.inula-notification-text { + max-width: 100%; + color: #333; +} +.inula-notification-text .inula-notification-message { + font-size: 15px; + font-weight: 400; + color: #333; +} +.inula-notification-text .inula-notification-close { + top: 0; + right: 0; +} +.inula-notification-actions { + display: flex; + margin-top: 10px; + justify-content: flex-end; +} + +/* 顶部右侧 */ +.inula-notification-wrapper-topRight { + position: fixed; + top: 24px; + right: 24px; + z-index: 1000; + display: flex; + flex-direction: column; + align-items: flex-end; +} + +/* 顶部左侧 */ +.inula-notification-wrapper-topLeft { + position: fixed; + top: 24px; + left: 24px; + z-index: 1000; + display: flex; + flex-direction: column; + align-items: flex-start; +} + +/* 底部右侧 */ +.inula-notification-wrapper-bottomRight { + position: fixed; + bottom: 24px; + right: 24px; + z-index: 1000; + display: flex; + flex-direction: column-reverse; + align-items: flex-end; +} + +/* 底部左侧 */ +.inula-notification-wrapper-bottomLeft { + position: fixed; + bottom: 24px; + left: 24px; + z-index: 1000; + display: flex; + flex-direction: column-reverse; + align-items: flex-start; +} + +/* 顶部正中 */ +.inula-notification-wrapper-top { + position: fixed; + top: 24px; + left: 50%; + transform: translateX(-50%); + z-index: 1000; + display: flex; + flex-direction: column; + align-items: center; +} + +/* 底部正中 */ +.inula-notification-wrapper-bottom { + position: fixed; + bottom: 24px; + left: 50%; + transform: translateX(-50%); + z-index: 1000; + display: flex; + flex-direction: column-reverse; + align-items: center; +} \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/Notification/index.jsx b/packages/inula2-ui2/library_code/src/components/Notification/index.jsx new file mode 100644 index 00000000..b660289f --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/Notification/index.jsx @@ -0,0 +1,122 @@ +import './index.css'; +import { didMount, willUnmount } from '@openinula/next'; + +const defaultPlacement = 'topRight'; +const placementClassMap = { + topLeft: 'inula-notification-wrapper-topLeft', + topRight: 'inula-notification-wrapper-topRight', + bottomLeft: 'inula-notification-wrapper-bottomLeft', + bottomRight: 'inula-notification-wrapper-bottomRight', + top: 'inula-notification-wrapper-top', + bottom: 'inula-notification-wrapper-bottom', +}; + +function getRoot(placement = defaultPlacement) { + const rootId = `__inula_notification_root_${placement}__`; + let root = document.getElementById(rootId); + if (!root) { + root = document.createElement('div'); + root.id = rootId; + root.className = placementClassMap[placement] || placementClassMap[defaultPlacement]; + document.body.appendChild(root); + } + return root; +} + +let notifications = []; +let notificationId = 0; + +function renderNotifications() { + // 按 placement 分类渲染 + const placements = {}; + notifications.forEach(item => { + const placement = item.placement || defaultPlacement; + if (!placements[placement]) placements[placement] = []; + placements[placement].push(item); + }); + Object.keys(placementClassMap).forEach(placement => { + const root = getRoot(placement); + root.innerHTML = ''; + const items = placements[placement] || []; + items.slice().reverse().forEach(item => { + const el = document.createElement('div'); + root.appendChild(el); + window.render( + remove(item.key)} + />, el + ); + }); + }); +} + +function add(notification) { + notification.key = 'notice_' + (++notificationId); + notifications.push(notification); + renderNotifications(); + if (notification.duration !== 0) { + setTimeout(() => remove(notification.key), notification.duration || 3000); + } +} + +function remove(key) { + notifications = notifications.filter(n => n.key !== key); + renderNotifications(); +} + +export function open(opts) { + add({ ...opts }); +} + +export function info(opts) { open({ ...opts, type: 'info' }); } +export function success(opts) { open({ ...opts, type: 'success' }); } +export function warning(opts) { open({ ...opts, type: 'warning' }); } +export function error(opts) { open({ ...opts, type: 'error' }); } +export function text(opts) { open({ ...opts, type: 'text' }); } + +function Notification({ key, type = 'info', message, description, onClose, closeText, closeClassName, actions, bgColor }) { + let icon; + if (type === 'success') icon = ; + else if (type === 'error') icon = ; + else if (type === 'warning') icon = !; + else if (type === 'info') icon = i; + else icon = null; // type === 'text' 时无 icon + + let notificationClass = 'inula-notification'; + if (type === 'text') { + notificationClass += ' inula-notification-text'; + } else if (type) { + if (bgColor) { + notificationClass += ' inula-notification-' + type; + }else { + notificationClass = 'inula-notification'; + } + } + + return ( +
+ {icon} +
+
{message}
+ {description &&
{description}
} + {actions && ( +
+ {typeof actions === 'function' + ? actions({ notification: { key }, remove: onClose, onClose }) + : actions} +
+ )} +
+ + {closeText || '×'} + +
+ ); +} + +export default Notification; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/button/demo.jsx b/packages/inula2-ui2/library_code/src/components/button/demo.jsx new file mode 100644 index 00000000..c0785b26 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/demo.jsx @@ -0,0 +1,51 @@ +// import Button from './index.jsx'; +import demo1 from './demos/demo1.jsx'; +import demo2 from './demos/demo2.jsx'; +import demo3 from './demos/demo3.jsx'; +import demo4 from './demos/demo4.jsx'; +import demo5 from './demos/demo5.jsx'; +import demo6 from './demos/demo6.jsx'; + +function ButtonDemo() { + let loading = false; + return ( +
+
+

基本

+
展示按钮的五种类型:主按钮、默认按钮、虚线按钮、文本按钮、链接按钮、变体样式。
+
+
+ +
+

危险

+
展示五种类型按钮的'危险'状态用法。
+
+
+ +
+

幽灵

+
展示按钮的'幽灵'状态,包括主按钮、默认按钮和危险主按钮的幽灵样式。
+
+
+ +
+

禁用

+
展示五种类型按钮的'禁用'状态用法。
+
+
+ +
+

加载中

+
展示五种类型按钮的'加载中'状态用法。
+
+
+ +
+

交互加载

+
演示点击按钮后进入加载中状态,1.5秒后恢复。
+
+
+
+ ); +} +export default ButtonDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/button/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/button/demos/demo1.jsx new file mode 100644 index 00000000..04769c68 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/demos/demo1.jsx @@ -0,0 +1,19 @@ +import Button from '../index.jsx'; + +function ButtonDemo() { + let loading = false; + return ( +
+ + + + + + + + + +
+ ); +} +export default ButtonDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/button/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/button/demos/demo2.jsx new file mode 100644 index 00000000..318922e7 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/demos/demo2.jsx @@ -0,0 +1,15 @@ +import Button from '../index.jsx'; + +function ButtonDemo() { + let loading = false; + return ( +
+ + + + + +
+ ); +} +export default ButtonDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/button/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/button/demos/demo3.jsx new file mode 100644 index 00000000..930358a8 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/demos/demo3.jsx @@ -0,0 +1,12 @@ +import Button from '../index.jsx'; + +function ButtonDemo() { + return ( +
+ + + +
+ ); +} +export default ButtonDemo; diff --git a/packages/inula2-ui2/library_code/src/components/button/demos/demo4.jsx b/packages/inula2-ui2/library_code/src/components/button/demos/demo4.jsx new file mode 100644 index 00000000..2400f71a --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/demos/demo4.jsx @@ -0,0 +1,15 @@ + +import Button from '../index.jsx'; + +function ButtonDemo() { + return ( +
+ + + + + +
+ ); +} +export default ButtonDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/button/demos/demo5.jsx b/packages/inula2-ui2/library_code/src/components/button/demos/demo5.jsx new file mode 100644 index 00000000..b7223eab --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/demos/demo5.jsx @@ -0,0 +1,15 @@ + +import Button from '../index.jsx'; + +function ButtonDemo() { + return ( +
+ + + + + +
+ ); +} +export default ButtonDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/button/demos/demo6.jsx b/packages/inula2-ui2/library_code/src/components/button/demos/demo6.jsx new file mode 100644 index 00000000..baefee35 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/demos/demo6.jsx @@ -0,0 +1,16 @@ + +import Button from '../index.jsx'; + +function ButtonDemo() { + let loading = false; + return ( +
+ +
+ ); +} +export default ButtonDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/button/index.css b/packages/inula2-ui2/library_code/src/components/button/index.css new file mode 100644 index 00000000..1c928194 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/index.css @@ -0,0 +1,310 @@ +@import '../../colors.css'; +.inula-btn { + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 14px; + padding: 0 16px; + height: 32px; + border-radius: 4px; + border: 1px solid var(--inula-color-default-border); + background: var(--inula-color-default-bg); + color: var(--inula-color-primary-text); + cursor: pointer; + transition: all 0.2s; + outline: none; +} + +/* 主按钮 */ +.inula-btn-primary { + background: var(--inula-color-primary); + border-color: var(--inula-color-primary); + color: #fff; +} +.inula-btn-primary:hover { + background: var(--inula-color-primary-hover); + border-color: var(--inula-color-primary-hover); + color: #fff; +} +.inula-btn-primary:active { + background: var(--inula-color-primary-active); + border-color: var(--inula-color-primary-active); + color: #fff; +} + +/* 默认按钮 */ +.inula-btn-default { + background: var(--inula-color-default-bg); + border-color: var(--inula-color-default-border); + color: var(--inula-color-primary-text); +} +.inula-btn-default:hover { + color: var(--inula-color-primary); + border-color: var(--inula-color-primary); + background: var(--inula-color-default-hover-bg); +} +.inula-btn-default:active { + background: var(--inula-color-default-active-bg); + border-color: var(--inula-color-primary); + color: var(--inula-color-primary); +} + +/* 虚线按钮 */ +.inula-btn-dashed { + border-style: dashed; + background: var(--inula-color-default-bg); + border-color: var(--inula-color-dashed-border); + color: var(--inula-color-primary-text); +} +.inula-btn-dashed:hover { + color: var(--inula-color-primary); + border-color: var(--inula-color-primary); + background: var(--inula-color-default-hover-bg); +} +.inula-btn-dashed:active { + background: var(--inula-color-default-active-bg); + border-color: var(--inula-color-primary); + color: var(--inula-color-primary); +} + +/* 文本按钮 */ +.inula-btn-text { + background: none; + border: none; + color: var(--inula-color-text); + box-shadow: none; +} +.inula-btn-text:hover { + background: var(--inula-color-text-hover-bg); + color: var(--inula-color-primary-active); +} +.inula-btn-text:active { + background: var(--inula-color-text-active-bg); + color: var(--inula-color-primary-active); +} + +/* 链接按钮 */ +.inula-btn-link { + background: none; + border: none; + color: var(--inula-color-link); + text-decoration: underline; + box-shadow: none; +} +.inula-btn-link:hover { + color: var(--inula-color-link-hover); + background: none; + text-decoration: underline; +} +.inula-btn-link:active { + color: var(--inula-color-link-hover); + background: none; +} + +/* 危险按钮 */ +.inula-btn-danger { + color: var(--inula-color-danger); + border-color: var(--inula-color-danger); + background: var(--inula-color-danger-bg); +} +.inula-btn-danger:hover { + color: var(--inula-color-danger-hover-text); + background: var(--inula-color-danger-hover-bg); + border-color: var(--inula-color-danger-hover-bg); +} +.inula-btn-primary.inula-btn-danger { + background: var(--inula-color-danger); + color: #fff; + border-color: var(--inula-color-danger); +} +.inula-btn-primary.inula-btn-danger:hover { + background: var(--inula-color-danger-active-bg); + border-color: var(--inula-color-danger-active-bg); + color: #fff; +} +.inula-btn-primary.inula-btn-danger:active { + background: var(--inula-color-danger-active-bg); + border-color: var(--inula-color-danger-active-bg); + color: #fff; +} + +/* 幽灵按钮基础样式 */ +.inula-btn-ghost { + background: transparent !important; + color: var(--inula-color-primary); + border: 1px solid var(--inula-color-primary); + box-shadow: none; +} + +/* 幽灵主按钮 */ +.inula-btn-primary.inula-btn-ghost { + color: var(--inula-color-primary); + border-color: var(--inula-color-primary); + background: transparent; +} +.inula-btn-primary.inula-btn-ghost:hover { + color: var(--inula-color-primary-hover); + border-color: var(--inula-color-primary-hover); + background: var(--inula-color-ghost-bg-hover); +} +.inula-btn-primary.inula-btn-ghost:active { + color: var(--inula-color-primary-hover); + border-color: var(--inula-color-primary-hover); + background: var(--inula-color-ghost-bg-active); +} + +/* 幽灵危险按钮 */ +.inula-btn-danger.inula-btn-ghost, +.inula-btn-primary.inula-btn-danger.inula-btn-ghost { + color: var(--inula-color-danger); + border-color: var(--inula-color-danger); + background: transparent; +} +.inula-btn-danger.inula-btn-ghost:hover, +.inula-btn-primary.inula-btn-danger.inula-btn-ghost:hover { + color: #fff; + background: var(--inula-color-danger); + border-color: var(--inula-color-danger); +} +.inula-btn-danger.inula-btn-ghost:active { + color: var(--inula-color-danger); + background: var(--inula-color-danger); + border-color: var(--inula-color-danger); +} + +/* 幽灵默认按钮 */ +.inula-btn-default.inula-btn-ghost { + color: var(--inula-color-primary); + border-color: var(--inula-color-primary); + background: transparent; +} +.inula-btn-default.inula-btn-ghost:hover { + color: var(--inula-color-primary-hover); + border-color: var(--inula-color-primary-hover); + background: var(--inula-color-ghost-bg-hover); +} +.inula-btn-default.inula-btn-ghost:active { + color: var(--inula-color-primary-hover); + border-color: var(--inula-color-primary-hover); + background: var(--inula-color-ghost-bg-active); +} + +/* 禁用 */ +.inula-btn-disabled, +.inula-btn:disabled, +.inula-btn-disabled:hover, +.inula-btn:disabled:hover, +.inula-btn-disabled:active, +.inula-btn:disabled:active { + cursor: not-allowed; + opacity: 0.5; + /* background: var(--inula-color-disabled-bg) !important; */ + /* color: var(--inula-color-disabled-text) !important; */ + border-color: var(--inula-color-disabled-border) !important; + box-shadow: none !important; +} + +/* 加载中 */ +.inula-btn-loading { + position: relative; +} +.inula-btn-spinner { + display: inline-block; + width: 16px; + height: 16px; + border: 2px solid var(--inula-color-spinner); + border-top: 2px solid var(--inula-color-spinner-active); + border-radius: 50%; + animation: inula-spin 0.8s linear infinite; + margin-right: 8px; +} +@keyframes inula-spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +/* 幽灵按钮在深色背景下更明显 */ +.demo-dark-bg { + background: var(--inula-demo-dark-bg); + padding: 16px; + display: inline-block; + border-radius: 6px; +} + +/* Button 变体样式 */ + +/* Filled 变体 - 支持Form传递的CSS变量 */ +.inula-btn-filled { + background: var(--inula-form-variant-bg, var(--inula-variant-filled-bg)); + border: 0px solid var(--inula-form-variant-border, transparent); +} + +.inula-btn-filled:hover { + background: var(--inula-form-variant-hover-bg, var(--inula-variant-filled-hover-bg)); + border-color: var(--inula-form-variant-border, transparent); +} + +.inula-btn-filled:focus-within { + border: var(--inula-form-variant-border, none) !important; + box-shadow: none !important; + background: var(--inula-form-variant-focus-bg, var(--inula-variant-borderless-focus-bg)); +} + +.inula-btn-filled.inula-btn-disabled { + background: var(--inula-color-disabled-bg); + border-color: transparent; +} + +/* Borderless 变体 - 支持Form传递的CSS变量 */ +.inula-btn-borderless { + border: var(--inula-form-variant-border, none) !important; + box-shadow: none !important; + background: var(--inula-form-variant-bg, transparent); +} + +.inula-btn-borderless:hover { + border: var(--inula-form-variant-border, none) !important; + box-shadow: none !important; + background: var(--inula-form-variant-hover-bg, var(--inula-variant-borderless-hover-bg)); +} + +.inula-btn-borderless:focus-within { + border: var(--inula-form-variant-border, none) !important; + box-shadow: none !important; + background: var(--inula-form-variant-focus-bg, var(--inula-variant-borderless-focus-bg)); +} + +.inula-btn-borderless.inula-btn-disabled { + background: var(--inula-color-disabled-bg); + border: none !important; + box-shadow: none !important; +} + +/* Underlined 变体 - 支持Form传递的CSS变量 */ +.inula-btn-underlined { + border: var(--inula-form-variant-border, none) !important; + border-bottom: var(--inula-form-variant-bottom-border, 1px solid var(--inula-variant-underlined-border)) !important; + border-radius: 0 !important; + box-shadow: none !important; + background: var(--inula-form-variant-bg, transparent); +} + +.inula-btn-underlined:hover { + border: var(--inula-form-variant-border, none) !important; + border-bottom: var(--inula-form-variant-bottom-hover-border, 1px solid var(--inula-variant-underlined-hover-border)) !important; + box-shadow: none !important; + background: var(--inula-form-variant-hover-bg, transparent); +} + +.inula-btn-underlined:focus-within { + border: var(--inula-form-variant-border, none) !important; + border-bottom: var(--inula-form-variant-bottom-focus-border, 1px solid var(--inula-variant-underlined-focus-border)) !important; + box-shadow: none !important; + background: var(--inula-form-variant-focus-bg, transparent); +} + +.inula-btn-underlined.inula-btn-disabled { + border: none !important; + border-bottom: 1px solid var(--inula-color-disabled-border) !important; + box-shadow: none !important; +} \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/button/index.jsx b/packages/inula2-ui2/library_code/src/components/button/index.jsx new file mode 100644 index 00000000..68a4b511 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/button/index.jsx @@ -0,0 +1,42 @@ +import { render } from '@openinula/next'; +import './index.css'; + +const Button = ({ + type = 'default', // 样式类型:primary, dashed, text, link + danger = false, + ghost = false, + disabled = false, + loading = false, + variant = 'outlined', // outlined | filled | borderless | underlined + children, + onClick, + htmlType = 'button', // 原生 button 类型:button | submit | reset(默认 button,避免表单内默认 submit) + ...rest +}) => { + const classNames = [ + 'inula-btn', + `inula-btn-${type}`, + `inula-btn-${variant}`, + danger ? 'inula-btn-danger' : '', + ghost ? 'inula-btn-ghost' : '', + disabled ? 'inula-btn-disabled' : '', + loading ? 'inula-btn-loading' : '', + ].filter(Boolean).join(' '); + + console.log('Button props:', rest); + + return ( + + ); +}; + +export default Button; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/card/demo.jsx b/packages/inula2-ui2/library_code/src/components/card/demo.jsx new file mode 100644 index 00000000..e363cd87 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/card/demo.jsx @@ -0,0 +1,31 @@ +import demo1 from "./demos/demo1.jsx"; +import demo2 from "./demos/demo2.jsx"; +import demo3 from "./demos/demo3.jsx"; +import demo4 from "./demos/demo4.jsx"; +const CardDemo = () => { + return ( +
+
+

基本样式

+
完整Card布局、边框样式、型号、hover效果
+
+
+
+

加载内容状态、嵌套Card样式

+
+
+
+

CardMeta组件

+
可定义头像、标题和介绍
+
+
+
+

CardGrid组件

+
网格布局内容组件,支持悬停浮空
+
+
+
+ ) +} + +export default CardDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/card/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/card/demos/demo1.jsx new file mode 100644 index 00000000..90eb56a6 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/card/demos/demo1.jsx @@ -0,0 +1,63 @@ +import { Card } from "../index.jsx"; +import Icon from "../../icon/index.jsx"; +import Tag from "../../tag/index.jsx"; + +const actions = [ + , + , + , +]; + +const CardDemo = () => { + return ( +
+ + 完整Card布局 + +
+ More
} + cover={ + example + } + actions={actions} + > +
Card content
+ Card content + Card content + +
+ + 不同大小、边框、hover动效的Card + +
+ +
默认型号,无hover动效
+
+ +
小号,有hover动效
+
+
+ + ); +}; + +export default CardDemo; diff --git a/packages/inula2-ui2/library_code/src/components/card/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/card/demos/demo2.jsx new file mode 100644 index 00000000..efb3dfcf --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/card/demos/demo2.jsx @@ -0,0 +1,71 @@ +import { Card } from "../index.jsx"; +import Switch from "../../switch/index.jsx"; +import Icon from "../../icon/index.jsx"; +import Tag from "../../tag/index.jsx"; + +const actions = [ + , + , + , +]; + +const CardDemo = () => { + let loading = false; + return ( +
+ + 定义加载内容状态的Card + +
+ More
} + cover={ + example + } + actions={actions} + loading={loading} + > +
Card content
+ Card content + Card content + +
+ { + loading = !loading; + }} + /> + 点击切换内容加载状态 +
+ + 嵌套Card样式 + + +
放在Card下的Card组件样式
+
+
+ + ); +}; + +export default CardDemo; diff --git a/packages/inula2-ui2/library_code/src/components/card/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/card/demos/demo3.jsx new file mode 100644 index 00000000..fd12a3e1 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/card/demos/demo3.jsx @@ -0,0 +1,47 @@ +import { Card, CardMeta } from "../index.jsx"; +import Icon from "../../icon/index.jsx"; +import Tag from "../../tag/index.jsx"; + +const actions = [ + , + , + , +]; + +const CardDemo = () => { + return ( +
+ + Meta组件,快速定义内容 + +
+ + } + actions={actions} + > + + } + title="Card title" + description="This is the description" + /> + +
+
+ ); +}; + +export default CardDemo; diff --git a/packages/inula2-ui2/library_code/src/components/card/demos/demo4.jsx b/packages/inula2-ui2/library_code/src/components/card/demos/demo4.jsx new file mode 100644 index 00000000..c770150c --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/card/demos/demo4.jsx @@ -0,0 +1,82 @@ +import { Card, CardGrid } from "../index.jsx"; +import Tag from "../../tag/index.jsx"; + +const CardDemo = () => { + return ( +
+ + Grid组件,网格型内嵌 + +
+ + + Content + + + Content + + + Content + + + Content + + + Content + + + Content + + + Content + + +
+
+ ); +}; + +export default CardDemo; diff --git a/packages/inula2-ui2/library_code/src/components/card/demos/demo5.jsx b/packages/inula2-ui2/library_code/src/components/card/demos/demo5.jsx new file mode 100644 index 00000000..fcb7a4d2 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/card/demos/demo5.jsx @@ -0,0 +1,101 @@ +import { Card } from "../index.jsx"; +import Tag from "../../tag/index.jsx"; + +const tabList = [ + { + key: "tab1", + tab: "tab1", + }, + { + key: "tab2", + tab: "tab2", + }, +]; + +const contentList = { + tab1:

content1

, + tab2:

content2

, +}; + +const tabListNoTitle = [ + { + key: "article", + label: "article", + }, + { + key: "app", + label: "app", + }, + { + key: "project", + label: "project", + }, +]; + +const contentListNoTitle = { + article:

article content

, + app:

app content

, + project:

project content

, +}; + +const CardDemo = () => { + let activeTabKey1 = "tab1"; + let activeTabKey2 = "article"; + const onTab1Change = (key) => { + activeTabKey1 = key; + }; + + const onTab2Change = (key) => { + activeTabKey2 = key; + }; + + return ( +
+ + 两种传参方式的标签卡片 + +
+ More} + tabList={tabList} + activeTabKey={activeTabKey1} + onTabChange={onTab1Change} + > + {contentList[activeTabKey1]} + +
+
+ More} + onTabChange={onTab2Change} + tabProps={{ + size: "middle", + }} + > + {contentListNoTitle[activeTabKey2]} + +
+
+ ); +}; + +export default CardDemo; diff --git a/packages/inula2-ui2/library_code/src/components/card/index.css b/packages/inula2-ui2/library_code/src/components/card/index.css new file mode 100644 index 00000000..01202a6e --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/card/index.css @@ -0,0 +1,214 @@ +/* --- Card --- */ +.inula-card { + display: flex; + flex-direction: column; + background-color: var(--inula-color-default-bg); +} + +/* 悬停浮空效果*/ +.inula-card-hoverable:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + transform: scale(1.01); + transition: all 0.3s ease-in-out; +} + +/* 卡片大小 */ +.inula-card.inula-card-default { + border-radius: 8px; + width: 300px; +} + +.inula-card.inula-card-small { + border-radius: 8px; + width: 300px; +} + +.inula-card.inula-card-gridbox { + width: 950px; +} + +/* 卡片边框样式 */ +.inula-card.inula-card-outlined { + border: 1px solid #f0f0f0; +} + +.inula-card.inula-card-borderless { + border: none; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.03), + 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02); +} + +/* 卡片头部 */ +.inula-card-header { + min-height: 8px; /* 合56px */ + padding: 24px; + font-size: 16px; + background-color: transparent; + border-bottom: 1px solid #f0f0f0; +} + +.inula-card-header.inula-card-header-inner { + background-color: #fafafa; +} + +.inula-card-header.inula-card-header-small { + padding: 12px; + font-size: 14px; +} + +.inula-card-header-content { + display: flex; + justify-content: space-between; + align-items: center; +} + +.inula-card-header-content .inula-card-header-title { + font-weight: bold; +} + +.inula-card-header-content .inula-card-header-extra { + color: rgba(0, 0, 0, 0.88); +} + +/* 卡片封面 */ +.inula-card-cover { + width: 100%; + height: auto; + overflow: hidden; +} + +.inula-card-cover img { + width: 100%; + height: auto; + object-fit: cover; +} + +/* 卡片内容 */ +.inula-card-body { + width: calc(100% - 48px); + min-height: 8px; + padding: 24px; +} + +.inula-card-body.inula-card-body-small { + padding: 12px; +} + +.inula-card-body.inula-card-body-gridbox { + display: flex; + flex-wrap: wrap; + width: 100% !important; + padding: 0 !important; +} + +/* 卡片加载中状态 */ +.inula-card-loading { + display: flex; + flex-direction: column; + justify-content: space-between; + width: 100%; + height: 100px; +} + +.inula-card-loading-spinner { + display: flex; + gap: 8px; + width: 80px; + height: 20px; +} + +.loading-bar { + width: 100%; + height: 15px; + background: linear-gradient(90deg, #f0f0f0 0%, #bfbfbf 50%, #f0f0f0 100%); + background-size: 200% 100%; + animation: loading 2s infinite linear; + border-radius: 4px; +} + +@keyframes loading { + 0% { + background-position: 100% 0; + } + 50% { + background-position: 0 0; + } + 100% { + background-position: -100% 0; + } +} + +/* 卡片底部操作栏 */ +.inula-card-actions { + display: flex; + justify-content: space-around; + align-items: center; + min-height: 56px; + border-top: 1px solid #f0f0f0; +} + +.inula-card-actions-item { + position: relative; +} + +.inula-card-actions-item:not(:last-child)::after { + content: ""; + position: absolute; + right: -1px; + height: 100%; + width: 1px; + background-color: rgba(0, 0, 0, 0.1); +} + +/* --- CardMeta --- */ +.inula-card-meta { + display: flex; + gap: 12px; + width: 100%; +} + +.inula-card-meta-avatar { + width: 32px; + height: 32px; + border-radius: 100%; +} + +.inula-card-meta-avatar img { + width: 100%; + height: 100%; + border-radius: 100%; + object-fit: cover; +} + +.inula-card-meta-content { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: space-between; + gap: 8px; +} + +.inula-card-meta-title { + font-size: 16px; + font-weight: bold; +} + +.inula-card-meta-description { + color: rgba(0, 0, 0, 0.45); +} + +/* --- CardGrid --- */ +.inula-card-grid { + height: 64px; + border: 1px solid #f0f0f0; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; +} + +.inula-card-grid-hoverable:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + transform: scale(1.01); + transition: all 0.3s ease-in-out; +} diff --git a/packages/inula2-ui2/library_code/src/components/card/index.jsx b/packages/inula2-ui2/library_code/src/components/card/index.jsx new file mode 100644 index 00000000..4ed30ec0 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/card/index.jsx @@ -0,0 +1,168 @@ +import "./index.css"; + +const Card = ({ + type = "default", + size = "default", // small, default + loading = false, + variant = "outlined", // outlined, borderless + hoverable = false, //悬停浮空 + gridbox = false, //网格布局, 只有children全为CardGrid时才能传入true + tabList, + tabProps, + activeTabKey, + defaultActiveTabKey, + onTabChange, + title, + extra, + cover, + actions, + children, + className, + style, + ...rest +}) => { + let isShowHeader = title || extra || tabList; // 是否显示头部 + + const classNames = [ + "inula-card", + `inula-card-${type}`, // 卡片类型,默认为default + `inula-card-${size}`, // 卡片大小,默认为default + `inula-card-${variant}`, // 卡片变体,默认为outlined + hoverable && "inula-card-hoverable", // 悬停 + gridbox && "inula-card-gridbox", // 网格布局 + className, + ] + .filter(Boolean) + .join(" "); + + const bodyClassName = [ + "inula-card-body", + `inula-card-body-${size}`, + gridbox && "inula-card-body-gridbox", + ] + .filter(Boolean) + .join(" "); + + const headerClassName = [ + "inula-card-header", + `inula-card-header-${size}`, + `inula-card-header-${type}`, + ] + .filter(Boolean) + .join(" "); + + const styles = { + ...style, + }; + + const CardHeader = () => { + if (!isShowHeader) return <>; + return ( +
+
+ {title &&
{title}
} + {extra &&
{extra}
} +
+
+ ); + }; + + const CardLoading = () => { + return ( +
+ {/* 四个加载条容器 */} + {[...Array(4)].map((_, i) => ( +
+ ))} +
+ ); + }; + + return ( +
+ + {cover && ( +
+ {cover} +
+ )} +
+ {loading ? : children} +
+ {actions && ( +
+ {actions.map((action, index) => ( +
+ {action} +
+ ))} +
+ )} +
+ ); +}; + +const CardMeta = ({ + avatar, + title, + description, + className, + style, + ...rest +}) => { + const classNames = ["inula-card-meta", className].filter(Boolean).join(" "); + const styles = { + ...style, + }; + return ( +
+ {avatar &&
{avatar}
} +
+ {title &&
{title}
} + {description && ( +
{description}
+ )} +
+
+ ); +}; + +const CardGrid = ({ + hoverable = true, + className, + style, + children, + ...rest +}) => { + const classNames = [ + "inula-card-grid", + hoverable && "inula-card-grid-hoverable", + className, + ] + .filter(Boolean) + .join(" "); + const styles = { + ...style, + }; + return ( +
+ {children} +
+ ); +}; + +export { Card, CardMeta, CardGrid }; diff --git a/packages/inula2-ui2/library_code/src/components/checkbox/demo.jsx b/packages/inula2-ui2/library_code/src/components/checkbox/demo.jsx new file mode 100644 index 00000000..6e6f38a2 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/checkbox/demo.jsx @@ -0,0 +1,27 @@ +import demo1 from "./demos/demo1.jsx"; +import demo2 from "./demos/demo2.jsx"; +import demo3 from "./demos/demo3.jsx"; + +const CheckboxDemo = () => { + return ( +
+
+

基本Checkbox

+
选中、默认选中、禁用、indeterminate样式
+
+
+
+

CheckboxGroup

+
选中、默认选中、禁用、外部受控
+
+
+
+

案例

+
区分全不选、部分选、全选的复选框案例
+
+
+
+ ) +} + +export default CheckboxDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo1.jsx new file mode 100644 index 00000000..41b3bcbd --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo1.jsx @@ -0,0 +1,58 @@ +import { Checkbox } from "../index.jsx"; +import { Tag } from "../../tag/index.jsx"; + +const CheckboxDemo = () => { + return ( +
+
+ 基本状态 + 普通Checkbox + 选中 + 默认选中 +
+
+ indeterminate复选框样式 + indeterminate按钮 + + indeterminate选中 + +
+
+ 禁用状态 + 禁用未选中 + + 禁用选中 + + + 禁用默认选中 + + + indeterminate按钮禁用 + +
+
+ ); +}; + +export default CheckboxDemo; diff --git a/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo2.jsx new file mode 100644 index 00000000..e13c1c9f --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo2.jsx @@ -0,0 +1,61 @@ +import { CheckboxGroup } from "../index.jsx"; +import { Tag } from "../../tag/index.jsx"; + +const CheckboxDemo = () => { + let checkedList = ["Apple", "Pear"]; + + const options = [ + { label: "Apple", value: "Apple", disabled: true }, + { label: "Pear", value: "Pear" }, + { label: "Orange", value: "Orange" }, + ]; + + const onChange = (list) => { + checkedList = list; + }; + + return ( +
+
+ 定义默认选中和选中: + +
+
+ 只定义默认选中 + +
+
+ 只定义选中 + +
+
+ 全禁用 + +
+
+ 外部受控 + +
+
+ ); +}; + +export default CheckboxDemo; diff --git a/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo3.jsx new file mode 100644 index 00000000..2367f423 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/checkbox/demos/demo3.jsx @@ -0,0 +1,29 @@ +import { Checkbox, CheckboxGroup } from "../index.jsx"; + +const plainOptions = ['Apple', 'Pear', 'Orange']; +const defaultCheckedList = ['Apple', 'Orange']; + +const CheckboxDemo = () => { + let checkedList = defaultCheckedList; + let checkAll = plainOptions.length === checkedList.length; + let indeterminate = checkedList.length > 0 && checkedList.length < plainOptions.length; + + const onChange = (list) => { + checkedList = list; + }; + + const onCheckAllChange = (e) => { + checkedList = e.target.checked ? plainOptions : []; + }; + + return ( +
+ + Check all + + +
+ ); +}; + +export default CheckboxDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/checkbox/index.css b/packages/inula2-ui2/library_code/src/components/checkbox/index.css new file mode 100644 index 00000000..bb8e7a88 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/checkbox/index.css @@ -0,0 +1,128 @@ +/* checkbox */ +.inula-checkbox { + display: flex; + align-items: center; + cursor: pointer; + font-size: 14px; + gap: 8px; +} + +/* 禁用样式 */ +.inula-checkbox-input-disabled { + cursor: not-allowed !important; + background-color: var(--inula-color-disabled-bg) !important; + color: var(--inula-color-disabled-text) !important; + border: 1px solid var(--inula-color-disabled-border) !important; +} + +.inula-checkbox-disabled { + color: var(--inula-color-disabled-text) !important; +} + +/* 普通checkbox样式 */ +.inula-checkbox-input { + width: 18px; + height: 18px; + border-radius: 4px; + + /* 清除默认样式 */ + outline: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding: 0px; + margin: 0px; + + cursor: pointer; + border: 1px solid var(--inula-color-default-border); + background-color: var(--inula-color-default-bg); + color: white; +} + +.inula-checkbox-input:checked { + background: var(--inula-color-primary); + position: relative; +} + +.inula-checkbox-input:checked::after { + content: "\f00c"; /* Font Awesome check图标 */ + font-family: "Font Awesome 6 Free"; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + /* color: white; */ + font-weight: 900; +} + +/* indeterminate checkbox样式 */ +.inula-checkbox-indeterminate { + position: relative; + background: var(--inula-color-default-bg); + transition: background 0.3s ease; +} + +/* indeterminate状态移除选中背景色 */ +.inula-checkbox-indeterminate:checked { + background: var(--inula-color-default-bg)!important; +} + +/* indeterminate状态移除图标 */ +.inula-checkbox-indeterminate:checked::after { + content: "" !important; +} + +/* indeterminate 伪元素样式 */ +.inula-checkbox-indeterminate::after { + content: ""; + position: absolute; + left: 50%; + top: 50%; + width: 8px; + height: 8px; + background: var(--inula-color-primary); + transform: translate(-50%, -50%); +} + +/* indeterminate hover */ +.inula-checkbox-indeterminate:hover { + background: var(--inula-checkbox-indeterminate-hover-bg) !important; +} + +/* indeterminate active */ +.inula-checkbox-indeterminate:active { + animation: indeterminate-expand 0.3s ease-out; +} + +@keyframes indeterminate-expand { + 0% { + box-shadow: 0 0 0 0 rgba(64, 135, 255, 0.8); + } + 100% { + box-shadow: 0 0 0 12px rgba(64, 135, 255, 0); + } +} + + +/* indeterminate 禁用 */ +.inula-checkbox-indeterminate-disabled:hover { + background: var(--inula-color-disabled-bg)!important; +} + +.inula-checkbox-indeterminate-disabled::after { + background: var(--inula-checkbox-indeterminate-disabled-after); +} + +.inula-checkbox-indeterminate-disabled:active { + animation: none; +} + +/* checkboxgroup */ +.inula-checkbox-group { + display: flex; + gap: 10px; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + justify-content: flex-start; +} diff --git a/packages/inula2-ui2/library_code/src/components/checkbox/index.jsx b/packages/inula2-ui2/library_code/src/components/checkbox/index.jsx new file mode 100644 index 00000000..40d69137 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/checkbox/index.jsx @@ -0,0 +1,131 @@ +import "./index.css"; + +const Checkbox = ({ + // autoFocus = false, + defaultChecked = false, + disabled = false, + indeterminate = false, + children, + checked, + className, + style, + variant = "outlined", // outlined | filled | borderless | underlined + onChange, + onBlur, + onFocus, + ...rest +}) => { + + const handleBoxChange = (e) => { + if (checked !== undefined) { + e.target.checked = checked; + onChange && onChange(e); + return; + } + if (onChange) { + onChange(e); + } + }; + + const classNames = [ + className, + "inula-checkbox", + `inula-checkbox-${variant}`, + disabled ? "inula-checkbox-disabled" : "", + ] + .filter(Boolean) + .join(" "); + + const inputClassNames = [ + "inula-checkbox-input", + indeterminate ? "inula-checkbox-indeterminate" : "", + disabled ? "inula-checkbox-input-disabled" : "", + indeterminate && disabled ? "inula-checkbox-indeterminate-disabled" : "", + ] + .filter(Boolean) + .join(" "); + + const styles = { + ...style, + ...(disabled && { cursor: "not-allowed" }), + }; + + return ( + + ); +}; + +const CheckboxGroup = ({ + defaultValue = [], // [value1, value2,...] + disabled = false, + options, // [{value, label, disabled, ...}] + value, // [value1, value2,...] + className, + style, + onChange, + ...rest +}) => { + let checkedValues = value || defaultValue || []; + + const handleBoxChange = (targetValue) => { + if (value) { + onChange && onChange(targetValue); + return; + } + if (checkedValues.includes(targetValue)) { + checkedValues = checkedValues.filter((item) => item !== targetValue); + } else { + checkedValues = [...checkedValues, targetValue]; + } + if (onChange) { + onChange(checkedValues); + } + }; + + const classNames = ["inula-checkbox-group", className] + .filter(Boolean) + .join(" "); + + const styles = { + ...style, + }; + + const normalizedOptions = options.map((option) => + typeof option === "string" ? { value: option, label: option } : option + ); + + return ( +
+ + {(option, index) => { + return ( + handleBoxChange(option.value)} + className={option.className || ""} + style={option.style || {}} + > + {option.label} + + ); + }} + +
+ ); +}; + +export { Checkbox, CheckboxGroup }; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker/demo.jsx b/packages/inula2-ui2/library_code/src/components/datepicker/demo.jsx new file mode 100644 index 00000000..430f3175 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker/demo.jsx @@ -0,0 +1,39 @@ +import Demo1 from './demos/demo1.jsx'; +import Demo2 from './demos/demo2.jsx'; +// import Demo3 from './demos/demo3.jsx'; +// import Demo4 from './demos/demo4.jsx'; +// import Demo5 from './demos/demo5.jsx'; +// import Demo6 from './demos/demo6.jsx'; +// import WeekRangeDemo from './demos/week-range-demo.jsx'; + +function DatePickerDemo() { + return ( +
+
+
+

基础用法

+
最简单的用法,在浮层中可以选择或者输入日期。
+
+
+
+ +
+
+

日期范围选择器

+
通过设置 picker 属性,指定范围选择器类型。
+
+
+
+ + {/*
+
+

周范围选择器

+
专门测试周范围选择器的功能和样式。
+
+
+
*/} +
+ ); +} + +export default DatePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo1.jsx new file mode 100644 index 00000000..09460a36 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo1.jsx @@ -0,0 +1,71 @@ +import DatePicker from '../index.jsx'; + +function Demo1() { + const handleChange = (value) => { + console.log('选择的值:', value); + }; + + return ( +
+
+

基础日期选择器

+
+ + + + + +
+
+ +
+

范围选择器

+
+ + 双月显示的日期范围选择 +
+
+ +
+

不同模式的范围选择

+
+
+ + 周范围选择 +
+
+ + 月份范围选择 +
+
+ + 季度范围选择 +
+
+ + 年份范围选择 +
+
+
+ +
+

不同尺寸

+
+ + + +
+
+ +
+

禁用状态

+
+ + +
+
+
+ ); +} + +export default Demo1; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo2.jsx new file mode 100644 index 00000000..f81c1b59 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo2.jsx @@ -0,0 +1,48 @@ +/** + * 通过设置 picker 属性,指定范围选择器类型。 + */ +import DatePicker from '../index.jsx'; + +function Demo2() { + const handleChange = (value) => { + console.log('选择的日期范围:', value); + }; + + return ( +
+

日期范围选择器

+ +
+

日期范围选择器

+ +
+ +
+

周范围选择器

+ +
+ +
+

月份范围选择器

+ +
+ +
+

季度范围选择器

+ +
+ +
+

年份范围选择器

+ +
+ +
+

自定义分隔符

+ +
+
+ ); +} + +export default Demo2; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo3.jsx new file mode 100644 index 00000000..ac880291 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker/demos/demo3.jsx @@ -0,0 +1,20 @@ +/** + * 多选,不支持 showTime 以及 picker="time"。 + * @returns + */ +import DatePicker from '../index.jsx'; + +function Demo3() { + return ( +
+

受控组件

+ console.log('受控组件值变化:', value)} + placeholder="受控组件" + /> +
+ ); +} + +export default Demo3; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/datepicker/index.css b/packages/inula2-ui2/library_code/src/components/datepicker/index.css new file mode 100644 index 00000000..682d8ec1 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker/index.css @@ -0,0 +1,1181 @@ +/* DatePicker Container */ +.inula-datepicker { + position: relative; + display: inline-block; + width: 280px; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + color: rgba(0, 0, 0, 0.85); +} + +/* DatePicker Input */ +.inula-datepicker-input { + position: relative; + display: flex; + align-items: center; + width: 100%; + height: 32px; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: all 0.3s; + cursor: pointer; + background-color: #fff; + box-sizing: border-box; + padding-right: 4px; +} + +.inula-datepicker-input:hover { + border-color: #40a9ff; +} + +.inula-datepicker-input:focus-within { + border-color: #40a9ff; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + outline: 0; +} + +.inula-datepicker:focus { + outline: none; +} + +.inula-datepicker-input input { + flex: 1; + height: 100%; + padding: 0 11px; + border: none; + outline: none; + background: transparent; + cursor: pointer; + font-size: 14px; + color: rgba(0, 0, 0, 0.85); +} + +/* 单选模式输入框样式重置 */ +.inula-datepicker:not(.inula-datepicker-range) .inula-datepicker-input input { + text-align: left; +} + +.inula-datepicker-icon { + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 100%; + color: rgba(0, 0, 0, 0.25); +} + +.inula-datepicker-clear { + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 100%; + color: rgba(0, 0, 0, 0.25); + font-size: 12px; + cursor: pointer; + transition: color 0.3s; +} + +.inula-datepicker-clear:hover { + color: rgba(0, 0, 0, 0.45); +} + +/* DatePicker Dropdown */ +.inula-datepicker-dropdown { + position: absolute; + top: 100%; + left: 0; + z-index: 1050; + width: 280px; + margin-top: 4px; + background-color: #fff; + border-radius: 2px; + box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); + outline: none; + animation: antFadeIn 0.2s; + border: 1px solid #f0f0f0; +} + +@keyframes antFadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +/* DatePicker Header */ +.inula-datepicker-header { + display: flex; + align-items: center; + padding: 12px 8px; + border-bottom: 1px solid #f0f0f0; +} + +.inula-datepicker-header button { + display: flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + padding: 0; + border: 0; + background: transparent; + cursor: pointer; + font-size: 0; + outline: none; + color: rgba(0, 0, 0, 0.25); + transition: all 0.2s; + border-radius: 4px; +} + +.inula-datepicker-header button:hover { + color: rgba(0, 0, 0, 0.65); + background-color: rgba(0, 0, 0, 0.06); +} + +.inula-datepicker-header button:active { + background-color: rgba(0, 0, 0, 0.1); +} + +/* 箭头图标样式 */ +.inula-datepicker-header button::before { + content: ''; + display: block; + width: 7px; + height: 7px; + border: 1.5px solid currentColor; + border-right: 0; + border-bottom: 0; + transform-origin: center; +} + +/* 上一年按钮 - 双左箭头 */ +.inula-datepicker-prev-year::before { + transform: rotate(-45deg); + margin-right: 2px; +} + +.inula-datepicker-prev-year::after { + content: ''; + display: block; + width: 7px; + height: 7px; + border: 1.5px solid currentColor; + border-right: 0; + border-bottom: 0; + transform: rotate(-45deg); + margin-left: -3px; +} + +/* 上一月按钮 - 单左箭头 */ +.inula-datepicker-prev-month::before { + transform: rotate(-45deg); +} + +/* 下一月按钮 - 单右箭头 */ +.inula-datepicker-next-month::before { + transform: rotate(135deg); +} + +/* 下一年按钮 - 双右箭头 */ +.inula-datepicker-next-year::before { + transform: rotate(135deg); + margin-left: 2px; +} + +.inula-datepicker-next-year::after { + content: ''; + display: block; + width: 7px; + height: 7px; + border: 1.5px solid currentColor; + border-right: 0; + border-bottom: 0; + transform: rotate(135deg); + margin-right: -3px; +} + +.inula-datepicker-header-view { + flex: 1; + text-align: center; + font-weight: 500; + color: rgba(0, 0, 0, 0.85); + font-size: 14px; + line-height: 28px; +} + +/* DatePicker Body */ +.inula-datepicker-body { + padding: 8px 12px; +} + +.inula-datepicker-weekdays { + display: grid; + grid-template-columns: repeat(7, 1fr); + margin-bottom: 8px; +} + +.inula-datepicker-weekday { + text-align: center; + color: rgba(0, 0, 0, 0.65); + line-height: 30px; + font-size: 14px; + font-weight: 400; +} + +.inula-datepicker-days { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 4px; +} + +.inula-datepicker-day, +.inula-datepicker-week { + display: flex; + align-items: center; + justify-content: center; + height: 30px; + border-radius: 2px; + cursor: pointer; + border-radius: 4px; + transition: all 0.3s; + font-size: 14px; + margin: 1px; + color: rgba(0, 0, 0, 0.85); +} + +.inula-datepicker-day:hover { + background-color: #f5f5f5; +} + +.inula-datepicker-day.empty { + cursor: default; +} + +.inula-datepicker-day.today { + color: #1890ff; + font-weight: 500; + /** 内边框 **/ + /* box-shadow: inset 0 0 0 1px #1890ff; */ + border: 1px solid transparent; + outline: 1px solid #1890ff; + outline-offset: -2px; + /* border: 1px solid #1890ff; */ + margin: 0; + position: relative; +} + +.inula-datepicker-day.today::after { + content: ''; + position: absolute; + bottom: 2px; + left: 50%; + transform: translateX(-50%); + width: 4px; + height: 4px; + border-radius: 50%; + background-color: #1890ff; +} + +.inula-datepicker-day.selected { + background-color: #1890ff; + color: #fff; + font-weight: 500; +} + +.inula-datepicker-day.selected:hover { + background-color: #40a9ff; +} + +.inula-datepicker-day.disabled { + color: rgba(0, 0, 0, 0.25); + background-color: #f5f5f5; + cursor: not-allowed; +} + +.inula-datepicker-day.disabled:hover { + background-color: #f5f5f5; +} + +/* Week View */ +.inula-datepicker-weeks { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 4px; +} + +.inula-datepicker-week { + display: flex; + align-items: center; + justify-content: center; + height: 30px; + border-radius: 4px; + cursor: pointer; + transition: all 0.3s; + font-size: 14px; + color: rgba(0, 0, 0, 0.85); + margin: 1px; +} + +.inula-datepicker-week.selected:hover { + background-color: #40a9ff; +} + +/* Week Row Style */ +.inula-datepicker-week-row { + display: grid; + grid-template-columns: repeat(7, 1fr); + border-radius: 4px; + margin-bottom: 2px; +} + +.inula-datepicker-week-row:hover { + background-color: rgba(24, 144, 255, 0.04); + border-radius: 4px; +} + +/* Other month day style */ +.inula-datepicker-day.other-month { + color: rgba(0, 0, 0, 0.25); +} + +/* Week Selection Style - 修复周选择样式 */ +.inula-datepicker-week-row .week-selected { + background-color: #1890ff; + color: #fff; + border-radius: 0; + margin: 0; + position: relative; +} + +.inula-datepicker-week-row .week-selected:hover { + color: #fff; + background-color: #40a9ff; +} + +/* 周范围选择样式 - 新增完整的周范围选择样式 */ +.inula-datepicker-week.range-start { + background: #1677ff; + color: #fff; + border-radius: 4px 0 0 4px; +} + +.inula-datepicker-week.range-end { + background: #1677ff; + color: #fff; + border-radius: 0 4px 4px 0; +} + +.inula-datepicker-week.range-start.range-end { + border-radius: 4px; +} + +.inula-datepicker-week.in-range { + background: #e6f4ff; + color: #1677ff; + border-radius: 0; +} + +.inula-datepicker-week.range-hover { + background: #bae0ff; + color: #1677ff; + border-radius: 0; +} + +.inula-datepicker-week.range-start:hover { + background: #4096ff; +} + +.inula-datepicker-week.range-end:hover { + background: #4096ff; +} + +/* 周选择时的日期样式调整 */ +.inula-datepicker-day.week-selected { + border: none; + margin: 0; + border-radius: 0; + background-color: #1890ff; + color: #fff; +} + +.inula-datepicker-day.week-selected:hover { + background-color: #40a9ff; +} + +/* 当日期在选中周内但不是今天时,移除今天的样式 */ +.inula-datepicker-day.week-selected.today { + outline: none; +} + +.inula-datepicker-day.week-selected.today::after { + display: none; +} + +/* 周数显示样式 */ +.inula-datepicker-week-numbers { + position: absolute; + display: flex; + flex-direction: column; + width: 25px; + gap: 3px; +} + +.inula-datepicker-week-number { + margin: 1px; + height: 30px; + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + color: rgba(0, 0, 0, 0.45); + padding: 0 4px; +} + +/* 调整周视图的布局 */ +.inula-datepicker-body { + position: relative; +} + +/* 调整星期标题的布局 */ +.inula-datepicker-weekdays { + margin-left: 30px; +} + +/* Week View */ +.inula-datepicker-weeks { + margin-left: 30px; + display: flex; + flex-direction: column; + gap: 3px; +} + +/* Month View */ +.inula-datepicker-months { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 8px; +} + +.inula-datepicker-month { + display: flex; + align-items: center; + justify-content: center; + height: 25px; + border-radius: 4px; + cursor: pointer; + transition: all 0.3s; + font-size: 14px; + color: rgba(0, 0, 0, 0.85); + margin: 10px; +} + +.inula-datepicker-month:hover { + background-color: #f5f5f5; + border-color: #d9d9d9; +} + +.inula-datepicker-month.selected { + background-color: #1890ff; + color: #fff; + font-weight: 500; + border-color: #1890ff; +} + +.inula-datepicker-month.selected:hover { + background-color: #40a9ff; + border-color: #40a9ff; +} + +/* Quarter View */ +.inula-datepicker-quarters { + display: flex; + justify-content: space-around; +} + +.inula-datepicker-quarter { + display: flex; + align-items: center; + justify-content: center; + height: 25px; + border-radius: 4px; + cursor: pointer; + transition: all 0.3s; + font-size: 16px; + color: rgba(0, 0, 0, 0.85); + border: 1px solid transparent; + padding: 0 15px; +} + +.inula-datepicker-quarter:hover { + background-color: #f5f5f5; +} + +.inula-datepicker-quarter.selected { + background-color: #1890ff; + color: #fff; + border-color: #1890ff; +} + +.inula-datepicker-quarter.selected:hover { + background-color: #40a9ff; + border-color: #40a9ff; +} + +/* Year View */ +.inula-datepicker-years { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 8px; +} + +.inula-datepicker-year { + display: flex; + align-items: center; + justify-content: center; + margin: 10px; + height: 25px; + border-radius: 4px; + cursor: pointer; + transition: all 0.3s; + font-size: 14px; + color: rgba(0, 0, 0, 0.85); +} + +.inula-datepicker-year:hover { + background-color: #f5f5f5; + border-color: #d9d9d9; +} + +.inula-datepicker-year.selected { + background-color: #1890ff; + color: #fff; + font-weight: 500; + border-color: #1890ff; +} + +.inula-datepicker-year.selected:hover { + background-color: #40a9ff; + border-color: #40a9ff; +} + +/* DatePicker Footer */ +.inula-datepicker-footer { + display: flex; + justify-content: center; + padding: 5px 12px; + border-top: 1px solid #f0f0f0; +} + +.inula-datepicker-today, +.inula-datepicker-confirm { + padding: 0 10px; + height: 28px; + line-height: 28px; + border: 0; + background: transparent; + cursor: pointer; + outline: none; + color: #1890ff; + transition: all 0.3s; + border-radius: 2px; + font-size: 14px; +} + +.inula-datepicker-today:hover, +.inula-datepicker-confirm:hover { + color: #40a9ff; + background-color: rgba(24, 144, 255, 0.1); +} + +.inula-datepicker-confirm { + background-color: #1890ff; + color: #fff; +} + +.inula-datepicker-confirm:hover { + background-color: #40a9ff; + color: #fff; +} + +/* DatePicker Sizes */ +.inula-datepicker-small .inula-datepicker-input { + height: 24px; +} + +.inula-datepicker-small .inula-datepicker-input input { + font-size: 12px; + padding: 0 8px; +} + +.inula-datepicker-small .inula-datepicker-icon { + padding-right: 4px; +} + +.inula-datepicker-large .inula-datepicker-input { + height: 40px; +} + +.inula-datepicker-large .inula-datepicker-input input { + font-size: 16px; + padding: 0 12px; +} + +.inula-datepicker-large .inula-datepicker-icon { + padding-right: 12px; +} + +/* DatePicker Disabled */ +.inula-datepicker-disabled { + cursor: not-allowed; +} + +.inula-datepicker-disabled .inula-datepicker-input { + background-color: #f5f5f5; + border-color: #d9d9d9; + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; + box-shadow: none; +} + +.inula-datepicker-disabled .inula-datepicker-input:hover { + border-color: #d9d9d9; +} + +.inula-datepicker-disabled .inula-datepicker-input:focus-within { + box-shadow: none; +} + +.inula-datepicker-disabled .inula-datepicker-input input { + cursor: not-allowed; + color: rgba(0, 0, 0, 0.25); +} + +/* 额外的Ant Design风格元素 */ +.inula-datepicker-input::placeholder { + color: rgba(0, 0, 0, 0.25); +} + +.inula-datepicker-dropdown::before { + content: ''; + position: absolute; + top: -6px; + left: 20px; + width: 10px; + height: 10px; + background: #fff; + box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06); + transform: rotate(45deg); + z-index: -1; +} + +/* 添加一些额外的Ant Design风格 */ +.inula-datepicker-input input::placeholder { + color: rgba(0, 0, 0, 0.25); +} + +.inula-datepicker-day { + transition: all 0.2s; +} + +/* 确保日期单元格正确显示 */ +.inula-datepicker-weekday-header { + margin-bottom: 8px; +} + +.inula-datepicker-weekday { + text-align: center; + color: rgba(0, 0, 0, 0.65); + line-height: 30px; + font-size: 14px; + font-weight: 400; +} + +/* 范围选择器样式 */ +.inula-datepicker-range { + width: 350px; +} + +.inula-datepicker-range .inula-datepicker-dropdown { + width: 600px; +} + +.inula-datepicker-range-wrapper { + display: flex; + justify-content: space-between; +} + +.inula-datepicker-calendar { + width: 280px; + padding: 8px; +} + +/* 确保日历内容正确显示 */ +.inula-datepicker-calendar .inula-datepicker-days { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 4px; +} + +.inula-datepicker-calendar .inula-datepicker-weekdays { + margin-left: 0; +} + +.inula-datepicker-calendar .inula-datepicker-weeks { + margin-left: 0; +} + +/* 修复日期单元格显示问题 */ +.inula-datepicker-day { + width: 30px; + height: 30px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + border-radius: 4px; + margin: 2px; +} + +.inula-datepicker-weekday-header { + display: grid; + grid-template-columns: repeat(7, 1fr); + margin-bottom: 8px; +} + +.inula-datepicker-weekday { + width: 30px; + height: 30px; + display: flex; + align-items: center; + justify-content: center; + color: rgba(0, 0, 0, 0.65); + font-size: 14px; +} + +/* 范围内的日期样式 */ +.inula-datepicker-day.in-range { + background-color: rgba(24, 144, 255, 0.1); + color: rgba(0, 0, 0, 0.85); +} + +.inula-datepicker-day.range-start { + background-color: #1890ff; + color: #fff; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.inula-datepicker-day.range-end { + background-color: #1890ff; + color: #fff; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +/* 范围内的周样式 - 修复周范围选择样式 */ +.inula-datepicker-week.in-range { + background-color: rgba(24, 144, 255, 0.1); + color: rgba(0, 0, 0, 0.85); +} + +.inula-datepicker-week.range-start { + background-color: #1890ff; + color: #fff; +} + +.inula-datepicker-week.range-end { + background-color: #1890ff; + color: #fff; +} + +/* 范围内的月份样式 */ +.inula-datepicker-month.in-range { + background-color: rgba(24, 144, 255, 0.1); + color: rgba(0, 0, 0, 0.85); +} + +.inula-datepicker-month.range-start { + background-color: #1890ff; + color: #fff; +} + +.inula-datepicker-month.range-end { + background-color: #1890ff; + color: #fff; +} + +/* 范围内的季度样式 */ +.inula-datepicker-quarter.in-range { + background-color: rgba(24, 144, 255, 0.1); + color: rgba(0, 0, 0, 0.85); +} + +.inula-datepicker-quarter.range-start { + background-color: #1890ff; + color: #fff; +} + +.inula-datepicker-quarter.range-end { + background-color: #1890ff; + color: #fff; +} + +/* 范围内的年份样式 */ +.inula-datepicker-year.in-range { + background-color: rgba(24, 144, 255, 0.1); + color: rgba(0, 0, 0, 0.85); +} + +.inula-datepicker-year.range-start { + background-color: #1890ff; + color: #fff; +} + +.inula-datepicker-year.range-end { + background-color: #1890ff; + color: #fff; +} + +/* 范围选择器样式 */ +.inula-datepicker-range { + max-width: 350px; +} + +.inula-datepicker-range .inula-datepicker-input { + min-width: 320px; + position: relative; + display: flex; + align-items: center; +} + +/* 重置范围选择器输入框的 padding */ +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-start, +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-end { + padding: 0 8px; +} + +/* 范围选择器输入框 */ +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-start, +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-end { + flex: 1; + border: none; + outline: none; + background: transparent; + font-size: 14px; + color: rgba(0, 0, 0, 0.85); + cursor: pointer; + padding: 0; + text-align: center; +} + +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-start::placeholder, +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-end::placeholder { + color: rgba(0, 0, 0, 0.25); + text-align: center; +} + +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-start:disabled, +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-end:disabled { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} + +/* 范围选择器分隔符 */ +.inula-datepicker-separator { + display: flex; + align-items: center; + justify-content: center; + width: 20px; + color: rgba(0, 0, 0, 0.25); + font-size: 14px; + user-select: none; + pointer-events: none; +} + +/* 范围选择器图标位置调整 */ +.inula-datepicker-range .inula-datepicker-icon { + margin: 4px; + flex-shrink: 0; + width: 16px; + height: 16px; + padding-right: 0; +} + +/* 范围选择器焦点状态 */ +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-start:focus, +.inula-datepicker-range .inula-datepicker-input .inula-datepicker-range-end:focus { + background: rgba(24, 144, 255, 0.06); + border-radius: 2px; +} + +/* 范围选择器悬停状态 */ +.inula-datepicker-range .inula-datepicker-input:hover .inula-datepicker-range-start, +.inula-datepicker-range .inula-datepicker-input:hover .inula-datepicker-range-end { + background: rgba(0, 0, 0, 0.02); + border-radius: 2px; +} + +/* 范围选择器下拉面板 - 双月显示 */ +.inula-datepicker-range .inula-datepicker-dropdown { + width: 630px; +} + +.inula-datepicker-range .inula-datepicker-body { + display: flex; +} + +.inula-datepicker-range .inula-datepicker-panel { + flex: 1; + padding: 8px; +} + +.inula-datepicker-range .inula-datepicker-panel + .inula-datepicker-panel { + border-left: 1px solid #f0f0f0; +} + +.inula-datepicker-range .inula-datepicker-panel-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 8px; + height: 40px; + border-bottom: 1px solid #f0f0f0; + background: #fafafa; + margin: -8px -8px 8px -8px; +} + +.inula-datepicker-range .inula-datepicker-panel-header button { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border: 1px solid #d9d9d9; + background: #fff; + color: rgba(0, 0, 0, 0.65); + cursor: pointer; + border-radius: 6px; + transition: all 0.2s; + font-size: 16px; + font-weight: 500; +} + +.inula-datepicker-range .inula-datepicker-panel-header button:hover { + background: #f5f5f5; + border-color: #4096ff; + color: #4096ff; +} + +.inula-datepicker-range .inula-datepicker-panel-header button:active { + background: #e6f4ff; + border-color: #1677ff; + color: #1677ff; +} + +.inula-datepicker-range .inula-datepicker-panel-title { + font-weight: 500; + color: rgba(0, 0, 0, 0.85); + cursor: pointer; + padding: 0 8px; + border-radius: 4px; + transition: background 0.2s; +} + +.inula-datepicker-range .inula-datepicker-panel-title:hover { + background: rgba(0, 0, 0, 0.04); +} + +/* 范围选择日期样式 */ +.inula-datepicker-day.range-start { + background: #1677ff; + color: #fff; + border-radius: 4px 0 0 4px; +} + +.inula-datepicker-day.range-end { + background: #1677ff; + color: #fff; + border-radius: 0 4px 4px 0; +} + +.inula-datepicker-day.range-start.range-end { + border-radius: 4px; +} + +.inula-datepicker-day.in-range { + background: #e6f4ff; + color: #1677ff; + border-radius: 0; +} + +.inula-datepicker-day.range-hover { + background: #bae0ff; + color: #1677ff; + border-radius: 0; +} + +.inula-datepicker-day.range-start:hover { + background: #4096ff; +} + +.inula-datepicker-day.range-end:hover { + background: #4096ff; +} + +/* 范围选择器周视图样式 - 修复周范围选择样式 */ +.inula-datepicker-week.range-start { + background: #1677ff; + color: #fff; + border-radius: 4px 0 0 4px; +} + +.inula-datepicker-week.range-end { + background: #1677ff; + color: #fff; + border-radius: 0 4px 4px 0; +} + +.inula-datepicker-week.range-start.range-end { + border-radius: 4px; +} + +.inula-datepicker-week.in-range { + background: #e6f4ff; + color: #1677ff; + border-radius: 0; +} + +.inula-datepicker-week.range-hover { + background: #bae0ff; + color: #1677ff; + border-radius: 0; +} + +/* 范围选择器月份视图样式 */ +.inula-datepicker-month.range-start { + background: #1677ff; + color: #fff; + border-radius: 4px 0 0 4px; +} + +.inula-datepicker-month.range-end { + background: #1677ff; + color: #fff; + border-radius: 0 4px 4px 0; +} + +.inula-datepicker-month.range-start.range-end { + border-radius: 4px; +} + +.inula-datepicker-month.in-range { + background: #e6f4ff; + color: #1677ff; + border-radius: 0; +} + +.inula-datepicker-month.range-hover { + background: #bae0ff; + color: #1677ff; + border-radius: 0; +} + +/* 范围选择器季度视图样式 */ +.inula-datepicker-quarter.range-start { + background: #1677ff; + color: #fff; + border-radius: 4px 0 0 4px; +} + +.inula-datepicker-quarter.range-end { + background: #1677ff; + color: #fff; + border-radius: 0 4px 4px 0; +} + +.inula-datepicker-quarter.range-start.range-end { + border-radius: 4px; +} + +.inula-datepicker-quarter.in-range { + background: #e6f4ff; + color: #1677ff; + border-radius: 0; +} + +.inula-datepicker-quarter.range-hover { + background: #bae0ff; + color: #1677ff; + border-radius: 0; +} + +/* 范围选择器年份视图样式 */ +.inula-datepicker-year.range-start { + background: #1677ff; + color: #fff; + border-radius: 4px 0 0 4px; +} + +.inula-datepicker-year.range-end { + background: #1677ff; + color: #fff; + border-radius: 0 4px 4px 0; +} + +.inula-datepicker-year.range-start.range-end { + border-radius: 4px; +} + +.inula-datepicker-year.in-range { + background: #e6f4ff; + color: #1677ff; + border-radius: 0; +} + +.inula-datepicker-year.range-hover { + background: #bae0ff; + color: #1677ff; + border-radius: 0; +} + +/* 范围选择器提示文本 */ +.inula-datepicker-range-tip { + padding: 8px 12px; + font-size: 12px; + color: rgba(0, 0, 0, 0.45); + border-bottom: 1px solid #f0f0f0; + background: #fafafa; + text-align: center; +} + +/* 范围选择器状态指示 */ +.inula-datepicker-range-status { + display: flex; + align-items: center; + justify-content: center; + padding: 4px 8px; + font-size: 12px; + color: rgba(0, 0, 0, 0.45); + background: #f0f0f0; + border-radius: 2px; + margin: 4px 0; +} + +.inula-datepicker-range-status.selecting { + color: #1677ff; + background: #e6f4ff; +} + +/* 响应式调整 */ +@media (max-width: 480px) { + .inula-datepicker-range .inula-datepicker-dropdown { + width: 100vw; + max-width: 350px; + } + + .inula-datepicker-range .inula-datepicker-input { + min-width: 250px; + } +} \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/datepicker/index.jsx b/packages/inula2-ui2/library_code/src/components/datepicker/index.jsx new file mode 100644 index 00000000..d6c44c6e --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker/index.jsx @@ -0,0 +1,1889 @@ +import './index.css'; +import Icon from '../icon'; +import Button from '../button'; + +const DatePicker = ({ + value, + defaultValue, + placeholder, + onChange, + disabled = false, + size = 'default', // small, default, large + clearable = true, + showToday = true, + needConfirm = false, + style = {}, + hoverIcon = false, + className = '', + mode = 'date', // date, week, month, quarter, year + picker = 'single', // single, range + ...rest +}) => { + // State variables + let isOpen = false; + let selectedDate = value !== undefined ? value : defaultValue || (picker === 'range' ? [] : ''); + let currentMonth = new Date().getMonth(); + let currentYear = new Date().getFullYear(); + let currentView = mode; // date, week, month, quarter, year + let rangeStart = null; + let rangeEnd = null; + let hoverDate = null; + + // If selectedDate is provided, set currentMonth and currentYear to match it + if (selectedDate) { + let dateToUse = selectedDate; + // For range picker, use the first date if it's an array + if (Array.isArray(selectedDate) && selectedDate.length > 0) { + dateToUse = selectedDate[0]; + } + + const date = parseDate(dateToUse); + if (date) { + currentMonth = date.getMonth(); + currentYear = date.getFullYear(); + } + } + + // Format date as YYYY-MM-DD + function formatDate(date) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; + } + + // Format week as YYYY-WW + function formatWeek(date) { + const year = date.getFullYear(); + const week = getWeekNumber(date); + return `${year}-${String(week).padStart(2, '0')}周`; + } + + // Format month as YYYY-MM + function formatMonth(date) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + return `${year}-${month}`; + } + + // Format quarter as YYYY-QN + function formatQuarter(date) { + const year = date.getFullYear(); + const quarter = Math.floor(date.getMonth() / 3) + 1; + return `${year}-Q${quarter}`; + } + + // Format year as YYYY + function formatYear(date) { + return `${date.getFullYear()}`; + } + + // Get week number of the year + function getWeekNumber(date) { + const firstDayOfYear = new Date(date.getFullYear(), 0, 1); + const pastDaysOfYear = (date - firstDayOfYear) / 86400000; + return Math.ceil((pastDaysOfYear + firstDayOfYear.getDay() + 1) / 7); + } + + // Get week start and end dates (修正版本) + function getWeekDates(date) { + const day = date.getDay(); + // 计算本周的周一 + const diff = date.getDate() - day + (day === 0 ? -6 : 1); + const monday = new Date(date.getFullYear(), date.getMonth(), diff); + // 计算本周的周日 + const sunday = new Date(monday); + sunday.setDate(monday.getDate() + 6); + return { start: monday, end: sunday }; + } + + const onIconHover = () => { + hoverIcon = true; + } + + const onIconLeave = () => { + hoverIcon = false; + } + + // Parse date string to Date object + function parseDate(dateString) { + if (!dateString) return null; + + // Handle array case (for range picker) + if (Array.isArray(dateString)) { + if (dateString.length > 0) { + return parseDate(dateString[0]); // Parse the first date in the range + } + return null; + } + + // Ensure dateString is a string + if (typeof dateString !== 'string') { + return null; + } + + if (mode === 'week' && dateString.includes('周')) { + const match = dateString.match(/(\d{4})-(\d{2})周/); + if (match) { + const year = parseInt(match[1]); + const week = parseInt(match[2]); + // 计算该周的第一天 + const firstDayOfYear = new Date(year, 0, 1); + const daysToAdd = (week - 1) * 7; + const weekStart = new Date(firstDayOfYear); + weekStart.setDate(firstDayOfYear.getDate() + daysToAdd); + return weekStart; + } + } else if (mode === 'month' && dateString.includes('-')) { + const [year, month] = dateString.split('-').map(Number); + return new Date(year, month - 1, 1); + } else if (mode === 'quarter' && dateString.includes('Q')) { + const match = dateString.match(/(\d{4})-Q(\d)/); + if (match) { + const year = parseInt(match[1]); + const quarter = parseInt(match[2]); + const month = (quarter - 1) * 3; + return new Date(year, month, 1); + } + } else if (mode === 'year') { + const year = parseInt(dateString); + return new Date(year, 0, 1); + } else { + const [year, month, day] = dateString.split('-').map(Number); + return new Date(year, month - 1, day); + } + return null; + } + + // Get days in month + function getDaysInMonth(year, month) { + return new Date(year, month + 1, 0).getDate(); + } + + // Get day of week for first day of month (0 = Sunday, 6 = Saturday) + function getFirstDayOfMonth(year, month) { + return new Date(year, month, 1).getDay(); + } + + // Handle date selection + function handleDateSelect(day) { + const newDate = new Date(currentYear, currentMonth, day); + let formattedValue; + + switch (mode) { + case 'date': + formattedValue = formatDate(newDate); + break; + case 'week': + // 在周模式下,选择日期时应该选择该日期所在的整周 + formattedValue = formatWeek(newDate); + break; + case 'month': + formattedValue = formatMonth(newDate); + break; + case 'quarter': + formattedValue = formatQuarter(newDate); + break; + case 'year': + formattedValue = formatYear(newDate); + break; + default: + formattedValue = formatDate(newDate); + } + + if (picker === 'range') { + handleRangeSelect(formattedValue, newDate); + } else { + if (!needConfirm) { + if (value === undefined) { + selectedDate = formattedValue; + } + if (onChange) { + onChange(formattedValue); + } + setTimeout(() => { + isOpen = false; + }, 100); + } else { + if (value === undefined) { + selectedDate = formattedValue; + } + } + } + } + + // Handle range selection + function handleRangeSelect(formattedValue, dateObj) { + if (!rangeStart || (rangeStart && rangeEnd)) { + // 开始新的范围选择 + rangeStart = dateObj; + rangeEnd = null; + if (value === undefined) { + selectedDate = [formattedValue]; + } + } else if (rangeStart && !rangeEnd) { + // 完成范围选择 + if (dateObj < rangeStart) { + rangeEnd = rangeStart; + rangeStart = dateObj; + } else { + rangeEnd = dateObj; + } + + const startFormatted = formatDateByMode(rangeStart); + const endFormatted = formatDateByMode(rangeEnd); + + if (value === undefined) { + selectedDate = [startFormatted, endFormatted]; + } + + if (!needConfirm) { + if (onChange) { + onChange([startFormatted, endFormatted]); + } + setTimeout(() => { + isOpen = false; + }, 100); + } + } + } + + // Format date by current mode + function formatDateByMode(date) { + switch (mode) { + case 'date': + return formatDate(date); + case 'week': + return formatWeek(date); + case 'month': + return formatMonth(date); + case 'quarter': + return formatQuarter(date); + case 'year': + return formatYear(date); + default: + return formatDate(date); + } + } + + // Handle week selection + function handleWeekSelect(weekStart) { + const formattedValue = formatWeek(weekStart); + + if (!needConfirm) { + if (value === undefined) { + selectedDate = formattedValue; + } + if (onChange) { + onChange(formattedValue); + } + setTimeout(() => { + isOpen = false; + }, 100); + } else { + if (value === undefined) { + selectedDate = formattedValue; + } + } + } + + // Handle month selection + function handleMonthSelect(month) { + const newDate = new Date(currentYear, month, 1); + const formattedValue = formatMonth(newDate); + + if (picker === 'range') { + handleRangeSelect(formattedValue, newDate); + } else { + if (!needConfirm) { + if (value === undefined) { + selectedDate = formattedValue; + } + if (onChange) { + onChange(formattedValue); + } + setTimeout(() => { + isOpen = false; + }, 100); + } else { + if (value === undefined) { + selectedDate = formattedValue; + } + } + } + } + + // Handle quarter selection + function handleQuarterSelect(quarter) { + const month = (quarter - 1) * 3; + const newDate = new Date(currentYear, month, 1); + const formattedValue = formatQuarter(newDate); + + if (picker === 'range') { + handleRangeSelect(formattedValue, newDate); + } else { + if (!needConfirm) { + if (value === undefined) { + selectedDate = formattedValue; + } + if (onChange) { + onChange(formattedValue); + } + setTimeout(() => { + isOpen = false; + }, 100); + } else { + if (value === undefined) { + selectedDate = formattedValue; + } + } + } + } + + // Handle year selection + function handleYearSelect(year) { + const newDate = new Date(year, 0, 1); + const formattedValue = formatYear(newDate); + + if (picker === 'range') { + handleRangeSelect(formattedValue, newDate); + } else { + if (!needConfirm) { + if (value === undefined) { + selectedDate = formattedValue; + } + if (onChange) { + onChange(formattedValue); + } + setTimeout(() => { + isOpen = false; + }, 100); + } else { + if (value === undefined) { + selectedDate = formattedValue; + } + } + } + } + + // Handle month navigation + function handlePrevMonth() { + if (currentMonth === 0) { + currentMonth = 11; + currentYear = currentYear - 1; + } else { + currentMonth = currentMonth - 1; + } + + // 强制重新渲染日历 + forceUpdate(); + + // 确保周视图正确更新(非范围模式才单面板刷新) + if (mode === 'week' && picker !== 'range') { + setTimeout(() => { + const dropdown = document.querySelector('.inula-datepicker-dropdown'); + if (dropdown) { + updateWeekView(dropdown); + } + }, 0); + } + } + + function handleNextMonth() { + if (currentMonth === 11) { + currentMonth = 0; + currentYear = currentYear + 1; + } else { + currentMonth = currentMonth + 1; + } + + // 强制重新渲染日历 + forceUpdate(); + + // 确保周视图正确更新(非范围模式才单面板刷新) + if (mode === 'week' && picker !== 'range') { + setTimeout(() => { + const dropdown = document.querySelector('.inula-datepicker-dropdown'); + if (dropdown) { + updateWeekView(dropdown); + } + }, 0); + } + } + + // Handle year navigation + function handlePrevYear() { + currentYear = currentYear - 1; + + // 强制重新渲染日历 + forceUpdate(); + + // 确保周视图正确更新(非范围模式才单面板刷新) + if (mode === 'week' && picker !== 'range') { + setTimeout(() => { + const dropdown = document.querySelector('.inula-datepicker-dropdown'); + if (dropdown) { + updateWeekView(dropdown); + } + }, 0); + } + } + + function handleNextYear() { + currentYear = currentYear + 1; + + // 强制重新渲染日历 + forceUpdate(); + + // 确保周视图正确更新(非范围模式才单面板刷新) + if (mode === 'week' && picker !== 'range') { + setTimeout(() => { + const dropdown = document.querySelector('.inula-datepicker-dropdown'); + if (dropdown) { + updateWeekView(dropdown); + } + }, 0); + } + } + + // 强制更新组件 + function forceUpdate() { + // 直接更新日历内容,而不是关闭再打开 + const dropdown = document.querySelector('.inula-datepicker-dropdown'); + if (dropdown) { + // 更新标题显示 + const headerView = dropdown.querySelector('.inula-datepicker-header-view'); + if (headerView) { + if (mode === 'date' || mode === 'week') { + headerView.textContent = `${currentYear}年 ${monthNames[currentMonth]}`; + } else if (mode === 'year') { + headerView.textContent = `${currentYear - 5}年-${currentYear + 4}年`; + } else { + headerView.textContent = `${currentYear}年`; + } + } + + // 更新双面板标题(范围模式) + if (picker === 'range') { + const panelTitles = dropdown.querySelectorAll('.inula-datepicker-panel-title'); + if (panelTitles && panelTitles.length >= 2) { + panelTitles[0].textContent = `${currentYear}年 ${monthNames[currentMonth]}`; + const next = getNextMonthYear(); + panelTitles[1].textContent = `${next.year}年 ${monthNames[next.month]}`; + } + } + + // 根据当前模式更新内容 + updateCalendarContent(dropdown); + } + } + + // 根据当前模式更新日历内容 + function updateCalendarContent(dropdown) { + switch (mode) { + case 'date': + updateDateView(dropdown); + break; + case 'week': + if (picker === 'range') { + const next = getNextMonthYear(); + updateWeekViewWithParams(dropdown, 0, currentYear, currentMonth, false); + updateWeekViewWithParams(dropdown, 1, next.year, next.month, true); + } else { + updateWeekView(dropdown); + } + break; + case 'month': + updateMonthView(dropdown); + break; + case 'quarter': + updateQuarterView(dropdown); + break; + case 'year': + updateYearView(dropdown); + break; + } + } + + // 更新日期视图 + function updateDateView(dropdown) { + const daysContainers = dropdown.querySelectorAll('.inula-datepicker-panel .inula-datepicker-days:last-child'); + + // 左侧(当前月) + const leftContainer = daysContainers[0] || dropdown.querySelector('.inula-datepicker-days:last-child'); + if (leftContainer) { + leftContainer.innerHTML = ''; + const daysInMonth = getDaysInMonth(currentYear, currentMonth); + const firstDayOfMonth = getFirstDayOfMonth(currentYear, currentMonth); + for (let i = 0; i < firstDayOfMonth; i++) { + const emptyDay = document.createElement('div'); + emptyDay.className = 'inula-datepicker-day empty'; + leftContainer.appendChild(emptyDay); + } + for (let day = 1; day <= daysInMonth; day++) { + const date = new Date(currentYear, currentMonth, day); + const isToday = formatDate(date) === formatDate(new Date()); + let isSelected = mode === 'date' ? selectedDate === formatDate(date) : false; + const dayElement = document.createElement('div'); + dayElement.className = `inula-datepicker-day ${isToday ? 'today' : ''} ${isSelected ? 'selected' : ''} ${disabled ? 'disabled' : ''}`; + dayElement.textContent = day; + if (!disabled) dayElement.addEventListener('click', () => handleDateSelect(day)); + leftContainer.appendChild(dayElement); + } + } + + // 右侧(下一月) + if (picker === 'range') { + const next = getNextMonthYear(); + const rightContainer = daysContainers[1]; + if (rightContainer) { + rightContainer.innerHTML = ''; + const daysInMonth = getDaysInMonth(next.year, next.month); + const firstDayOfMonth = getFirstDayOfMonth(next.year, next.month); + for (let i = 0; i < firstDayOfMonth; i++) { + const emptyDay = document.createElement('div'); + emptyDay.className = 'inula-datepicker-day empty'; + rightContainer.appendChild(emptyDay); + } + for (let day = 1; day <= daysInMonth; day++) { + const date = new Date(next.year, next.month, day); + const isToday = formatDate(date) === formatDate(new Date()); + const dayElement = document.createElement('div'); + dayElement.className = `inula-datepicker-day ${isToday ? 'today' : ''} ${disabled ? 'disabled' : ''}`; + dayElement.textContent = day; + if (!disabled) rightContainer.appendChild(dayElement); + if (!disabled) rightContainer.lastChild.addEventListener('click', () => handleNextMonthDateSelect(day)); + } + } + } + } + + // 更新周视图 + function updateWeekView(dropdown) { + const weekNumbersContainer = dropdown.querySelector('.inula-datepicker-week-numbers'); + const weeksContainer = dropdown.querySelector('.inula-datepicker-weeks'); + + if (weekNumbersContainer && weeksContainer) { + // 清空现有内容 + weekNumbersContainer.innerHTML = ''; + weeksContainer.innerHTML = ''; + + // 获取当月第一天 + const firstDayOfMonth = new Date(currentYear, currentMonth, 1); + + // 获取当月第一天所在周的周一 + const firstMonday = new Date(firstDayOfMonth); + const dayOfWeek = firstDayOfMonth.getDay(); + const diff = dayOfWeek === 0 ? -6 : 1 - dayOfWeek; // 如果是周日,则往前推6天;否则,往前推(1-dayOfWeek)天 + firstMonday.setDate(firstDayOfMonth.getDate() + diff); + + // 计算当月有多少天 + const daysInMonth = getDaysInMonth(currentYear, currentMonth); + + // 计算当月最后一天 + const lastDayOfMonth = new Date(currentYear, currentMonth, daysInMonth); + + // 计算当月最后一天所在周的周日 + const lastSunday = new Date(lastDayOfMonth); + const lastDayOfWeek = lastDayOfMonth.getDay(); + lastSunday.setDate(lastDayOfMonth.getDate() + (lastDayOfWeek === 0 ? 0 : 7 - lastDayOfWeek)); + + // 计算总周数 + const totalDays = Math.round((lastSunday - firstMonday) / (24 * 60 * 60 * 1000)) + 1; + const totalWeeks = Math.ceil(totalDays / 7); + + // 从第一个周一开始,生成每周的日期 + let currentDate = new Date(firstMonday); + + for (let week = 0; week < totalWeeks; week++) { + const weekStartDate = new Date(currentDate); + const weekNumber = getWeekNumber(weekStartDate); + + // 创建周号 + const weekNumberElement = document.createElement('div'); + weekNumberElement.className = 'inula-datepicker-week-number'; + weekNumberElement.textContent = weekNumber; + weekNumbersContainer.appendChild(weekNumberElement); + + // 创建周行 + const weekRowElement = document.createElement('div'); + weekRowElement.className = 'inula-datepicker-week-row'; + + // 为这一周添加7天 + for (let dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) { + const dayDate = new Date(currentDate); + dayDate.setDate(currentDate.getDate() + dayOfWeek); + + const day = dayDate.getDate(); + const month = dayDate.getMonth(); + const year = dayDate.getFullYear(); + const isCurrentMonth = month === currentMonth && year === currentYear; + const isToday = formatDate(dayDate) === formatDate(new Date()); + let isInSelectedWeek = false; + let isWeekStart = false; + let isWeekEnd = false; + + if (selectedDate) { + const selectedWeek = parseDate(selectedDate); + if (selectedWeek) { + const selectedWeekDates = getWeekDates(selectedWeek); + isInSelectedWeek = dayDate >= selectedWeekDates.start && dayDate <= selectedWeekDates.end; + + if (isInSelectedWeek) { + const dayOfWeekNum = dayDate.getDay(); + isWeekStart = dayOfWeekNum === 1; + isWeekEnd = dayOfWeekNum === 0; + } + } + } + + const isDisabled = disabled; + + const dayElement = document.createElement('div'); + dayElement.className = `inula-datepicker-week ${!isCurrentMonth ? 'other-month' : ''} ${isToday ? 'today' : ''} ${isInSelectedWeek ? 'week-selected' : ''} ${isWeekStart ? 'week-start' : ''} ${isWeekEnd ? 'week-end' : ''} ${isDisabled ? 'disabled' : ''}`; + dayElement.textContent = day; + + // 为不在当前月的日期添加样式 + if (!isCurrentMonth) { + dayElement.style.color = '#ccc'; + } + + if (!isDisabled) { + dayElement.addEventListener('click', () => handleDateSelect(day)); + } + + weekRowElement.appendChild(dayElement); + } + + weeksContainer.appendChild(weekRowElement); + + // 移动到下一周的周一 + currentDate.setDate(currentDate.getDate() + 7); + } + } + } + + // 更新指定索引的周视图(用于范围双面板) + function updateWeekViewWithParams(dropdown, targetIndex, year, month, useNextHandler = false) { + const weekNumbersContainers = dropdown.querySelectorAll('.inula-datepicker-week-numbers'); + const weeksContainers = dropdown.querySelectorAll('.inula-datepicker-weeks'); + + const weekNumbersContainer = weekNumbersContainers[targetIndex]; + const weeksContainer = weeksContainers[targetIndex]; + + if (weekNumbersContainer && weeksContainer) { + weekNumbersContainer.innerHTML = ''; + weeksContainer.innerHTML = ''; + + const firstDayOfMonth = new Date(year, month, 1); + const firstMonday = new Date(firstDayOfMonth); + const dayOfWeek = firstDayOfMonth.getDay(); + const diff = dayOfWeek === 0 ? -6 : 1 - dayOfWeek; + firstMonday.setDate(firstDayOfMonth.getDate() + diff); + + const daysInMonth = getDaysInMonth(year, month); + const lastDayOfMonth = new Date(year, month, daysInMonth); + const lastSunday = new Date(lastDayOfMonth); + const lastDayOfWeek = lastDayOfMonth.getDay(); + lastSunday.setDate(lastDayOfMonth.getDate() + (lastDayOfWeek === 0 ? 0 : 7 - lastDayOfWeek)); + + const totalDays = Math.round((lastSunday - firstMonday) / (24 * 60 * 60 * 1000)) + 1; + const totalWeeks = Math.ceil(totalDays / 7); + + let currentDateLocal = new Date(firstMonday); + + for (let week = 0; week < totalWeeks; week++) { + const weekStartDate = new Date(currentDateLocal); + const weekNumber = getWeekNumber(weekStartDate); + + const weekNumberElement = document.createElement('div'); + weekNumberElement.className = 'inula-datepicker-week-number'; + weekNumberElement.textContent = weekNumber; + weekNumbersContainer.appendChild(weekNumberElement); + + const weekRowElement = document.createElement('div'); + weekRowElement.className = 'inula-datepicker-week-row'; + + for (let dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) { + const dayDate = new Date(currentDateLocal); + dayDate.setDate(currentDateLocal.getDate() + dayOfWeek); + + const day = dayDate.getDate(); + const m = dayDate.getMonth(); + const y = dayDate.getFullYear(); + const isCurrentMonth = m === month && y === year; + const isToday = formatDate(dayDate) === formatDate(new Date()); + let isInSelectedWeek = false; + let isWeekStart = false; + let isWeekEnd = false; + + if (selectedDate) { + const selectedWeek = parseDate(selectedDate); + if (selectedWeek) { + const selectedWeekDates = getWeekDates(selectedWeek); + isInSelectedWeek = dayDate >= selectedWeekDates.start && dayDate <= selectedWeekDates.end; + if (isInSelectedWeek) { + const dayOfWeekNum = dayDate.getDay(); + isWeekStart = dayOfWeekNum === 1; + isWeekEnd = dayOfWeekNum === 0; + } + } + } + + const dayElement = document.createElement('div'); + dayElement.className = `inula-datepicker-week ${!isCurrentMonth ? 'other-month' : ''} ${isToday ? 'today' : ''} ${isInSelectedWeek ? 'week-selected' : ''} ${isWeekStart ? 'week-start' : ''} ${isWeekEnd ? 'week-end' : ''} ${disabled ? 'disabled' : ''}`; + dayElement.textContent = day; + + if (!disabled) { + const handler = useNextHandler ? () => handleNextMonthDateSelect(day) : () => handleDateSelect(day); + dayElement.addEventListener('click', handler); + } + + if (!isCurrentMonth) { + dayElement.style.color = '#ccc'; + } + + weekRowElement.appendChild(dayElement); + } + + weeksContainer.appendChild(weekRowElement); + currentDateLocal.setDate(currentDateLocal.getDate() + 7); + } + } + } + + // 更新月份视图 + function updateMonthView(dropdown) { + const monthsContainer = dropdown.querySelector('.inula-datepicker-months'); + + if (monthsContainer) { + // 清空现有内容 + monthsContainer.innerHTML = ''; + + for (let month = 0; month < 12; month++) { + const date = new Date(currentYear, month, 1); + const isSelected = selectedDate === formatMonth(date); + + const monthElement = document.createElement('div'); + monthElement.className = `inula-datepicker-month ${isSelected ? 'selected' : ''}`; + monthElement.textContent = monthNames[month]; + monthElement.addEventListener('click', () => handleMonthSelect(month)); + + monthsContainer.appendChild(monthElement); + } + } + } + + // 更新季度视图 + function updateQuarterView(dropdown) { + const quartersContainer = dropdown.querySelector('.inula-datepicker-quarters'); + + if (quartersContainer) { + // 清空现有内容 + quartersContainer.innerHTML = ''; + + for (let quarter = 1; quarter <= 4; quarter++) { + const date = new Date(currentYear, (quarter - 1) * 3, 1); + const isSelected = selectedDate === formatQuarter(date); + + const quarterElement = document.createElement('div'); + quarterElement.className = `inula-datepicker-quarter ${isSelected ? 'selected' : ''}`; + quarterElement.textContent = `Q${quarter}`; + quarterElement.addEventListener('click', () => handleQuarterSelect(quarter)); + + quartersContainer.appendChild(quarterElement); + } + } + } + + // 更新年份视图 + function updateYearView(dropdown) { + const yearsContainer = dropdown.querySelector('.inula-datepicker-years'); + + if (yearsContainer) { + // 清空现有内容 + yearsContainer.innerHTML = ''; + + const startYear = currentYear - 5; + + for (let year = startYear; year <= startYear + 9; year++) { + const date = new Date(year, 0, 1); + const isSelected = selectedDate === formatYear(date); + + const yearElement = document.createElement('div'); + yearElement.className = `inula-datepicker-year ${isSelected ? 'selected' : ''}`; + yearElement.textContent = year; + yearElement.addEventListener('click', () => handleYearSelect(year)); + + yearsContainer.appendChild(yearElement); + } + } + } + + // Handle today button click + function handleTodayClick() { + const today = new Date(); + let formattedToday; + + switch (mode) { + case 'date': + formattedToday = formatDate(today); + break; + case 'week': + formattedToday = formatWeek(today); + break; + case 'month': + formattedToday = formatMonth(today); + break; + case 'quarter': + formattedToday = formatQuarter(today); + break; + case 'year': + formattedToday = formatYear(today); + break; + default: + formattedToday = formatDate(today); + } + + // 对于范围选择器,今天按钮只设置单个日期 + const todayValue = picker === 'range' ? [formattedToday] : formattedToday; + + if (value === undefined) { + selectedDate = todayValue; + } + + // 重置范围选择状态 + if (picker === 'range') { + rangeStart = today; + rangeEnd = null; + hoverDate = null; + } + + currentMonth = today.getMonth(); + currentYear = today.getFullYear(); + + if (!needConfirm) { + if (onChange) { + onChange(todayValue); + } + setTimeout(() => { + isOpen = false; + }, 100); + } + } + + // Handle confirm button click + function handleConfirm() { + isOpen = false; + if (onChange) { + onChange(selectedDate); + } + } + + // Handle clear button click + function handleClear(e) { + e.stopPropagation(); + const emptyValue = picker === 'range' ? [] : ''; + if (value === undefined) { + selectedDate = emptyValue; + } + rangeStart = null; + rangeEnd = null; + hoverDate = null; + if (onChange) { + onChange(emptyValue); + } + } + + // Toggle calendar visibility + function handleToggle(e) { + e.stopPropagation(); + if (!disabled) { + isOpen = !isOpen; + + // 如果打开日历,确保使用最新的年月数据渲染 + if (isOpen) { + // 如果有选中日期,使用选中日期的年月 + if (selectedDate) { + let dateToUse = selectedDate; + // For range picker, use the first date if it's an array + if (Array.isArray(selectedDate) && selectedDate.length > 0) { + dateToUse = selectedDate[0]; + } + + const date = parseDate(dateToUse); + if (date) { + currentMonth = date.getMonth(); + currentYear = date.getFullYear(); + } + } + } + } + } + + // Handle click outside + function handleBlur() { + isOpen = false; + } + + // Render calendar days + function renderCalendarDays() { + const daysInMonth = getDaysInMonth(currentYear, currentMonth); + const firstDayOfMonth = getFirstDayOfMonth(currentYear, currentMonth); + const days = []; + + // Add empty cells for days before the first day of the month + for (let i = 0; i < firstDayOfMonth; i++) { + days.push(
); + } + + // Add cells for each day of the month + for (let day = 1; day <= daysInMonth; day++) { + const date = new Date(currentYear, currentMonth, day); + const isToday = formatDate(date) === formatDate(new Date()); + let isSelected = false; + let isInSelectedWeek = false; + let isRangeStart = false; + let isRangeEnd = false; + let isInRange = false; + let isRangeHover = false; + + if (picker === 'range' && Array.isArray(selectedDate)) { + if (selectedDate.length === 2) { + const startDate = parseDate(selectedDate[0]); + const endDate = parseDate(selectedDate[1]); + if (startDate && endDate) { + if (mode === 'week') { + // 周模式下的范围选择 + const startWeekDates = getWeekDates(startDate); + const endWeekDates = getWeekDates(endDate); + isInRange = date >= startWeekDates.start && date <= endWeekDates.end; + isRangeStart = date >= startWeekDates.start && date <= startWeekDates.end; + isRangeEnd = date >= endWeekDates.start && date <= endWeekDates.end; + } else { + // 日期模式下的范围选择 + isRangeStart = formatDate(date) === formatDate(startDate); + isRangeEnd = formatDate(date) === formatDate(endDate); + isInRange = date >= startDate && date <= endDate; + } + } + } else if (selectedDate.length === 1 && rangeStart) { + if (mode === 'week') { + // 周模式下的悬停效果 + const startWeekDates = getWeekDates(rangeStart); + isInRange = date >= startWeekDates.start && date <= startWeekDates.end; + if (hoverDate) { + const hoverWeekDates = getWeekDates(hoverDate); + isInRange = date >= startWeekDates.start && date <= hoverWeekDates.end; + } + } else { + // 日期模式下的悬停效果 + isRangeStart = formatDate(date) === formatDate(rangeStart); + if (hoverDate && date >= rangeStart && date <= hoverDate) { + isRangeHover = true; + } + } + } + } else if (picker === 'single') { + if (mode === 'date') { + isSelected = selectedDate === formatDate(date); + } else if (mode === 'week' && selectedDate) { + const selectedWeek = parseDate(selectedDate); + if (selectedWeek) { + const selectedWeekDates = getWeekDates(selectedWeek); + // 比较日期是否在选中周内 + const currentDate = new Date(currentYear, currentMonth, day); + isInSelectedWeek = currentDate >= selectedWeekDates.start && currentDate <= selectedWeekDates.end; + } + } + } + + const isDisabled = disabled; + + days.push( +
handleDateSelect(day)} + onMouseEnter={() => { + if (picker === 'range' && rangeStart && !rangeEnd) { + hoverDate = date; + } + }} + onMouseLeave={() => { + if (picker === 'range') { + hoverDate = null; + } + }} + > + {day} +
+ ); + } + + return days; + } + + // Get next month and year for range picker + function getNextMonthYear() { + let nextMonth = currentMonth + 1; + let nextYear = currentYear; + + if (nextMonth > 11) { + nextMonth = 0; + nextYear = currentYear + 1; + } + + return { month: nextMonth, year: nextYear }; + } + + // Render next month calendar days for range picker + function renderNextMonthCalendarDays() { + const { month: nextMonth, year: nextYear } = getNextMonthYear(); + const daysInMonth = getDaysInMonth(nextYear, nextMonth); + const firstDayOfMonth = getFirstDayOfMonth(nextYear, nextMonth); + const days = []; + + // Add empty cells for days before the first day of the month + for (let i = 0; i < firstDayOfMonth; i++) { + days.push(
); + } + + // Add cells for each day of the month + for (let day = 1; day <= daysInMonth; day++) { + const date = new Date(nextYear, nextMonth, day); + const isToday = formatDate(date) === formatDate(new Date()); + let isSelected = false; + let isRangeStart = false; + let isRangeEnd = false; + let isInRange = false; + let isRangeHover = false; + + if (picker === 'range' && Array.isArray(selectedDate)) { + if (selectedDate.length === 2) { + const startDate = parseDate(selectedDate[0]); + const endDate = parseDate(selectedDate[1]); + if (startDate && endDate) { + if (mode === 'week') { + // 周模式下的范围选择 + const startWeekDates = getWeekDates(startDate); + const endWeekDates = getWeekDates(endDate); + isInRange = date >= startWeekDates.start && date <= endWeekDates.end; + isRangeStart = date >= startWeekDates.start && date <= startWeekDates.end; + isRangeEnd = date >= endWeekDates.start && date <= endWeekDates.end; + } else { + // 日期模式下的范围选择 + isRangeStart = formatDate(date) === formatDate(startDate); + isRangeEnd = formatDate(date) === formatDate(endDate); + isInRange = date >= startDate && date <= endDate; + } + } + } else if (selectedDate.length === 1 && rangeStart) { + if (mode === 'week') { + // 周模式下的悬停效果 + const startWeekDates = getWeekDates(rangeStart); + isInRange = date >= startWeekDates.start && date <= startWeekDates.end; + if (hoverDate) { + const hoverWeekDates = getWeekDates(hoverDate); + isInRange = date >= startWeekDates.start && date <= hoverWeekDates.end; + } + } else { + // 日期模式下的悬停效果 + isRangeStart = formatDate(date) === formatDate(rangeStart); + if (hoverDate && date >= rangeStart && date <= hoverDate) { + isRangeHover = true; + } + } + } + } + + const isDisabled = disabled; + + days.push( +
handleNextMonthDateSelect(day)} + onMouseEnter={() => { + if (picker === 'range' && rangeStart && !rangeEnd) { + hoverDate = date; + } + }} + onMouseLeave={() => { + if (picker === 'range') { + hoverDate = null; + } + }} + > + {day} +
+ ); + } + + return days; + } + + // Handle date selection for next month in range picker + function handleNextMonthDateSelect(day) { + const { month: nextMonth, year: nextYear } = getNextMonthYear(); + const newDate = new Date(nextYear, nextMonth, day); + let formattedValue; + + switch (mode) { + case 'date': + formattedValue = formatDate(newDate); + break; + case 'week': + formattedValue = formatWeek(newDate); + break; + case 'month': + formattedValue = formatMonth(newDate); + break; + case 'quarter': + formattedValue = formatQuarter(newDate); + break; + case 'year': + formattedValue = formatYear(newDate); + break; + default: + formattedValue = formatDate(newDate); + } + + if (picker === 'range') { + handleRangeSelect(formattedValue, newDate); + } + } + + // Render week view + function renderWeekView() { + // 当mode为week时,按周来渲染 + const weeks = []; + const weekNumbers = []; + + // 获取当月第一天 + const firstDayOfMonth = new Date(currentYear, currentMonth, 1); + + // 获取当月第一天所在周的周一 + const firstMonday = new Date(firstDayOfMonth); + const dayOfWeek = firstDayOfMonth.getDay(); + const diff = dayOfWeek === 0 ? -6 : 1 - dayOfWeek; // 如果是周日,则往前推6天;否则,往前推(1-dayOfWeek)天 + firstMonday.setDate(firstDayOfMonth.getDate() + diff); + + // 计算当月有多少天 + const daysInMonth = getDaysInMonth(currentYear, currentMonth); + + // 计算当月最后一天 + const lastDayOfMonth = new Date(currentYear, currentMonth, daysInMonth); + + // 计算当月最后一天所在周的周日 + const lastSunday = new Date(lastDayOfMonth); + const lastDayOfWeek = lastDayOfMonth.getDay(); + lastSunday.setDate(lastDayOfMonth.getDate() + (lastDayOfWeek === 0 ? 0 : 7 - lastDayOfWeek)); + + // 计算总周数 + const totalDays = Math.round((lastSunday - firstMonday) / (24 * 60 * 60 * 1000)) + 1; + const totalWeeks = Math.ceil(totalDays / 7); + + // 从第一个周一开始,生成每周的日期 + let currentDate = new Date(firstMonday); + + for (let week = 0; week < totalWeeks; week++) { + const weekDays = []; + const weekStartDate = new Date(currentDate); + const weekNumber = getWeekNumber(weekStartDate); + + // 为这一周添加7天 + for (let dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) { + const dayDate = new Date(currentDate); + dayDate.setDate(currentDate.getDate() + dayOfWeek); + + const day = dayDate.getDate(); + const month = dayDate.getMonth(); + const year = dayDate.getFullYear(); + const isCurrentMonth = month === currentMonth && year === currentYear; + const isToday = formatDate(dayDate) === formatDate(new Date()); + let isInSelectedWeek = false; + let isWeekStart = false; + let isWeekEnd = false; + + if (picker === 'range' && Array.isArray(selectedDate)) { + // 周范围选择逻辑 + if (selectedDate.length === 2) { + const startDate = parseDate(selectedDate[0]); + const endDate = parseDate(selectedDate[1]); + if (startDate && endDate) { + const startWeekDates = getWeekDates(startDate); + const endWeekDates = getWeekDates(endDate); + + // 检查日期是否在周范围内 + isInSelectedWeek = (dayDate >= startWeekDates.start && dayDate <= endWeekDates.end); + + // 判断是否是范围的开始和结束 + if (isInSelectedWeek) { + const dayOfWeekNum = dayDate.getDay(); + // 周开始:周一且在开始周内 + isWeekStart = dayOfWeekNum === 1 && dayDate >= startWeekDates.start && dayDate <= startWeekDates.end; + // 周结束:周日且在结束周内 + isWeekEnd = dayOfWeekNum === 0 && dayDate >= endWeekDates.start && dayDate <= endWeekDates.end; + } + } + } else if (selectedDate.length === 1 && rangeStart) { + const startWeekDates = getWeekDates(rangeStart); + isInSelectedWeek = dayDate >= startWeekDates.start && dayDate <= startWeekDates.end; + + if (hoverDate) { + const hoverWeekDates = getWeekDates(hoverDate); + // 检查是否在悬停的周范围内 + isInSelectedWeek = isInSelectedWeek || (dayDate >= startWeekDates.start && dayDate <= hoverWeekDates.end); + } + } + } else if (picker === 'single' && selectedDate) { + const selectedWeek = parseDate(selectedDate); + if (selectedWeek) { + const selectedWeekDates = getWeekDates(selectedWeek); + isInSelectedWeek = dayDate >= selectedWeekDates.start && dayDate <= selectedWeekDates.end; + + // 判断是否是周的开始和结束 + if (isInSelectedWeek) { + const dayOfWeekNum = dayDate.getDay(); + isWeekStart = dayOfWeekNum === 1; // 周一 + isWeekEnd = dayOfWeekNum === 0; // 周日 + } + } + } + + const isDisabled = disabled; + + weekDays.push( +
handleDateSelect(day)} + onMouseEnter={() => { + if (picker === 'range' && rangeStart && !rangeEnd) { + hoverDate = dayDate; + } + }} + onMouseLeave={() => { + if (picker === 'range') { + hoverDate = null; + } + }} + style={!isCurrentMonth ? { color: '#ccc' } : {}} + > + {day} +
+ ); + } + + weeks.push( +
+ {weekDays} +
+ ); + + weekNumbers.push( +
+ {weekNumber} +
+ ); + + // 移动到下一周的周一 + currentDate.setDate(currentDate.getDate() + 7); + } + + return { weeks, weekNumbers }; + } + + // Render next month week view for range picker + function renderNextMonthWeekView() { + const { month: nextMonth, year: nextYear } = getNextMonthYear(); + const weeks = []; + const weekNumbers = []; + + const firstDayOfMonth = new Date(nextYear, nextMonth, 1); + const firstMonday = new Date(firstDayOfMonth); + const dayOfWeek = firstDayOfMonth.getDay(); + const diff = dayOfWeek === 0 ? -6 : 1 - dayOfWeek; + firstMonday.setDate(firstDayOfMonth.getDate() + diff); + + const daysInMonth = getDaysInMonth(nextYear, nextMonth); + const lastDayOfMonth = new Date(nextYear, nextMonth, daysInMonth); + const lastSunday = new Date(lastDayOfMonth); + const lastDayOfWeek = lastDayOfMonth.getDay(); + lastSunday.setDate(lastDayOfMonth.getDate() + (lastDayOfWeek === 0 ? 0 : 7 - lastDayOfWeek)); + + const totalDays = Math.round((lastSunday - firstMonday) / (24 * 60 * 60 * 1000)) + 1; + const totalWeeks = Math.ceil(totalDays / 7); + + let currentDate = new Date(firstMonday); + + for (let week = 0; week < totalWeeks; week++) { + const weekDays = []; + const weekStartDate = new Date(currentDate); + const weekNumber = getWeekNumber(weekStartDate); + + for (let dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) { + const dayDate = new Date(currentDate); + dayDate.setDate(currentDate.getDate() + dayOfWeek); + + const day = dayDate.getDate(); + const month = dayDate.getMonth(); + const year = dayDate.getFullYear(); + const isCurrentMonth = month === nextMonth && year === nextYear; + const isToday = formatDate(dayDate) === formatDate(new Date()); + let isInSelectedWeek = false; + let isWeekStart = false; + let isWeekEnd = false; + + if (picker === 'range' && Array.isArray(selectedDate)) { + if (selectedDate.length === 2) { + const startDate = parseDate(selectedDate[0]); + const endDate = parseDate(selectedDate[1]); + if (startDate && endDate) { + const startWeekDates = getWeekDates(startDate); + const endWeekDates = getWeekDates(endDate); + isInSelectedWeek = (dayDate >= startWeekDates.start && dayDate <= endWeekDates.end); + if (isInSelectedWeek) { + const dayOfWeekNum = dayDate.getDay(); + isWeekStart = dayOfWeekNum === 1 && dayDate >= startWeekDates.start && dayDate <= startWeekDates.end; + isWeekEnd = dayOfWeekNum === 0 && dayDate >= endWeekDates.start && dayDate <= endWeekDates.end; + } + } + } else if (selectedDate.length === 1 && rangeStart) { + const startWeekDates = getWeekDates(rangeStart); + isInSelectedWeek = dayDate >= startWeekDates.start && dayDate <= startWeekDates.end; + if (hoverDate) { + const hoverWeekDates = getWeekDates(hoverDate); + isInSelectedWeek = isInSelectedWeek || (dayDate >= startWeekDates.start && dayDate <= hoverWeekDates.end); + } + } + } else if (picker === 'single' && selectedDate) { + const selectedWeek = parseDate(selectedDate); + if (selectedWeek) { + const selectedWeekDates = getWeekDates(selectedWeek); + isInSelectedWeek = dayDate >= selectedWeekDates.start && dayDate <= selectedWeekDates.end; + if (isInSelectedWeek) { + const dayOfWeekNum = dayDate.getDay(); + isWeekStart = dayOfWeekNum === 1; + isWeekEnd = dayOfWeekNum === 0; + } + } + } + + const isDisabled = disabled; + + weekDays.push( +
handleNextMonthDateSelect(day)} + onMouseEnter={() => { + if (picker === 'range' && rangeStart && !rangeEnd) { + hoverDate = dayDate; + } + }} + onMouseLeave={() => { + if (picker === 'range') { + hoverDate = null; + } + }} + style={!isCurrentMonth ? { color: '#ccc' } : {}} + > + {day} +
+ ); + } + + weeks.push( +
+ {weekDays} +
+ ); + + weekNumbers.push( +
+ {weekNumber} +
+ ); + + currentDate.setDate(currentDate.getDate() + 7); + } + + return { weeks, weekNumbers }; + } + + // Render month view + function renderMonthView() { + const months = []; + + for (let month = 0; month < 12; month++) { + const date = new Date(currentYear, month, 1); + let isSelected = false; + let isRangeStart = false; + let isRangeEnd = false; + let isInRange = false; + + if (picker === 'range' && Array.isArray(selectedDate)) { + if (selectedDate.length === 2) { + const startDate = parseDate(selectedDate[0]); + const endDate = parseDate(selectedDate[1]); + if (startDate && endDate) { + isRangeStart = formatMonth(date) === formatMonth(startDate); + isRangeEnd = formatMonth(date) === formatMonth(endDate); + isInRange = date >= startDate && date <= endDate; + } + } else if (selectedDate.length === 1 && rangeStart) { + isRangeStart = formatMonth(date) === formatMonth(rangeStart); + } + } else if (picker === 'single') { + isSelected = selectedDate === formatMonth(date); + } + + months.push( +
handleMonthSelect(month)} + > + {monthNames[month]} +
+ ); + } + + return months; + } + + // Render quarter view + function renderQuarterView() { + const quarters = []; + + for (let quarter = 1; quarter <= 4; quarter++) { + const date = new Date(currentYear, (quarter - 1) * 3, 1); + let isSelected = false; + let isRangeStart = false; + let isRangeEnd = false; + let isInRange = false; + + if (picker === 'range' && Array.isArray(selectedDate)) { + if (selectedDate.length === 2) { + const startDate = parseDate(selectedDate[0]); + const endDate = parseDate(selectedDate[1]); + if (startDate && endDate) { + isRangeStart = formatQuarter(date) === formatQuarter(startDate); + isRangeEnd = formatQuarter(date) === formatQuarter(endDate); + isInRange = date >= startDate && date <= endDate; + } + } else if (selectedDate.length === 1 && rangeStart) { + isRangeStart = formatQuarter(date) === formatQuarter(rangeStart); + } + } else if (picker === 'single') { + isSelected = selectedDate === formatQuarter(date); + } + + quarters.push( +
handleQuarterSelect(quarter)} + > + Q{quarter} +
+ ); + } + + return quarters; + } + + // Render year view + function renderYearView() { + const years = []; + const startYear = currentYear - 5; + + for (let year = startYear; year <= startYear + 9; year++) { + const date = new Date(year, 0, 1); + let isSelected = false; + let isRangeStart = false; + let isRangeEnd = false; + let isInRange = false; + + if (picker === 'range' && Array.isArray(selectedDate)) { + if (selectedDate.length === 2) { + const startDate = parseDate(selectedDate[0]); + const endDate = parseDate(selectedDate[1]); + if (startDate && endDate) { + isRangeStart = formatYear(date) === formatYear(startDate); + isRangeEnd = formatYear(date) === formatYear(endDate); + isInRange = date >= startDate && date <= endDate; + } + } else if (selectedDate.length === 1 && rangeStart) { + isRangeStart = formatYear(date) === formatYear(rangeStart); + } + } else if (picker === 'single') { + isSelected = selectedDate === formatYear(date); + } + + years.push( +
handleYearSelect(year)} + > + {year} +
+ ); + } + + return years; + } + + // Month names for display + const monthNames = [ + '1月', '2月', '3月', '4月', '5月', '6月', + '7月', '8月', '9月', '10月', '11月', '12月' + ]; + + // Day names for display + const dayNames = ['日', '一', '二', '三', '四', '五', '六']; + + // Week names for display + const weekNames = ['一', '二', '三', '四', '五', '六', '日']; + + // Determine size class + const sizeClass = size === 'small' ? 'inula-datepicker-small' : + size === 'large' ? 'inula-datepicker-large' : ''; + + // Get placeholder based on mode and picker type + const getPlaceholder = () => { + if (placeholder) return placeholder; + + const baseText = (() => { + switch (mode) { + case 'week': + return '周'; + case 'month': + return '月份'; + case 'quarter': + return '季度'; + case 'year': + return '年份'; + default: + return '日期'; + } + })(); + + return picker === 'range' ? `请选择${baseText}范围` : `请选择${baseText}`; + }; + + // Get display value for input + const getDisplayValue = () => { + if (picker === 'range') { + if (Array.isArray(selectedDate)) { + if (selectedDate.length === 2) { + return `${selectedDate[0]} ~ ${selectedDate[1]}`; + } else if (selectedDate.length === 1) { + return selectedDate[0]; + } + } + return ''; + } + return selectedDate || ''; + }; + + // Get range start value + const getRangeStartValue = () => { + if (Array.isArray(selectedDate) && selectedDate.length > 0) { + return selectedDate[0]; + } + return ''; + }; + + // Get range end value + const getRangeEndValue = () => { + if (Array.isArray(selectedDate) && selectedDate.length > 1) { + return selectedDate[1]; + } + return ''; + }; + + return ( +
+
handleToggle(e)} + > + {picker === 'range' ? ( + <> + + ~ + + 0)) && clearable && !disabled && hoverIcon}> + + + + + + + ) : ( + <> + + + + + + + + + )} +
+ + {isOpen && ( +
e.stopPropagation()}> + {picker !== 'range' && ( +
+ + {(mode === 'date' || mode === 'week') && ( + + )} + + {mode === 'date' && `${currentYear}年 ${monthNames[currentMonth]}`} + {mode === 'week' && `${currentYear}年 ${monthNames[currentMonth]}`} + {mode === 'month' && `${currentYear}年`} + {mode === 'quarter' && `${currentYear}年`} + {mode === 'year' && `${currentYear - 5}年-${currentYear + 4}年`} + + {(mode === 'date' || mode === 'week') && ( + + )} + +
+ )} + +
+ {picker === 'range' && mode === 'date' ? ( + <> + {/* 左侧月份面板 */} +
+
+ + + + {currentYear}年 {monthNames[currentMonth]} + +
+
+
+ {dayNames.map((day, index) => ( +
{day}
+ ))} +
+
+ {renderCalendarDays()} +
+
+ + {/* 右侧月份面板 */} +
+
+
+ + {getNextMonthYear().year}年 {monthNames[getNextMonthYear().month]} + + + +
+
+ {dayNames.map((day, index) => ( +
{day}
+ ))} +
+
+ {renderNextMonthCalendarDays()} +
+
+ + ) : picker === 'range' && mode === 'week' ? ( + <> + {/* 左侧周面板 */} +
+
+ + + + {currentYear}年 {monthNames[currentMonth]} + +
+
+
+ {weekNames.map((day, index) => ( +
{day}
+ ))} +
+
+
+ {renderWeekView().weekNumbers} +
+
+ {renderWeekView().weeks} +
+
+
+ + {/* 右侧周面板 */} +
+
+
+ + {getNextMonthYear().year}年 {monthNames[getNextMonthYear().month]} + + + +
+
+ {weekNames.map((day, index) => ( +
{day}
+ ))} +
+
+
+ {renderNextMonthWeekView().weekNumbers} +
+
+ {renderNextMonthWeekView().weeks} +
+
+
+ + ) : ( + <> + {mode === 'date' && ( + <> +
+ {dayNames.map((day, index) => ( +
{day}
+ ))} +
+
+ {renderCalendarDays()} +
+ + )} + {mode === 'week' && ( + <> +
+ {weekNames.map((day, index) => ( +
{day}
+ ))} +
+
+
+ {renderWeekView().weekNumbers} +
+
+ {renderWeekView().weeks} +
+
+ + )} + {mode === 'month' && ( +
+ {renderMonthView()} +
+ )} + {mode === 'quarter' && ( +
+ {renderQuarterView()} +
+ )} + {mode === 'year' && ( +
+ {renderYearView()} +
+ )} + + )} +
+ +
+
+ {showToday && ( + + )} +
+
+ {needConfirm && ( + + )} +
+
+
+ )} +
+ ); +}; + +export default DatePicker; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demo.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demo.jsx new file mode 100644 index 00000000..73a3d9e6 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demo.jsx @@ -0,0 +1,85 @@ +import Demo1 from "./demos/demo1.jsx"; +import Demo2 from "./demos/demo2.jsx"; +import Demo3 from "./demos/demo3.jsx"; +import Demo4 from "./demos/demo4.jsx"; +import Demo5 from "./demos/demo5.jsx"; +import Demo6 from "./demos/demo6.jsx"; + +function DatePickerDemo() { + return ( +
+
+
+

基础用法

+
最简单的用法,在浮层中可以选择或者输入日期。
+
+
+ +
+
+ + {/*
+
+

日期范围选择器

+
通过设置 picker 属性,指定范围选择器类型。
+
+
+ +
+
+ +
+
+

基础选择器回调受控

+
测试回调函数和受控实现
+
+
+ +
+
+ +
+
+

rangePicker

+
+ 可以通过picker改变选择器功能,size分为大中小,支持禁用、支持varient变体,status状态。 +
+
+
+ +
+
+ +
+
+

rangepikcer进阶

+
+ 图标自定义,自定义defaultValue、defaultPickerValue,format,时期范围限定 +
+
+
+ +
+
+ +
+
+

range选择器回调受控

+
测试回调函数和受控实现
+
+
+ +
+
+
+ ); +} + +export default DatePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo1.jsx new file mode 100644 index 00000000..c44023b8 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo1.jsx @@ -0,0 +1,97 @@ +import { DatePicker } from "../index.jsx"; +import Tag from "../../tag/index.jsx"; + +function Demo1() { + const handleChange = (value) => { + console.log("选择的值:", value); + }; + + return ( +
+
+ 五种picker基本日期选择器 + + + + + +
+ +
+ 不同尺寸日期选择器 + + + +
+ +
+ 禁用状态基本日期选择器 + +
+ +
+ 四种varient变体基本选择器 + + + + +
+ +
+ 两种status基本日期选择器 + + +
+
+ ); +} + +export default Demo1; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo2.jsx new file mode 100644 index 00000000..7d908154 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo2.jsx @@ -0,0 +1,100 @@ +import { DatePicker } from "../index.jsx"; +import Tag from "../../tag/index.jsx"; +import Icon from "../../icon/index.jsx"; + +function DatePickerDemo() { + return ( +
+
+ 需要确认的日期选择器 + + + + + +
+ +
+ showNow控制今天按钮显示 + +
+ +
+ 自定义prefix,suffixIcon图标 + } + placeholder="prefix" + /> + } + placeholder="suffixIcon" + /> +
+ +
+ 自定义日历title切换图标 + } + style={{ width: 200 }} + placeholder="prevIcon" + placement="topLeft" + /> + } + style={{ width: 200 }} + placeholder="nextIcon" + placement="topLeft" + /> + } + style={{ width: 200 }} + placeholder="superPrevIcon" + placement="topLeft" + /> + } + style={{ width: 200 }} + placeholder="superNextIcon" + placement="topLeft" + /> +
+
+ ); +} + +export default DatePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo3.jsx new file mode 100644 index 00000000..57de303b --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo3.jsx @@ -0,0 +1,73 @@ +import { DatePicker } from "../index.jsx"; +import Tag from "../../tag/index.jsx"; + +function DatePickerDemo() { + return ( +
+
+ 日期默认值 + + + + + +
+ +
+ calendar浮窗面板默认值 + + + + + +
+
+ ); +} + +export default DatePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo4.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo4.jsx new file mode 100644 index 00000000..a7374158 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo4.jsx @@ -0,0 +1,59 @@ +import { DatePicker } from "../index.jsx"; +import Tag from "../../tag/index.jsx"; + +function DatePickerDemo() { + return ( +
+ 范围和选中限制 + + + + + +
+ ); +} + +export default DatePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo5.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo5.jsx new file mode 100644 index 00000000..d6d1a46c --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo5.jsx @@ -0,0 +1,161 @@ +import { DatePicker } from "../index.jsx"; +import Button from "../../button/index.jsx"; +import Tag from "../../tag/index.jsx"; + +function DatePickerDemo() { + let open = false; + let defaultOpen = false; + let placement = "bottomLeft"; + let picker = "date"; + let size = "default"; + + const handleControllOpenChange = (isOpen) => { + open = !isOpen; + }; + + const handleChange = (value) => { + console.log("选择的值:", value); + }; + + const handleOpenChange = (isOpen) => { + console.log(isOpen); + }; + + const handlePanleChange = (value, mode) => { + console.log(value, mode); + }; + + const handleClickOk = (value) => { + console.log("ok", value); + }; + + const onBlur = () => { + console.log(111); + }; + + const onFocus = () => { + console.log(111); + }; + + return ( +
+
+ + 回调函数示例 + +
+ + + + + +
+
+
+ + open受控示例 + +
+ + +
+
+
+ + 日历弹出位置控制 + +
+ +
+
+ + + + + + + + + + + + +
+
+
+ ); +} + +export default DatePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo6.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo6.jsx new file mode 100644 index 00000000..05bc125b --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo6.jsx @@ -0,0 +1,143 @@ +import { RangePicker } from "../index.jsx"; +import Tag from "../../tag/index.jsx"; + +function RangePickerDemo() { + const handleChange = (value) => { + console.log("选择的值:", value); + }; + + return ( +
+
+ + 五种picker-range日期选择器 + +
+ + + + + +
+
+ +
+ + 三种size-range日期选择器 + +
+ + + +
+
+ +
+ + 禁用状态range日期选择器 + +
+ +
+
+ +
+ + 四种varient-range日期选择器 + +
+ + + + +
+
+ +
+ + 两种status-range日期选择器 + +
+ + +
+
+
+ ); +} + +export default RangePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo7.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo7.jsx new file mode 100644 index 00000000..6e0e9a65 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo7.jsx @@ -0,0 +1,199 @@ +import { RangePicker } from "../index.jsx"; +import Icon from "../../icon/index.jsx"; +import Tag from "../../tag/index.jsx"; + +function RangePickerDemo() { + const handleChange = (value) => { + console.log("选择的值:", value); + }; + + return ( +
+
+ + 需要确认的rang日期选择器 + +
+ + + + + +
+
+ +
+ + 自定义前后缀图标和title切换图标的range日期选择器 + +
+ } + placeholder="prefix" + /> + } + placeholder="suffixIcon" + /> + } + placeholder="prevIcon" + /> + } + placeholder="nextIcon" + /> + } + placeholder="superPrevIcon" + /> + } + placeholder="superNextIcon" + /> +
+
+ +
+ + 带defaultValue的range日期选择器 + +
+ + + + + +
+
+ +
+ + 带日期范围限制的range日期选择器 + +
+ + + + + +
+
+
+ ); +} + +export default RangePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo8.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo8.jsx new file mode 100644 index 00000000..7d94f491 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/demos/demo8.jsx @@ -0,0 +1,183 @@ +import { RangePicker } from "../index.jsx"; +import Button from "../../button/index.jsx"; +import Tag from "../../tag/index.jsx"; + +function RangePickerDemo() { + let open = false; + let defaultOpen = false; + let placement = "bottomLeft"; + let picker = "date"; + let size = "default"; + + const handleControllOpenChange = (isOpen) => { + open = !isOpen; + }; + + const handleChange = (value) => { + console.log("选择的值:", value); + }; + + const handleOpenChange = (isOpen) => { + console.log(isOpen); + }; + + const handlePanleChange = (value, mode) => { + console.log(value, mode); + }; + + const handleClickOk = (value) => { + console.log("ok", value); + }; + + const onBlur = () => { + console.log(111); + }; + + const onFocus = () => { + console.log(111); + }; + + return ( +
+
+ + 自定义回调函数的range日期选择器 + +
+ + + + + +
+
+ +
+ + 浮层弹出受控示例 + +
+ + +
+
+ +
+ + 控制日历弹出位置 + +
+ +
+
+ + + + + + + + + + + + +
+
+
+ ); +} + +export default RangePickerDemo; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/index.css b/packages/inula2-ui2/library_code/src/components/datepicker2/index.css new file mode 100644 index 00000000..86ad96ea --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/index.css @@ -0,0 +1,599 @@ +.inula-datepicker { + position: relative; +} + +/* 输入框样式 */ +.inula-datepicker-input-contiainer { + position: relative; +} + +/* 普通输入框 */ +.inula-datepicker-input { + width: 112px; + height: 24px; + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, 0.15); + + padding: 4px 11px; + + font-size: 14px; + line-height: 24px; +} + +.inula-datepicker-input:hover { + border-color: #1677ff; +} + +.inula-datepicker-input:focus { + border-color: #1677ff; + outline: none; + box-shadow: 0 0 0 2px rgba(22, 119, 255, 0.2); +} + +.inula-datepicker-input-icon { + position: absolute; + right: 8px; + top: 16px; + transform: translateY(-50%); + + display: flex; + justify-content: center; + align-items: center; +} + +.inula-datepicker-input-icon .clear { + width: 14px; + height: 14px; + border-radius: 50%; + background-color: rgba(0, 0, 0, 0.45); + + display: flex; + justify-content: center; + align-items: center; + + cursor: pointer; +} + +/* 禁用态 */ +.inula-datepicker-input-disabled, +.inula-datepicker-input-disabled:hover { + background-color: #f5f5f5; + border-color: rgba(0, 0, 0, 0.08); + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} + +.icon-disabled .inula-icon:hover { + cursor: not-allowed !important; +} + +/* 小尺寸 */ +.inula-datepicker-input-small { + width: 112px; + height: 24px; + font-size: 12px; + line-height: 20px; + padding: 0 7px; + + font-size: 12px; +} + +.inula-datepicker-input-small + .inula-datepicker-input-icon .inula-icon { + font-size: 12px !important; +} + +.inula-datepicker-input-small + .inula-datepicker-input-icon .clear { + width: 12px; + height: 12px; +} + +.inula-datepicker-input-small + .inula-datepicker-input-icon { + top: 13px; +} + +/* 大尺寸 */ +.inula-datepicker-input-large { + width: 112px; + height: 24px; + font-size: 16px; + line-height: 32px; + padding: 7px 11px; + + font-size: 16px; +} + +.inula-datepicker-input-large + .inula-datepicker-input-icon .inula-icon { + font-size: 16px !important; +} + +.inula-datepicker-input-large + .inula-datepicker-input-icon .clear { + width: 20px; + height: 20px; +} + +.inula-datepicker-input-large + .inula-datepicker-input-icon { + top: 20px; +} + +/* variant线条边框样式 */ +/* filled */ +.inula-datepicker-input.inula-datepicker-input-filled { + border: 1px solid transparent; + background-color: #f0f0f0; +} + +.inula-datepicker-input.inula-datepicker-input-filled:focus { + border: 1px solid #1677ff; + outline: none; + box-shadow: none; +} + +/* bordless */ +.inula-datepicker-input.inula-datepicker-input-borderless { + border: none; +} + +.inula-datepicker-input.inula-datepicker-input-borderless:focus { + outline: none; + box-shadow: none; +} + +/* underline */ +.inula-datepicker-input.inula-datepicker-input-underline { + border: 0; + border-bottom: 1px solid rgba(0, 0, 0, 0.25); + border-radius: 0; +} + +.inula-datepicker-input.inula-datepicker-input-underline:focus { + border-color: #1677ff; + outline: none; + box-shadow: none; +} + +/* status 状态样式 */ +/* error */ +.inula-datepicker-input.inula-datepicker-input-error { + border: 1px solid #ff4d4f; +} + +.inula-datepicker-input.inula-datepicker-input-error:hover { + border-color: #ffa39e; +} + +.inula-datepicker-input.inula-datepicker-input-error:focus { + box-shadow: 0 0 0 2px rgba(255, 38, 5, 0.06); +} + +.inula-datepicker-input.inula-datepicker-input-error + + .inula-datepicker-input-icon + .inula-icon { + color: #ff4d4f !important; +} + +/* 不改变清除按钮颜色 */ +.inula-datepicker-input.inula-datepicker-input-error + + .inula-datepicker-input-icon + .clear + .inula-icon { + color: #fff !important; +} + +/* warning */ +.inula-datepicker-input.inula-datepicker-input-warning { + border: 1px solid #faad14; +} + +.inula-datepicker-input.inula-datepicker-input-warning:hover { + border-color: #ffd666; +} + +.inula-datepicker-input.inula-datepicker-input-warning:focus { + box-shadow: 0 0 0 2px rgba(255, 215, 5, 0.1); +} + +.inula-datepicker-input.inula-datepicker-input-warning + + .inula-datepicker-input-icon + .inula-icon { + color: #faad14 !important; +} + +.inula-datepicker-input.inula-datepicker-input-warning + + .inula-datepicker-input-icon + .clear + .inula-icon { + color: #fff !important; +} + +/* RangePicker */ +.inula-datepicker-input-container.range-container { + width: 300px; +} + +.inula-datepicker-input.range-input { + width: 45%; +} + +/* 日历样式 */ +.inula-calendar { + position: absolute; + z-index: 100; + top: 33px; + + width: 287x !important; + background-color: #fff; + + display: flex; + flex-direction: column; + + border-radius: 6px; + box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05); +} + +.inula-calendar.closed { + display: none; +} + +/* 日历头部样式 */ +.inula-calendar-header { + width: calc(100% - 8px); + height: 32px; + + padding: 4px; + + display: flex; + justify-content: space-between; + align-items: center; + + border-bottom: 1px solid rgba(0, 0, 0, 0.08); +} + +.inula-calendar-header-title { + font-size: 14px; + font-weight: bold; + color: rgba(0, 0, 0, 0.88); +} + +.range-title.inula-calendar-header-title { + width: 65%; + display: flex; + justify-content: space-between; +} + +/* 左右切换箭头 */ +.inula-calendar-header-left { + display: flex; + gap: 7px; + margin-left: 8px; +} + +.inula-calendar-header-left .inula-icon:hover { + cursor: pointer; + color: rgba(0, 0, 0, 0.88) !important; +} + +.inula-calendar-header-right { + display: flex; + gap: 7px; + margin-right: 8px; +} + +.inula-calendar-header-right .inula-icon:hover { + cursor: pointer; + color: rgba(0, 0, 0, 0.88) !important; +} + +/* 日历内容样式 */ +.inula-calendar-content { + width: calc(100% - 21px); + padding: 10.5px; + display: grid; + grid-template-columns: repeat(var(--grid-columns), 1fr); +} + +/* rangpicker */ +.inula-calendar-range-content { + display: flex; +} + +/* + +item通用样式 + +*/ +/* 容器 */ +.item-container { + width: 36px; + height: px; + + margin: 6px 0; + + display: flex; + justify-content: center; + align-items: center; + + position: relative; + + transition: all 0.1s ease-in-out; +} + +.item-container::before { + content: ""; + + width: 100%; + height: 6px; + + position: absolute; + top: -6px; +} + +.item-container::after { + content: ""; + + width: 100%; + height: 6px; + + position: absolute; + bottom: -6px; +} + +/* + +日期选择器、周选择器共用 + +*/ +/* 星期标签item */ +.inula-calendar-content-weekday { + height: 32px; + line-height: 32px; + text-align: center; +} + +/* 今天选中样式 */ +.inula-calendar-content-date-item.inula-calendar-content-date-item-today { + border: 1px solid #1677ff; + box-sizing: border-box; +} + +/* +通用hover样式,week特殊 + +*/ +/* 容器 */ +.item-container:not(.week-container):hover { + cursor: pointer; +} + +/* item本身 */ +.inula-calendar-content-date-item { + height: 24px; + width: 24px; + margin: 5px 7px; + border-radius: 6px; + + font-size: 14px; + text-align: center; + line-height: 24px; + + transition: all 0.3s ease-in-out; +} + +/* item本身,selected时不生效 */ +.item-container:not(.week-container):hover + .inula-calendar-content-date-item:not( + .inula-calendar-content-date-item-selected + ) { + background-color: #f5f5f5; + cursor: pointer; +} + +/* rangepicker的hover样式 */ +.inula-calendar-content.inula-range-calendar-content + .item-container:not(.week-container, .item-container-disabled):hover + .inula-calendar-content-date-item:not( + .inula-calendar-content-date-item-notThisTitleRange + ) { + color: #fff; + background-color: #1677ff; +} + +/* 通用非标题范围样式 */ +.inula-calendar-content-date-item.inula-calendar-content-date-item-notThisTitleRange { + color: rgba(0, 0, 0, 0.25); +} + +.inula-calendar-content-date-item.inula-calendar-content-date-item-today { + border: 1px solid #1677ff; + box-sizing: border-box; +} + +.inula-calendar-content-date-item.inula-calendar-content-date-item-selected { + color: #fff; + background-color: #1677ff; +} + +/* row只给周选择器用 */ +.inula-calendar-content-week-row-header { + display: grid; + grid-template-columns: repeat(8, 1fr); + border-radius: 6px; +} + +.inula-calendar-content-week-row { + height: 24px; + border-radius: 6px; + + margin: 4px 0; + + line-height: 32px; + text-align: center; + grid-column: 1; + + display: flex; + justify-content: space-around; + align-items: center; +} + +/* hover */ +.inula-calendar-content-week-row:hover { + color: #fff; + background-color: #1677ff; + cursor: pointer; +} + +.inula-calendar-content-week-row:hover .inula-calendar-content-date-item { + color: #fff; +} + +.inula-calendar-content-week-row .inula-calendar-content-date-item:hover { + background-color: #1572f5; +} + +/* 选中 */ +.inula-calendar-content-week-row.inula-calendar-content-week-row-selected { + color: #fff; + background-color: #1677ff; +} + +.inula-calendar-content-week-row.inula-calendar-content-week-row-selected + .inula-calendar-content-date-item { + color: #fff; +} + +/* 月选择器 */ +.item-container.month-container { + height: 24px; + width: 88px; + + margin: 18px 0; +} + +.item-container.month-container::before { + height: 18px; + top: -18px; +} + +.item-container.month-container::after { + height: 18px; + bottom: -18px; +} + +.item-container.month-container .inula-calendar-content-date-item { + height: 24px; + width: 64px; + border-radius: 6px; + + margin: 18px 12px; + + line-height: 24px; + text-align: center; +} + +/* hover */ +.inula-calendar-content-month-item:hover { + background-color: #f5f5f5; + cursor: pointer; +} + +/* 选中 */ +.inula-calendar-content-month-item.inula-calendar-content-month-item-selected { + color: #fff; + background-color: #1677ff; +} + +/* 季度选择器 */ +.item-container.quarter-container { + height: 24px; + width: 68px; + + margin: 10px 0; +} + +.item-container.quarter-container::before { + height: 24px; + top: -24px; +} + +.item-container.quarter-container::after { + height: 24px; + bottom: -24px; +} + +.item-container.quarter-container .inula-calendar-content-date-item { + height: 24px; + width: 56px; + border-radius: 6px; + + margin: 10px 6px; + + line-height: 24px; + text-align: center; +} + +/* hover */ +.inula-calendar-content-quarter-item:hover { + background-color: #f5f5f5; + cursor: pointer; +} + +/* 选中 */ +.inula-calendar-content-quarter-item.inula-calendar-content-quarter-item-selected { + color: #fff; + background-color: #1677ff; +} + +/* 年选择器 */ +.item-container.year-container { + height: 24px; + width: 88px; + + margin: 18px 0; +} + +.item-container.year-container::before { + height: 18px; + top: -18px; +} + +.item-container.year-container::after { + height: 18px; + bottom: -18px; +} + +.item-container.year-container .inula-calendar-content-date-item { + height: 24px; + width: 64px; +} + +/* rangepicker在范围内item样式 */ +.item-container.item-container-in-range { + background-color: #e6f4ff; +} + +/* 非title范围 */ +.inula-calendar-content-year-item.inula-calendar-content-year-item-notthispage { + color: rgba(0, 0, 0, 0.25); +} + +/* 日历底部样式 */ +.inula-calendar-footer { + width: calc(100% - 8px); + height: 40px; + border-top: 1px solid rgba(0, 0, 0, 0.08); + + padding: 4px; + + display: flex; + align-items: center; +} + +.inula-calendar-footer-today { + font-size: 14px; + color: #1677ff; +} + +.inula-calendar-footer-today:hover { + color: #69b1ff; + cursor: pointer; +} diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/index.jsx b/packages/inula2-ui2/library_code/src/components/datepicker2/index.jsx new file mode 100644 index 00000000..1daffe52 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/index.jsx @@ -0,0 +1,1891 @@ +import { didMount, watch, createContext, useContext } from "@openinula/next"; +import "./index.css"; +import Icon from "../icon"; +import Button from "../button"; +import { + calculateDaysInYearMonth, + calculateFirstWeekDayInYearMonth, + calculateCurWeek, + calculateRenderDateItems, + calculateRenderYQMItems, + calculateRenderWeekItems, + calculateNextRange, + getTodayDate, + formatDate, + formatDateToObject, + formatDateToYearMonth, + compareDate, + isEqualedDate, + isInRangeDate, +} from "./utils"; + +const ValueContext = createContext({ + confirmValue: "", + selectValue: "", +}); + +const RangeValueContext = createContext({ + startConfirmValue: "", + endConfirmValue: "", + startSelectValue: "", + endSelectValue: "", + rangeHoverValue: "", + rangeDefaultValue: "", + focusState: "00", +}); + +const DatePicker = ({ + allowClear, //自定义清除按钮 + autoFocus = false, //自动获取焦点 + cellRender, //自定义单元格内容 + components, //自定义面板 + defaultOpen, //是否默认展开控制弹层 + disabled = false, //禁用 + disabledDate, //不可选择的日期 + format, //设置日期格式 + order = true, //多选、范围事是否自动排序 + preserveInvalidOnBlur = false, //失去焦点是否要清空输入框内无效内容 + getPopupContainer, //自定义浮层的容器,默认为body上新建div + inputReadOnly = false, //设置输入框只读 + minDate, //最小日期 + maxDate, //最大日期 + needConfirm, //是否需要确认按钮 + open, //控制弹层是否展开 + // panekRender, //自定义渲染面板 + picker = "date", //设置选择器类型, date | week | month | quarter | year + placeholder, //输入框提示文字 + placement, //选择器弹出的位置bottomLeft | bottomRight | toLeft | toRight + prefix, //自定义前缀 + prevIcon, //自定义上一个图标-月 + nextIcon, //自定义下一个图标-月 + suffixIcon, //自定义后缀 + superNextIcon, //自定义下一个图标-年 + superPrevIcon, //自定义上一个图标-年 + size = "middle", //input大小,large高40px,small24px,default32px + variant = "outlined", // outlined | borderless | filled | underlined + status, //设置校验状态 + onOpenChange, + onPanleChange, + className, //自定义类名 + style, +}) => { + let selectValue = ""; + let confirmValue = ""; + let isOpen = initialOpen; + let isClearIcon = false; + let curYear; + let curMonth; + let hoverValue; + let inputRef; + + watch(() => { + if (defaultPickerValue || defaultValue) { + const parsedYearMonth = formatDateToYearMonth( + defaultPickerValue || defaultValue, + "", + picker + ); + curYear = parsedYearMonth?.year || new Date().getFullYear(); + curMonth = parsedYearMonth?.month || new Date().getMonth() + 1; + if (defaultValue) confirmValue = defaultValue; + } else { + curYear = new Date().getFullYear(); + curMonth = new Date().getMonth() + 1; + } + }); + + watch(() => { + if (open !== undefined) { + isOpen = open; + } + }); + + const initialPlaceholder = () => { + if (placeholder) return placeholder; + switch (picker) { + case "date": + return "请选择日期"; + case "week": + return "请选择周"; + case "month": + return "请选择月份"; + case "quarter": + return "请选择季度"; + case "year": + return "请选择年份"; + default: + return "请选择日期"; + } + }; + + //选择某个日期 + const handleSelect = (type, item) => { + console.log(type, item); + switch (type) { + case "date": { + selectValue = `${item.year}-${item.month}-${item.day}`; + if (item.year !== curYear) curYear = item.year; + if (item.month !== curMonth) curMonth = item.month; + break; + } + case "week": { + selectValue = `${curYear}-${item.week}周`; + if (item.year !== curYear) curYear = item.year; + if (item.month !== curMonth) curMonth = item.month; + break; + } + case "month": { + selectValue = `${curYear}-${item.month}`; + break; + } + case "quarter": { + selectValue = `${curYear}-Q${item.quarter}`; + break; + } + case "year": { + selectValue = `${item.year}`; + if (item.year !== curYear) curYear = item.year; + break; + } + default: { + break; + } + } + if (!needConfirm) { + hoverValue = ""; + confirmValue = formatDate(selectValue, defaultValue, format, picker); + if (onChange) onChange(selectValue); + if (!defaultPickerValue) { + if (item.year !== curYear || (item.month && item.month !== curMonth)) { + if (onPanleChange) onPanleChange({ curYear, curMonth }, picker); + } + if (item.year && item.year !== curYear) curYear = item.year; + if (item.month && type !== "month" && item.month !== curMonth) + curMonth = item.month; + } else { + if (onPanleChange) onPanleChange(selectValue, picker); + curYear = formatDateToYearMonth(defaultPickerValue, "", picker)?.year; + curMonth = formatDateToYearMonth(defaultPickerValue, "", picker)?.month; + } + handleChangeOpen("close"); + } + }; + + const mouseEnterItem = (type, item) => { + let tempValue; + switch (type) { + case "date": { + tempValue = `${item.year}-${item.month}-${item.day}`; + break; + } + case "week": { + tempValue = `${item.year}-${item.week}周`; + break; + } + case "month": { + tempValue = `${item.year}-${item.month}`; + break; + } + case "quarter": { + tempValue = `${item.year}-Q${item.quarter}`; + break; + } + case "year": { + tempValue = `${item.year}`; + break; + } + default: { + handleChangeOpen("close"); + break; + } + } + hoverValue = formatDate(tempValue, defaultValue, format, picker); + }; + + const mouseLeaveItem = () => { + hoverValue = ""; + }; + + const handleConfirm = () => { + confirmValue = selectValue; + isOpen = false; + }; + + //targer: year | month, action: add minus + const handleChangeTitle = (target, action) => { + if (target === "year") { + curYear = action === "add" ? curYear + 1 : curYear - 1; + } else { + if (action === "add") { + if (curMonth === 12) { + curMonth = 1; + curYear += 1; + } else curMonth += 1; + } else { + if (curMonth === 1) { + curMonth = 12; + curYear -= 1; + } else curMonth -= 1; + } + } + }; + + const handleClear = (e) => { + e.stopPropagation(); + if (isClearIcon) { + selectValue = ""; + confirmValue = ""; + isClearIcon = false; + } + }; + + const handleOnBlur = () => { + if (onBlur) { + onBlur(); + } + if (defaultPickerValue) { + curYear = formatDateToYearMonth(defaultPickerValue, "", picker)?.year; + curMonth = formatDateToYearMonth(defaultPickerValue, "", picker)?.month; + } + handleChangeOpen("close"); + }; + + const handleOnFocus = () => { + if (onFocus) onFocus(); + handleChangeOpen("open"); + }; + + const handleChangeOpen = (action) => { + if (action === "open") { + if (onOpenChange && isOpen === false) onOpenChange(isOpen); + else isOpen = true; + } else if (action === "close") { + if (selectValue) selectValue = ""; + inputRef.blur(); + if (onOpenChange && isOpen === true) onOpenChange(isOpen); + else isOpen = false; + } + }; + + const inputContainerClassNames = [ + "inula-datepicker-input-container", + size === "large" && "inula-datepicker-input-container-large", + size === "small" && "inula-datepicker-input-container-small", + disabled && "inula-datepicker-input-container-disabled", + variant === "filled" && "inula-datepicker-input-container-filled", + variant === "outlined" && "inula-datepicker-input-container-outlined", + variant === "borderless" && "inula-datepicker-input-container-borderless", + variant === "underline" && "inula-datepicker-input-container-underline", + status === "error" && "inula-datepicker-input-container-error", + status === "warning" && "inula-datepicker-input-container-warning", + className, + ] + .filter(Boolean) + .join(" "); + + const inputClassNames = [ + "inula-datepicker-input", + size === "large" && "inula-datepicker-input-large", + size === "small" && "inula-datepicker-input-small", + disabled && "inula-datepicker-input-disabled", + variant === "filled" && "inula-datepicker-input-filled", + variant === "outlined" && "inula-datepicker-input-outlined", + variant === "borderless" && "inula-datepicker-input-borderless", + variant === "underline" && "inula-datepicker-input-underline", + status === "error" && "inula-datepicker-input-error", + status === "warning" && "inula-datepicker-input-warning", + className, + ] + .filter(Boolean) + .join(" "); + + return ( +
+
{ + if (disabled) return; + handleChangeOpen("open"); + if (inputRef) inputRef.focus(); + }} + > + +
{prefix}
+
+ (isOpen = true)} + onBlur={() => (isOpen = false)} + > +
confirmValue && (isClearIcon = true)} + onMouseLeave={() => (isClearIcon = false)} + onMouseDown={(e) => e.preventDefault()} + onClick={(e) => { + e.stopPropagation(); + handleClear(e); + }} + > + + + + +
+ +
+
+
+
+ + + +
+ ); +}; + +const RangePicker = ({ + allowClear, //自定义清除按钮 + showNow = true, //是否展示“今天”按钮 + autoFocus = false, //自动获取焦点 + inputReadOnly = false, //设置输入框只读 + defaultOpen = false, //是否默认展开控制弹层 + disabled = false, //禁用 + disabledDate, //不可选择的日期 + format, //设置日期格式 + onChange, //时间变化回调 + onOk, //点击确定回调 + open, //控制弹层是否展开 + initialOpen = open !== undefined ? open : defaultOpen || false, + order = true, + defaultPickerValue, //默认面板日期,每次打开面板会被重置到该日期,格式为YYYY-MM-DD + defaultValue = ["", ""], //默认值,与format对应,如果开始或结束时间为null或undefined,日期范围将是一个开区间 + minDate, //最小日期 + maxDate, //最大日期 + needConfirm, //是否需要确认按钮 // panekRender, //自定义渲染面板 + picker = "date", //设置选择器类型, date | week | month | quarter | year + placeholder, //输入框提示文字 + placement = "bottomLeft", //选择器弹出的位置bottomLeft | bottomRight | toLeft | toRight + prefix, //自定义前缀 + prevIcon, //自定义上一个图标-月 + nextIcon, //自定义下一个图标-月 + suffixIcon, //自定义后缀 + superNextIcon, //自定义下一个图标-年 + superPrevIcon, //自定义上一个图标-年 + size = "middle", //input大小,large高40px,small24px,default32px + variant = "outlined", // outlined | borderless | filled | underlined + status, //设置校验状态 + onOpenChange, + onPanleChange, + onBlur, + onFocus, + className, //自定义类名 + style, +}) => { + let hoverValue; + let startConfirmValue = ""; + let endConfirmValue = ""; + let focusState = "00"; + let isOpen = initialOpen; + let startSelectValue = ""; + let endSelectValue = ""; + let isClearIcon = false; + let curYear; + let curMonth; + let startInputRef; + let endInputRef; + + didMount(() => { + if (defaultValue) { + const parsedYearMonth = formatDateToYearMonth( + defaultValue[0], + "", + picker + ); + curYear = parsedYearMonth?.year || new Date().getFullYear(); + curMonth = parsedYearMonth?.month || new Date().getMonth() + 1; + if (defaultValue[0] && defaultValue[1]) { + startConfirmValue = compareDate( + defaultValue[0], + defaultValue[1], + picker + ) + ? defaultValue[0] + : defaultValue[1]; + endConfirmValue = compareDate(defaultValue[0], defaultValue[1], picker) + ? defaultValue[1] + : defaultValue[0]; + } + } else { + curYear = new Date().getFullYear(); + curMonth = new Date().getMonth() + 1; + } + }); + + watch(() => { + if (open !== undefined) { + isOpen = open; + } + }); + + const initialPlaceholder = (inputType) => { + if (placeholder) { + if (String.prototype.toString.call(inputType).slice(8, -1) !== "Array") { + return placeholder; + } else { + if (inputType === "start") { + return placeholder[0]; + } else { + return placeholder[1]; + } + } + } + + switch (picker) { + case "date": + return "请选择日期"; + case "week": + return "请选择周"; + case "month": + return "请选择月份"; + case "quarter": + return "请选择季度"; + case "year": + return "请选择年份"; + default: + return "请选择日期"; + } + }; //选择某个日期 + + const handleSelect = (type, item) => { + switch (type) { + case "date": { + if (focusState === "10") + startSelectValue = `${item.year}-${item.month}-${item.day}`; + else if (focusState === "01") + endSelectValue = `${item.year}-${item.month}-${item.day}`; + break; + } + case "week": { + if (focusState === "10") + startSelectValue = `${item.year}-${item.week}周`; + else if (focusState === "01") + endSelectValue = `${item.year}-${item.week}周`; + break; + } + case "month": { + if (focusState === "10") + startSelectValue = `${item.year}-${item.month}`; + else if (focusState === "01") + endSelectValue = `${item.year}-${item.month}`; + break; + } + case "quarter": { + if (focusState === "10") + startSelectValue = `${item.year}-Q${item.quarter}`; + else if (focusState === "01") + endSelectValue = `${item.year}-Q${item.quarter}`; + break; + } + case "year": { + if (focusState === "10") startSelectValue = `${item.year}`; + else if (focusState === "01") endSelectValue = `${item.year}`; + break; + } + default: { + handleChangeOpen("close"); + break; + } + } + + if (!needConfirm) { + hoverValue = ""; + + if (focusState === "10") { + startConfirmValue = formatDate( + startSelectValue, + defaultValue[0], + format, + picker + ); + focusState = "01"; + endInputRef.focus(); + } else if (focusState === "01") { + endConfirmValue = formatDate( + endSelectValue, + defaultValue[1], + format, + picker + ); + focusState = "10"; + startInputRef.focus(); + } + + if (!defaultPickerValue) { + switch (type) { + case "date": + case "week": { + if (curYear < item.year) { + curYear = item.year; + curMonth = 1; + } else if (curYear > item.year) { + curYear = item.year; + curMonth = 12; + } else { + if (item.month > curMonth + 1 || item.month < curMonth) { + curMonth = item.month; + } + } + break; + } + case "month": + case "quarter": { + if (Math.abs(curYear - item.year) > 1) curYear = item.year; + break; + } + case "year": { + if ( + Math.floor(curYear / 10) * 10 + 20 === item.year || + Math.floor(curYear / 10) * 10 - 1 === item.year + ) + curYear = item.year; + } + } + } else { + if (onPanleChange) + onPanleChange(startSelectValue, endSelectValue, picker); + curYear = formatDateToYearMonth(defaultPickerValue, "", picker)?.year; + curMonth = formatDateToYearMonth(defaultPickerValue, "", picker)?.month; + } + + if (onChange) onChange(startSelectValue, endSelectValue); + if (startConfirmValue && endConfirmValue) handleChangeOpen("close", item); + } + }; + + const mouseEnterItem = (type, item) => { + let tempValue; + + switch (type) { + case "date": { + tempValue = `${item.year}-${item.month}-${item.day}`; + break; + } + case "week": { + tempValue = `${item.year}-${item.week}周`; + break; + } + case "month": { + tempValue = `${item.year}-${item.month}`; + break; + } + case "quarter": { + tempValue = `${item.year}-Q${item.quarter}`; + break; + } + case "year": { + tempValue = `${item.year}`; + break; + } + + default: { + handleChangeOpen("close"); + break; + } + } + + hoverValue = formatDate(tempValue, defaultValue[0], format, picker); + }; + + const mouseLeaveItem = () => { + hoverValue = ""; + }; + + const handleConfirm = () => { + hoverValue = ""; + let item; + + if (focusState === "10") { + if (!startSelectValue) return; + startConfirmValue = formatDate( + startSelectValue, + defaultValue[0], + format, + picker + ); + item = formatDateToObject(startSelectValue, "", picker); + focusState = "01"; + endInputRef.focus(); + } else if (focusState === "01") { + if (!endSelectValue) return; + endConfirmValue = formatDate( + endSelectValue, + defaultValue[1], + format, + picker + ); + item = formatDateToObject(endSelectValue, "", picker); + focusState = "10"; + startInputRef.focus(); + } + + if (!defaultPickerValue) { + switch (picker) { + case "date": + case "week": { + if (curYear < item.year) { + curYear = item.year; + curMonth = 1; + } else if (curYear > item.year) { + curYear = item.year; + curMonth = 12; + } else { + if (item.month > curMonth + 1 || item.month < curMonth) { + curMonth = item.month; + } + } + break; + } + case "month": + case "quarter": { + if (Math.abs(curYear - item.year) > 1) curYear = item.year; + break; + } + case "year": { + if ( + Math.floor(curYear / 10) * 10 + 20 === item.year || + Math.floor(curYear / 10) * 10 - 1 === item.year + ) + curYear = item.year; + } + } + } else { + if (onPanleChange) + onPanleChange(startSelectValue, endSelectValue, picker); + curYear = formatDateToYearMonth(defaultPickerValue, "", picker)?.year; + curMonth = formatDateToYearMonth(defaultPickerValue, "", picker)?.month; + } + + if (onChange) onChange(startSelectValue, endSelectValue); + + if (startConfirmValue && endConfirmValue) handleChangeOpen("close"); + }; + + //target: year | month, action: add minus + const handleChangeTitle = (target, action, type = "date") => { + if (onPanleChange) + onPanleChange({ curYear, curMonth }, endSelectValue, picker); + + if (target === "year") { + if (type === "year") + curYear = action === "add" ? curYear + 10 : curYear - 10; + else curYear = action === "add" ? curYear + 1 : curYear - 1; + } else { + if (action === "add") { + if (curMonth === 12) { + curMonth = 1; + curYear += 1; + } else curMonth += 1; + } else { + if (curMonth === 1) { + curMonth = 12; + curYear -= 1; + } else curMonth -= 1; + } + } + }; + + const handleClear = (e) => { + e.stopPropagation(); + if (isClearIcon) { + startSelectValue = ""; + endSelectValue = ""; + startConfirmValue = ""; + endConfirmValue = ""; + isClearIcon = false; + } + }; + + const handleOnBlur = (curRef) => { + if (onBlur) { + onBlur(); + } + + if (defaultPickerValue) { + curYear = formatDateToYearMonth(defaultPickerValue, "", picker)?.year; + curMonth = formatDateToYearMonth(defaultPickerValue, "", picker)?.month; + } + + if (curRef === "start" && focusState === "10") { + focusState = "00"; + handleChangeOpen("close"); + } else if (curRef === "end" && focusState === "01") { + focusState = "00"; + handleChangeOpen("close"); + } + }; + + const handleOnFocus = (curRef) => { + if (onFocus) onFocus(); + handleChangeOpen("open"); + + if (curRef === "start") { + focusState = "10"; + } else { + focusState = "01"; + } + }; + + const handleOnClickContainer = () => { + if (disabled) return; + handleChangeOpen("open"); + + if (focusState === "00") { + startInputRef.focus(); + } + }; + + const handleChangeOpen = (action) => { + if (action === "open") { + if (onOpenChange && isOpen === false) onOpenChange(isOpen); + else isOpen = true; + } else if (action === "close") { + startSelectValue = ""; + endSelectValue = ""; + if (startConfirmValue && endConfirmValue && order) { + if (!compareDate(startConfirmValue, endConfirmValue, picker)) { + const temp = startConfirmValue; + startConfirmValue = endConfirmValue; + endConfirmValue = temp; + } + } + startInputRef.blur(); + endInputRef.blur(); + if (onOpenChange && isOpen === true) onOpenChange(isOpen); + else isOpen = false; + } + }; + + const inputContainerClassNames = [ + "inula-datepicker-input-container", + "range-container", + size === "large" && "inula-datepicker-input-container-large", + size === "small" && "inula-datepicker-input-container-small", + disabled && "inula-datepicker-input-container-disabled", + variant === "filled" && "inula-datepicker-input-container-filled", + variant === "outlined" && "inula-datepicker-input-container-outlined", + variant === "borderless" && "inula-datepicker-input-container-borderless", + variant === "underline" && "inula-datepicker-input-container-underline", + status === "error" && "inula-datepicker-input-container-error", + status === "warning" && "inula-datepicker-input-container-warning", + className, + ] + .filter(Boolean) + .join(" "); + + const startInputClassNames = [ + "inula-datepicker-input", + "range-input", + size === "large" && "inula-datepicker-input-large", + size === "small" && "inula-datepicker-input-small", + focusState === "10" && hoverValue && "inula-datepicker-input-hover-value", + ] + .filter(Boolean) + .join(" "); + + const endInputClassNames = [ + "inula-datepicker-input", + "range-input", + size === "large" && "inula-datepicker-input-large", + size === "small" && "inula-datepicker-input-small", + focusState === "01" && hoverValue && "inula-datepicker-input-hover-value", + ] + .filter(Boolean) + .join(" "); + + const inputIconClassNames = [ + "inula-datepicker-input-icon", + disabled && "icon-disabled", + ] + .filter(Boolean) + .join(" "); + + return ( +
+
handleOnClickContainer()} + > + +
{prefix}
+
+ {/* start */} + e.stopPropagation()} + onBlur={() => handleOnBlur("start")} + onFocus={() => handleOnFocus("start")} + > + + + {/* end */} + e.stopPropagation()} + onBlur={() => handleOnBlur("end")} + onFocus={() => handleOnFocus("end")} + > + +
{ + if (startConfirmValue || endConfirmValue) isClearIcon = true; + }} + onMouseLeave={() => (isClearIcon = false)} + onMouseDown={(e) => e.preventDefault()} + onClick={(e) => { + e.stopPropagation(); + handleClear(e); + }} + > +
{ + if (startConfirmValue || endConfirmValue) isClearIcon = true; + }} + onMouseLeave={() => (isClearIcon = false)} + onMouseDown={(e) => e.preventDefault()} + onClick={() => handleClear()} + >
+ + + {suffixIcon ? ( + suffixIcon + ) : ( + + )} + + + {allowClear ? ( + allowClear + ) : ( +
+ +
+ )} +
+
+
+ + + +
+ ); +}; + +const Calendar = ({ + type = "date", + mode = "date", + size = "default", + curYear = new Date().getFullYear(), + curMonth = new Date().getMonth() + 1, + curDay = new Date().getDate(), + isOpen = false, + placement, + defaultValue, + disabledDate, + minDate, + maxDate, + needConfirm, + handleConfirm, + prevIcon, + nextIcon, + superPrevIcon, + superNextIcon, +}) => { + const { selectValue, confirmValue } = useContext(ValueContext); + const { rangeDefaultValue } = useContext(RangeValueContext); + + const today = `${new Date().getFullYear()}-${ + new Date().getMonth() + 1 + }-${new Date().getDate()}`; + + const calendarClassNames = ["inula-calendar", !isOpen && "closed"] + .filter(Boolean) + .join(" "); + + //通过minDate、maxDate、disabledDate判断元素是否为禁用 + const isDisabled = (item) => { + if (!minDate && !maxDate && !disabledDate) return false; + const miniDate = formatDateToObject(minDate, "", type); + const maxiDate = formatDateToObject(maxDate, "", type); + const disabledDates = disabledDate + ? disabledDate.map((date) => formatDateToObject(date, "", type)) + : null; + switch (type) { + case "date": { + if (miniDate) { + if (item.year < miniDate.year) return true; + else if (item.year === miniDate.year && item.month < miniDate.month) + return true; + else if ( + item.year === miniDate.year && + item.month === miniDate.month && + item.day <= miniDate.day + ) + return true; + } + + if (maxiDate) { + if (item.year > maxiDate.year) return true; + else if (item.year === maxiDate.year && item.month > maxiDate.month) + return true; + else if ( + item.year === maxiDate.year && + item.month === maxiDate.month && + item.day >= maxiDate.day + ) + return true; + } + + if (disabledDates) + for (const date of disabledDates) + if ( + date.year === item.year && + date.month === item.month && + date.day === item.day + ) + return true; + break; + } + + case "week": { + if (miniDate) { + if (item.year < miniDate.year) return true; + else if (item.year === miniDate.year && item.week <= miniDate.week) + return true; + } + + if (maxiDate) { + if (item.year > maxiDate.year) return true; + else if (item.year === maxiDate.year && item.week >= maxiDate.week) + return true; + } + + if (disabledDates) + for (const date of disabledDates) + if (date.year === item.year && date.week === item.week) return true; + break; + } + + case "month": { + if (miniDate) { + if (item.year < miniDate.year) return true; + else if (item.year === miniDate.year && item.month <= miniDate.month) + return true; + } + + if (maxiDate) { + if (item.year > maxiDate.year) return true; + else if (item.year === maxiDate.year && item.month >= maxiDate.month) + return true; + } + + if (disabledDates) + for (const date of disabledDates) + if (date.year === item.year && date.month === item.month) + return true; + break; + } + + case "quarter": { + if (miniDate) { + if (item.year < miniDate.year) return true; + else if ( + item.year === miniDate.year && + item.quarter <= miniDate.quarter + ) + return true; + } + + if (maxiDate) { + if (item.year > maxiDate.year) return true; + else if ( + item.year === maxiDate.year && + item.quarter >= maxiDate.quarter + ) + return true; + } + + if (disabledDates) + for (const date of disabledDates) + if (date.year === item.year && date.quarter === item.quarter) + return true; + break; + } + + case "year": { + if (miniDate && item.year <= miniDate.year) return true; + if (maxiDate && item.year >= maxiDate.year) return true; + + if (disabledDates) + for (const date of disabledDates) + if (date.year === item.year) return true; + break; + } + } + + return false; + }; + + const getGridColumns = () => { + switch (type) { + case "date": + return 7; + case "week": + return 1; + case "month": + return 3; + case "quarter": + return 4; + case "year": + return 3; + default: + return 7; + } + }; + + //日历头部 + const CalendarHeader = () => { + return ( +
+
+ {superPrevIcon ? ( + superPrevIcon + ) : ( + handleChangeTitle("year", "minus")} + /> + )} + {type === "date" || + (type === "week" && + (prevIcon ? ( + prevIcon + ) : ( + handleChangeTitle("month", "minus")} + /> + )))} +
+ +
+ + + {`${curYear}年 ${curMonth}月`} + + + {`${curYear}年`} + + {`${Math.floor(curYear / 10) * 10}年-${ + Math.floor(curYear / 10) * 10 + 9 + }年`} + + + + + {`${calculateNextRange(curYear, curMonth, type).nextYear}年 ${ + calculateNextRange(curYear, curMonth, type).nextMonth + }月`} + + + {`${calculateNextRange(curYear, curMonth, type).nextYear}年`} + + {`${ + Math.floor( + calculateNextRange(curYear, curMonth, type).nextYear / 10 + ) * 10 + }年-${ + Math.floor( + calculateNextRange(curYear, curMonth, type).nextYear / 10 + ) * + 10 + + 9 + }年`} + +
+ +
+ {type === "date" || + (type === "week" && + (nextIcon ? ( + nextIcon + ) : ( + handleChangeTitle("month", "add")} + /> + )))} + {superNextIcon ? ( + superNextIcon + ) : ( + handleChangeTitle("year", "add")} + /> + )} +
+
+ ); + }; + + //日历内容 + const CalendarContent = () => { + return ( +
+ + + {(item) => ( +
+ {item} +
+ )} +
+ + {(item, index) => ( + + )} + +
+ +
+ + {(item) => ( +
+ {item} +
+ )} +
+
+ + {(row, index) => ( +
handleClick(e, "week", row[0])} + onMouseEnter={() => handleMounseEnter("week", row[0])} + onMouseLeave={() => handleMounseLeave(row[0])} + > + + {(item, index) => ( + + )} + +
+ )} +
+
+ + + {(item, index) => ( + + )} + + + + + {(item, index) => ( + + )} + + + + + {(item, index) => ( + + )} + + +
+ ); + }; + + const CalendarRangeContent = () => { + return ( +
+
+ + + {(item) => ( +
+ {item} +
+ )} +
+ + {(item, index) => ( + + )} + +
+ +
+ + {(item) => ( +
+ {item} +
+ )} +
+
+ + {(row, index) => ( +
+ !isDisabled(row[0]) && onSelect && onSelect("week", row[0]) + } + onMouseEnter={() => + !isDisabled(row[0]) && mouseEnterItem("week", row[0]) + } + onMouseLeave={() => !isDisabled(row[0]) && mouseLeaveItem()} + > + + {(item, index) => ( + + )} + +
+ )} +
+
+ + + {(item, index) => ( + + )} + + + + + {(item, index) => ( + + )} + + + + + {(item, index) => ( + + )} + + +
+
+ + + {(item) => ( +
+ {item} +
+ )} +
+ + {(item, index) => ( + + )} + +
+ +
+ + {(item) => ( +
+ {item} +
+ )} +
+
+ + {(row, index) => ( +
+ !isDisabled(row[0]) && onSelect && onSelect("week", row[0]) + } + onMouseEnter={() => + !isDisabled(row[0]) && mouseEnterItem("week", row[0]) + } + onMouseLeave={() => !isDisabled(row[0]) && mouseLeaveItem()} + > + + {(item, index) => ( + + )} + +
+ )} +
+
+ + + {(item, index) => ( + + )} + + + + + {(item, index) => ( + + )} + + + + + {(item, index) => ( + + )} + + +
+
+ ); + }; + + //日历底部 + const CalendarFooter = () => { + const justifyContent = () => { + if (type === "date" && needConfirm) return "space-between"; + if (type === "date" && !needConfirm) return "center"; + if (type !== "date" && needConfirm) return "flex-end"; + return "center"; + }; + + return ( +
+ +
onSelect && onSelect("date", getTodayDate())} + > + 今天 +
+
+ + + +
+ ); + }; + + return ( +
e.preventDefault()}> + + + + + + + + + + + +
+ ); +}; + +const CalendarContentItem = ({ + type = "date", //日历类型 + mode = "date", + item, //item日期信息{year, quarter, month, week, day, isThisTitleRange} + defaultValue, //默认日期 + disabled, //是否禁用 + onClick, + onMouseEnter, + onMouseLeave, + className, +}) => { + const { confirmValue, selectValue } = useContext(ValueContext); + const { + startConfirmValue, + endConfirmValue, + startSelectValue, + endSelectValue, + focusState, + rangeHoverValue, + } = useContext(RangeValueContext); + + const today = `${new Date().getFullYear()}-${ + new Date().getMonth() + 1 + }-${new Date().getDate()}`; + + const isTody = + (type === "date" || "week") && + today === `${item.year}-${item.month}-${item.day}`; + + const defaultString = (item) => { + switch (type) { + case "date": + return `${item.year}-${item.month}-${item.day}`; + case "week": + return `${item.year}-${item.week}周`; + case "month": + return `${item.year}-${item.month}`; + case "quarter": + return `${item.year}-Q${item.quarter}`; + case "year": + return `${item.year}`; + } + }; + + const itemContainerClassNames = [ + "item-container", + disabled && "item-container-disabled", + isInRangeDate( + focusState, + rangeHoverValue, + startConfirmValue, + endConfirmValue, + startSelectValue, + endSelectValue, + item, + type + ) && "item-container-in-range", + className, + ] + .filter(Boolean) + .join(" "); + + const itemClassNames = [ + "inula-calendar-content-date-item", + !item.isThisTitleRange && + "inula-calendar-content-date-item-notThisTitleRange", + isTody && "inula-calendar-content-date-item-today", + type !== "week" && + item.isThisTitleRange && + mode === "date" && + (selectValue + ? selectValue === defaultString(item) + : confirmValue + ? isEqualedDate(confirmValue, item, type) + : isEqualedDate(defaultValue, item, type)) && + "inula-calendar-content-date-item-selected", + type !== "week" && + item.isThisTitleRange && + mode === "range" && + !(focusState === "10" && rangeHoverValue) && + (startSelectValue + ? startSelectValue === defaultString(item) + : startConfirmValue + ? isEqualedDate(startConfirmValue, item, type) + : isEqualedDate(defaultValue, item, type)) && + "inula-calendar-content-date-item-selected", + type !== "week" && + item.isThisTitleRange && + mode === "range" && + !(focusState === "01" && rangeHoverValue) && + (endSelectValue + ? endSelectValue === defaultString(item) + : endConfirmValue + ? isEqualedDate(endConfirmValue, item, type) + : isEqualedDate(defaultValue, item, type)) && + "inula-calendar-content-date-item-selected", + type !== "week" && + item.isThisTitleRange && + mode === "range" && + rangeHoverValue && + isEqualedDate(rangeHoverValue, item, type) && + "inula-calendar-content-date-item-selected", + disabled && "inula-calendar-content-date-item-disabled", + ] + .filter(Boolean) + .join(" "); + + return ( +
onMouseEnter && onMouseEnter(type, item)} + onMouseLeave={() => onMouseLeave && onMouseLeave(item)} + > +
onClick(e, type, item)}> + {item.day} + {item.day || item.week} + {`${item.month}月`} + {`Q${item.quarter}`} + {item.year} +
+
+ ); +}; + +export { DatePicker, RangePicker }; diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/utils/calculateFunc.js b/packages/inula2-ui2/library_code/src/components/datepicker2/utils/calculateFunc.js new file mode 100644 index 00000000..d2bb78af --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/utils/calculateFunc.js @@ -0,0 +1,471 @@ +import { formatDateToObject } from "./formatFunc"; +//计算给定年月有多少天 +export function calculateDaysInYearMonth(year, month) { + return new Date(year, month, 0).getDate(); +} + +//计算当年当月的下一个区间 +export function calculateNextRange(year, month, type) { + switch (type) { + case "date": + case "week": { + const nextYear = month === 12 ? year + 1 : year; + const nextMonth = month === 12 ? 1 : month + 1; + return { nextYear, nextMonth }; + } + case "month": + case "quarter": { + const nextYear = year + 1; + const nextMonth = month; + return { nextYear, nextMonth }; + } + case "year": { + const nextYear = year + 10; + const nextMonth = month; + return { nextYear, nextMonth }; + } + } +} + +//计算给定年月的当月第一天是星期几 +export function calculateFirstWeekDayInYearMonth(year, month) { + return ((new Date(year, month - 1, 1).getDay() + 6) % 7) + 1; +} + +//日期选择器,计算当前渲染年月的calendar渲染数组 +export function calculateRenderDateItems(year, month) { + const curMonthDays = calculateDaysInYearMonth(year, month); + const curStartWeek = calculateFirstWeekDayInYearMonth(year, month); + const preMonthDays = calculateDaysInYearMonth( + month === 1 ? year - 1 : year, + month === 1 ? 12 : month - 1 + ); + const preMonth = month === 1 ? 12 : month - 1; + const preYear = month === 1 ? year - 1 : year; + const nextMonth = month === 12 ? 1 : month + 1; + const nextYear = month === 12 ? year + 1 : year; + const items = []; + for (let i = curStartWeek - 1; i >= 1; i--) { + items.push({ + year: preYear, + month: preMonth, + day: preMonthDays - i + 1, + isThisPage: false, + }); + } + + for (let i = 1; i <= curMonthDays; i++) { + items.push({ + year: year, + month: month, + day: i, + isThisPage: true, + }); + } + + for (let i = 1; i <= 42 - (curStartWeek + curMonthDays) + 1; i++) { + items.push({ + year: nextYear, + month: nextMonth, + day: i, + isThisPage: false, + }); + } + + return items; +} + +//周选择器,计算当前的calendar渲染数组 +export function calculateRenderWeekItems(year, month) { + const curMonthDays = calculateDaysInYearMonth(year, month); + const curStartWeek = calculateFirstWeekDayInYearMonth(year, month); + const preMonthDays = calculateDaysInYearMonth( + month === 1 ? year - 1 : year, + month === 1 ? 12 : month - 1 + ); + const preMonth = month === 1 ? 12 : month - 1; + const preYear = month === 1 ? year - 1 : year; + const nextMonth = month === 12 ? 1 : month + 1; + const nextYear = month === 12 ? year + 1 : year; + const items = []; + let weekCount = calculateWeekOfYearForFirstDay(year, month); + let dayCount = 0; + for (let i = curStartWeek - 1; i >= 1; i--) { + if (dayCount % 7 === 0) { + items.push({ + year: preYear, + month: preMonth, + week: weekCount, + day: null, + isThisPage: false, + }); + weekCount++; + } + items.push({ + year: preYear, + month: preMonth, + week: weekCount - 1, + day: preMonthDays - i + 1, + isThisPage: false, + }); + dayCount++; + } + + for (let i = 1; i <= curMonthDays; i++) { + if (dayCount % 7 === 0) { + items.push({ + year: year, + month: month, + week: weekCount, + day: null, + isThisPage: false, + }); + weekCount++; + } + items.push({ + year: year, + month: month, + week: weekCount - 1, + day: i, + isThisPage: true, + }); + dayCount++; + } + + for (let i = 1; i <= 42 - (curStartWeek + curMonthDays) + 1; i++) { + if (dayCount % 7 === 0) { + items.push({ + year: nextYear, + month: nextMonth, + week: weekCount, + day: null, + isThisPage: false, + }); + weekCount++; + } + items.push({ + year: nextYear, + month: nextMonth, + week: weekCount - 1, + day: i, + isThisPage: false, + }); + dayCount++; + } + + const ROW = 6, + COL = 8, + TOTAL = ROW * COL; + while (items.length < TOTAL) items.push({}); + + const matrix = []; + for (let r = 0; r < ROW; r++) { + matrix.push(items.slice(r * COL, (r + 1) * COL)); + } + return matrix; +} + +//年、季度、月选择器,计算当前calendar渲染数组 +export function calculateRenderYQMItems(type, year) { + const items = []; + switch (type) { + case "year": { + const curYearStart = Math.floor(year / 10) * 10; + items.push({ year: curYearStart - 1, isThisPage: false }); + for (let i = curYearStart; i <= curYearStart + 9; i++) { + items.push({ year: i, isThisPage: true }); + } + items.push({ year: curYearStart + 10, isThisPage: false }); + + return items; + } + case "month": { + for (let i = 1; i <= 12; i++) { + items.push({ month: i, isThisPage: true }); + } + return items; + } + case "quarter": { + for (let i = 1; i <= 4; i++) { + items.push({ quarter: i, isThisPage: true }); + } + return items; + } + } +} + +//计算某年某月某日是某年第几周 +export function calculateCurWeek(year, month, day) { + const date = new Date(year, month - 1, day); + + // 设置日期为当前日期的周四(ISO周计算中,周四决定属于哪一周) + const thursday = new Date(date); + thursday.setDate(date.getDate() + 4 - (date.getDay() || 7)); // 周日为0,转为7 + + const yearStart = new Date(thursday.getFullYear(), 0, 1); + + const week = Math.ceil(((thursday - yearStart) / 86400000 + 1) / 7); + + return week; +} + +//根据年、月计算当月第一天是当年第几周 +export function calculateWeekOfYearForFirstDay(year, month) { + // 当月第一天 + const firstDay = new Date(year, month - 1, 1); + + // 复制一份,避免污染原日期 + const target = new Date(firstDay); + const WEEK_START = 1; + + const day = target.getDay(); + const offset = (day + 7 - WEEK_START) % 7; + target.setDate(target.getDate() - offset); + + // 当年 1 月 1 日 + const yearStart = new Date(year, 0, 1); + const yearStartDay = yearStart.getDay(); + const yearStartOffset = (yearStartDay + 7 - WEEK_START) % 7; + + yearStart.setDate(yearStart.getDate() - yearStartOffset); + + const delta = firstDay - yearStart; // 毫秒 + const week = Math.floor(delta / (7 * 24 * 3600 * 1000)) + 1; + + return week; +} + +//计算当前状态的年月日 +export function getTodayDate() { + const date = new Date(); + return { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + }; +} + +//对比函数,targetDate > baseDate ? true : false +export function compareDate(baseDate, targetDate, type) { + if (!baseDate || !targetDate) return false; + let baseDateObj; + let targetDateObj; + if (Object.prototype.toString.call(targetDate).slice(8, -1) === "String") + targetDateObj = formatDateToObject(targetDate, "", type); + else targetDateObj = targetDate; + if (Object.prototype.toString.call(baseDate).slice(8, -1) === "String") + baseDateObj = formatDateToObject(baseDate, "", type); + else baseDateObj = baseDate; + + switch (type) { + case "date": { + if (targetDateObj.year > baseDateObj.year) { + return true; + } else if ( + targetDateObj.year === baseDateObj.year && + targetDateObj.month > baseDateObj.month + ) { + return true; + } else if ( + targetDateObj.year === baseDateObj.year && + targetDateObj.month === baseDateObj.month && + targetDateObj.day >= baseDateObj.day + ) { + return true; + } + break; + } + case "week": { + if (targetDateObj.year > baseDateObj.year) { + return true; + } else if ( + targetDateObj.year === baseDateObj.year && + targetDateObj.week >= baseDateObj.week + ) { + return true; + } + break; + } + case "month": { + if (targetDateObj.year > baseDateObj.year) { + return true; + } else if ( + targetDateObj.year === baseDateObj.year && + targetDateObj.month >= baseDateObj.month + ) { + return true; + } + break; + } + case "quarter": { + if (targetDateObj.year > baseDateObj.year) { + return true; + } else if ( + targetDateObj.year === baseDateObj.year && + targetDateObj.quarter >= baseDateObj.quarter + ) { + return true; + } + break; + } + case "year": { + return targetDateObj.year >= baseDateObj.year; + } + } + + return false; +} + +export function isEqualedDate(stringBaseDate, objTargetDate, type) { + if (!stringBaseDate) return false; + const objBaseDate = formatDateToObject(stringBaseDate, "", type); + if (type === "week") console.log(111); + switch (type) { + case "date": { + return ( + objBaseDate.year === objTargetDate.year && + objBaseDate.month === objTargetDate.month && + objBaseDate.day === objTargetDate.day + ); + } + case "week": { + console.log( + stringBaseDate, + objTargetDate, + objBaseDate.year === objTargetDate.year && + objBaseDate.week === objTargetDate.week + ); + return ( + objBaseDate.year === objTargetDate.year && + objBaseDate.week === objTargetDate.week + ); + } + case "month": { + return ( + objBaseDate.year === objTargetDate.year && + objBaseDate.month === objTargetDate.month + ); + } + case "quarter": { + return ( + objBaseDate.year === objTargetDate.year && + objBaseDate.quarter === objTargetDate.quarter + ); + } + case "year": { + return objBaseDate.year === objTargetDate.year; + } + } + return false; +} + +const defaultString = (item, type) => { + switch (type) { + case "date": + return `${item.year}-${item.month}-${item.day}`; + case "week": + return `${item.year}-${item.week}周`; + case "month": + return `${item.year}-${item.month}`; + case "quarter": + return `${item.year}-Q${item.quarter}`; + case "year": + return `${item.year}`; + } +}; + +export function isSelected( + selectValue, + confirmValue, + startConfirmValue, + endConfirmValue, + defaultValue, + hoverValue, + focusState, + item, + type +) { + if (type === "week" || item.isThisTitleRange) return false; + + if (selectValue) { + return selectValue === defaultString(item, type); + } else { + if (confirmValue) { + return isEqualedDate(confirmValue, item, type); + } + if (startConfirmValue) { + if (focusState === "10" && hoverValue) return false; + return isEqualedDate(startConfirmValue, item, type); + } + if (endConfirmValue) { + if (focusState === "01" && hoverValue) return false; + return isEqualedDate(endConfirmValue, item, type); + } + if (defaultValue) { + return isEqualedDate(defaultValue, item, type); + } + } +} + +// range样式计算函数 +export function isInRangeDate( + focusState, + rangeHoverValue, + startConfirmValue, + endConfirmValue, + startSelectValue, + endSelectValue, + item, + type +) { + if (type === "week" || !item.isThisTitleRange) return false; + if (!rangeHoverValue) { + if (startSelectValue && endSelectValue) { + return ( + (compareDate(startSelectValue, item, type) && + compareDate(item, endSelectValue, type)) || + (compareDate(endSelectValue, item, type) && + compareDate(item, startSelectValue, type)) + ); + } + if (startSelectValue) { + return ( + (compareDate(startSelectValue, item, type) && + compareDate(item, endConfirmValue, type)) || + (compareDate(endConfirmValue, item, type) && + compareDate(item, startSelectValue, type)) + ); + } else if (endSelectValue) { + return ( + (compareDate(startConfirmValue, item, type) && + compareDate(item, endSelectValue, type)) || + (compareDate(endSelectValue, item, type) && + compareDate(item, startConfirmValue, type)) + ); + } + return ( + compareDate(startConfirmValue, item, type) && + compareDate(item, endConfirmValue, type) + ); + } else { + if (focusState === "01") { + return ( + (compareDate(rangeHoverValue, startConfirmValue, type) && + compareDate(rangeHoverValue, item, type) && + compareDate(item, startConfirmValue, type)) || + (compareDate(startConfirmValue, rangeHoverValue, type) && + compareDate(startConfirmValue, item, type) && + compareDate(item, rangeHoverValue, type)) + ); + } else if (focusState === "10") { + return ( + (compareDate(rangeHoverValue, endConfirmValue, type) && + compareDate(rangeHoverValue, item, type) && + compareDate(item, endConfirmValue, type)) || + (compareDate(endConfirmValue, rangeHoverValue, type) && + compareDate(endConfirmValue, item, type) && + compareDate(item, rangeHoverValue, type)) + ); + } + } +} diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/utils/formatFunc.js b/packages/inula2-ui2/library_code/src/components/datepicker2/utils/formatFunc.js new file mode 100644 index 00000000..e69de29b diff --git a/packages/inula2-ui2/library_code/src/components/datepicker2/utils/index.js b/packages/inula2-ui2/library_code/src/components/datepicker2/utils/index.js new file mode 100644 index 00000000..e472d2fa --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/datepicker2/utils/index.js @@ -0,0 +1,43 @@ +import { + calculateDaysInYearMonth, + calculateFirstWeekDayInYearMonth, + calculateCurWeek, + calculateRenderDateItems, + calculateRenderYQMItems, + calculateRenderWeekItems, +<<<<<<< HEAD +======= + calculateDateWeek, + calculateNextRange, +>>>>>>> 0cc3e56 (bug: 修复datepicker选择逻辑bug,初始化rangepicker) + getTodayDate, + compareDate, + isEqualedDate, + isInRangeDate, + isSelected, +} from "./calculateFunc"; + +export { + calculateDaysInYearMonth, + calculateFirstWeekDayInYearMonth, + calculateCurWeek, + calculateRenderDateItems, + calculateRenderYQMItems, + calculateRenderWeekItems, +<<<<<<< HEAD + getTodayDate, +======= + calculateDateWeek, + calculateNextRange, + getTodayDate, + formatDate, + compareDate, + isEqualedDate, + isInRangeDate, + isSelected, + formatDateToYYYYMM, + parseDefaultToFormat, + formatDateToObject, + formatDateToYearMonth, +>>>>>>> 0cc3e56 (bug: 修复datepicker选择逻辑bug,初始化rangepicker) +}; diff --git a/packages/inula2-ui2/library_code/src/components/form/demo.jsx b/packages/inula2-ui2/library_code/src/components/form/demo.jsx new file mode 100644 index 00000000..58f1a736 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/demo.jsx @@ -0,0 +1,57 @@ +import demo1 from './demos/demo1.jsx'; +import demo2 from './demos/demo2.jsx'; +import demo3 from './demos/demo3.jsx'; +import demo4 from './demos/demo4.jsx'; +import demo5 from './demos/demo5.jsx'; +import demo6 from './demos/demo6.jsx'; +import demo7 from './demos/demo7.jsx'; + +function FormDemo() { + let loading = false; + return ( +
+
+

基本

+
基本的表单数据域控制展示,包含布局、初始化、验证、提交。
+
+
+ +
+

表单方法调用

+
展示表单的各种方法调用,包括校验、重置、设置值等。
+
+
+ +
+

表单布局

+
表单有三种布局。
+
+
+ +
+

表单禁用

+
展示表单的禁用功能,包括禁用状态切换、表单重置等。
+
+
+ +
+

表单变体

+
展示四种不同的表单变体:outlined(默认)、filled、borderless、underlined。
+
+
+ + {/*
+

交互加载

+
演示点击按钮后进入加载中状态,1.5秒后恢复。
+
+
*/} + +
+

自定义必填标记

+
展示自定义必填标记的功能,包括默认、可选、隐藏、自定义。
+
+
+
+ ); +} +export default FormDemo; diff --git a/packages/inula2-ui2/library_code/src/components/form/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/form/demos/demo1.jsx new file mode 100644 index 00000000..cafcd8e1 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/demos/demo1.jsx @@ -0,0 +1,80 @@ +import '../index.css'; +import Input from '../../input'; +import Button from '../../button'; +import { Form, FormItem, setValueByPath } from '../index'; +import { Checkbox } from '../../checkbox'; + +const Demo1 = () => { + let layout = 'horizontal'; + let user = { + username: '', + password: '', + remember: false, + }; + + const rules = { + username: [ + { required: true, message: '请输入用户名' }, + { min: 3, message: '至少 3 个字符' } + ], + password: [ + { required: true, message: '请输入密码' }, + { min: 6, message: '至少 6 位' } + ], + }; + + const handleFinish = (values) => { + console.log('提交成功:', values); + alert('提交成功: ' + JSON.stringify(values)); + }; + + const handleFailed = ({ errors }) => { + console.log('提交失败:', errors); + // alert('提交失败: ' + JSON.stringify(errors)); + }; + + return ( +
+
+ + setValueByPath(user, 'username', e.target.value)} + /> + + + + setValueByPath(user, 'password', e.target.value)} + /> + + + + { + user.remember = e.target.checked; + }} + > + Remember me + + + + + + +
+
+ ); +}; + +export default Demo1; + diff --git a/packages/inula2-ui2/library_code/src/components/form/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/form/demos/demo2.jsx new file mode 100644 index 00000000..508010ef --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/demos/demo2.jsx @@ -0,0 +1,95 @@ +import '../index.css'; +import Input from '../../input'; +import Button from '../../button'; +import { Form, FormItem, setValueByPath } from '../index'; + + +const Demo = () => { + let layout = 'horizontal'; + let user = { + username: '', + email: '', + phone: '' + }; + + const rules = { + username: [ + { required: true, message: '请输入用户名' }, + { min: 3, message: '至少 3 个字符' } + ], + email: [ + { required: true, message: '请输入邮箱' }, + { pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, message: '邮箱格式不正确' } + ], + phone: [ + { required: true, message: '请输入手机号' }, + { pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确' } + ] + }; + + let formRef = null; + + const handleFinish = (values) => { + console.log('提交成功:', values); + }; + + const handleFailed = ({ errors }) => { + console.log('提交失败:', errors); + }; + + const handleSetValues = () => { + + // 尝试通过重新赋值整个对象来触发响应式更新 + user.username = 'testuser'; + user.email = 'test@example.com'; + user.phone = '13800138000'; + + // 强制触发响应式更新 + // user = { ...user }; + + console.log('SetValues - user:', user); + alert('表单值已设置'); + }; + + return ( +
+
+ + setValueByPath(user, 'username', e.target.value)} + /> + + + + setValueByPath(user, 'email', e.target.value)} + /> + + + + setValueByPath(user, 'phone', e.target.value)} + /> + + +
+ + + {/* */} +
+
+
+ ); +}; + +export default Demo; diff --git a/packages/inula2-ui2/library_code/src/components/form/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/form/demos/demo3.jsx new file mode 100644 index 00000000..dc63c2ef --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/demos/demo3.jsx @@ -0,0 +1,72 @@ +import '../index.css'; +import Input from '../../input'; +import Button from '../../button'; +import { Form, FormItem, setValueByPath } from '../index'; +import Select from '../../select'; + +const Demo3 = () => { + let layout = 'inline'; + let searchForm = { + keyword: '', + category: '' + }; + + const categoryOptions = [ + { label: '全部', value: 'all' }, + { label: '技术', value: 'tech' }, + { label: '设计', value: 'design' }, + { label: '产品', value: 'product' } + ]; + + const handleSearch = (values) => { + console.log('搜索条件:', values); + }; + + const handleReset = () => { + searchForm.keyword = ''; + searchForm.category = ''; + }; + + return ( +
+
+ +
+ + + +
+
+ + setValueByPath(searchForm, 'keyword', e.target.value)} + /> + + + + setValueByPath(formData, 'input', e.target.value)} + disabled={isDisabled} + /> + + + + setValueByPath(formData, 'textarea', e.target.value)} + disabled={isDisabled} + /> + + + + { + formData.switch = !formData.switch; + }} + onChange={(e) => setValueByPath(formData, 'switch', e.target.checked)} + disabled={isDisabled} + /> + + + + + + + + + +
+
+ ); +}; + +export default Demo4; diff --git a/packages/inula2-ui2/library_code/src/components/form/demos/demo5.jsx b/packages/inula2-ui2/library_code/src/components/form/demos/demo5.jsx new file mode 100644 index 00000000..335b2152 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/demos/demo5.jsx @@ -0,0 +1,96 @@ +import { Form, FormItem, getValueByPath, setValueByPath } from "../index.jsx"; +import Input from "../../input/index.jsx"; +import Select from "../../select/index.jsx"; +import Button from "../../button/index.jsx"; +import { Checkbox } from "../../checkbox/index.jsx"; +import Radio from "../../radio/index.jsx"; +import Switch from "../../switch/index.jsx"; + +function Demo5() { + let variant = 'outlined'; + // 创建表单数据模型 + let formData = { + username: '', + email: '', + country: '', + description: '', + agree: false, + gender: '', + notifications: false + }; + + const selectOptions = [ + // { label: '中国', value: 'china' }, + // { label: '美国', value: 'usa' }, + // { label: '日本', value: 'japan' }, + // { label: '韩国', value: 'korea' }, + ]; + + const handleFinish = (values) => { + console.log('表单提交成功:', values); + alert('表单提交成功!请查看控制台输出。'); + }; + + const handleFailed = (errors) => { + console.log('表单校验失败:', errors); + alert('表单校验失败,请检查输入!'); + }; + + return ( +
+
+ +
+ + + + +
+
+ + + setValueByPath(formData, 'username', e.target.value)} + /> + + + + setValueByPath(formData, 'email', e.target.value)} + /> + + + + setValueByPath(formData, 'description', e.target.value)} + /> + + + + + +
+
+ ); +} + +export default Demo5; diff --git a/packages/inula2-ui2/library_code/src/components/form/demos/demo6.jsx b/packages/inula2-ui2/library_code/src/components/form/demos/demo6.jsx new file mode 100644 index 00000000..a260ec2b --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/demos/demo6.jsx @@ -0,0 +1,76 @@ +import '../index.css'; +import Input from '../../input'; +import Button from '../../button'; +import { Form, FormItem, setValueByPath } from '../index'; +import { Checkbox } from '../../checkbox'; + +const Demo6 = () => { + let size = 'medium'; + let user = { + username: '', + password: '', + remember: false, + }; + + const rules = { + username: [ + { required: true, message: '请输入用户名' }, + { min: 3, message: '至少 3 个字符' } + ], + password: [ + { required: true, message: '请输入密码' }, + { min: 6, message: '至少 6 位' } + ], + }; + + const handleFinish = (values) => { + console.log('提交成功:', values); + alert('提交成功: ' + JSON.stringify(values)); + }; + + const handleFailed = ({ errors }) => { + console.log('提交失败:', errors); + // alert('提交失败: ' + JSON.stringify(errors)); + }; + + return ( +
+
+ +
+ + + +
+
+ + setValueByPath(user, 'username', e.target.value)} + /> + + + + setValueByPath(user, 'password', e.target.value)} + /> + + + + + +
+
+ ); +}; + +export default Demo6; + diff --git a/packages/inula2-ui2/library_code/src/components/form/demos/demo7.jsx b/packages/inula2-ui2/library_code/src/components/form/demos/demo7.jsx new file mode 100644 index 00000000..4073e8f3 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/demos/demo7.jsx @@ -0,0 +1,80 @@ +import '../index.css'; +import Input from '../../input/index.jsx'; +import Button from '../../button/index.jsx'; +import Tag from '../../tag'; +import { Form, FormItem, setValueByPath } from '../index.jsx'; + +const Demo7 = () => { + let layout = 'vertical'; + let requiredMark = 'default'; // default | optional | hidden | customize + + let formModel = { + fieldA: '', + fieldB: '' + }; + + const rules = { + fieldA: [{ required: true, message: 'Field A 为必填项' }], + fieldB: [] + }; + + + const customizeRequiredMark = (label, { required }) => ( + <> + {required ? Required : optional} + {label} + + ); + + const onFinish = (values) => { + console.log('提交成功: ', values); + }; + + const onFailed = ({ errors }) => { + console.log('提交失败: ', errors); + }; + + return ( +
+
+ +
+ + + + +
+
+ + setValueByPath(formModel, 'fieldA', e.target.value)} + /> + + + + setValueByPath(formModel, 'fieldB', e.target.value)} + /> + + + + + +
+
+ ); +}; + +export default Demo7; + diff --git a/packages/inula2-ui2/library_code/src/components/form/index.css b/packages/inula2-ui2/library_code/src/components/form/index.css new file mode 100644 index 00000000..171c64b6 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/index.css @@ -0,0 +1,297 @@ +@import '../../colors.css'; +.inula-form { + width: 100%; +} + +.inula-form-vertical .inula-form-item { + display: block; +} + +.inula-form-horizontal .inula-form-item { + display: flex; +} + +.inula-form-inline .inula-form-item { + display: inline-flex; + margin-right: 16px; + margin-bottom: 16px; + align-items: center; + vertical-align: middle; +} + +.inula-form-inline .inula-form-item:last-child { + margin-right: 0; +} + +.inula-form-inline .inula-form-item-label { + flex: 0 0 auto; + margin-right: 8px; + white-space: nowrap; + display: flex; + align-items: center; + line-height: 1; + height: 32px; +} + +.inula-form-inline .inula-form-item-label label { + display: flex; + align-items: center; + height: 32px; + margin: 0; +} + +.inula-form-inline .inula-form-item-control { + flex: 0 0 auto; + display: flex; + align-items: center; + height: 32px; +} + +.inula-form-inline .inula-form-item-control-input { + min-width: 120px; + display: flex; + align-items: center; + height: 32px; +} + +.inula-form-inline .inula-form-item-control-input > * { + height: 100%; + display: flex; + align-items: center; +} + +.inula-form-label-left .inula-form-item-label { + text-align: left; +} + +.inula-form-label-right .inula-form-item-label { + text-align: right; +} + +.inula-form-item { + margin-bottom: 16px; +} + +.inula-form-item-label { + flex: 0 0 120px; + line-height: 32px; + color: #333; + font-size: 14px; +} + +.inula-form-item-required .inula-form-item-label label::before { + display: inline-block; + margin-right: 4px; + color: #ff4d4f; + content: '*'; +} + +/* Required Mark 样式 */ +.inula-form-item-required-asterisk { + color: #ff4d4f; + margin-right: 4px; + font-weight: normal; +} + +.inula-form-item-required-text { + color: var(--inula-color-disabled-text); + font-size: 12px; + margin-left: 4px; + font-weight: normal; +} + +.inula-form-item-optional { + color: #999; + font-size: 12px; + margin-left: 4px; + font-weight: normal; + display: inline-block; +} + +.inula-form-item-required-custom { + background: #ff4d4f; + color: white; + padding: 2px 6px; + border-radius: 4px; + font-size: 12px; + margin-right: 4px; + font-weight: normal; + display: inline-block; +} + +.inula-form-item-optional-custom { + background: #f0f0f0; + color: #666; + padding: 2px 6px; + border-radius: 4px; + font-size: 12px; + margin-right: 4px; + font-weight: normal; + display: inline-block; +} + +/* Required Mark 模式样式 */ +.inula-form-required-mark-hidden .inula-form-item-required .inula-form-item-label label::before { + display: none; +} + +.inula-form-required-mark-optional .inula-form-item-required .inula-form-item-label label::before { + display: none; +} + +.inula-form-required-mark-customize .inula-form-item-required .inula-form-item-label label::before { + display: none; +} + +.inula-form-item-control { + flex: 1; +} + +.inula-form-item-control-input { + min-height: 32px; + display: flex; + align-items: center; +} + +.inula-form-item-has-error .inula-form-item-control-input .inula-input, +.inula-form-item-has-error .inula-form-item-control-input .inula-input-affix-wrapper { + border-color: #ff4d4f; +} + +.inula-form-item-explain { + color: #ff4d4f; + font-size: 12px; + line-height: 1.6; + margin-top: 4px; + text-align: left; +} + +.inula-form-item-extra { + color: #666; + font-size: 12px; + line-height: 1.6; + margin-top: 4px; +} + +.inula-form-disabled { + /* 表单禁用状态,具体禁用效果由各个控件自己处理 */ + opacity: 0.6; +} + +/* Form 变体样式 */ + +/* Filled 变体 - 参考 Ant Design 5.0 设计规范 */ +.inula-form-filled { + /* 提供给子组件读取的边框/背景变量 */ + --inula-form-variant-bg: var(--inula-variant-filled-bg); + --inula-form-variant-hover-bg: var(--inula-variant-filled-hover-bg); + --inula-form-variant-focus-bg: var(--inula-variant-filled-focus-bg); + --inula-form-variant-border-color: transparent; + --inula-form-variant-focus-border-color: var(--inula-color-primary); +} + +.inula-form-filled .inula-form-item-control-input .inula-input, +.inula-form-filled .inula-form-item-control-input .inula-input-affix-wrapper, +.inula-form-filled .inula-form-item-control-input .inula-select { + background: var(--inula-form-variant-bg); + border-color: var(--inula-form-variant-border-color); +} + +.inula-form-filled .inula-form-item-control-input .inula-input:hover, +.inula-form-filled .inula-form-item-control-input .inula-input-affix-wrapper:hover, +.inula-form-filled .inula-form-item-control-input .inula-select:hover { + background: var(--inula-variant-filled-hover-bg); + border-color: transparent; + box-shadow: none; +} + +.inula-form-filled .inula-form-item-control-input .inula-input:focus-within, +.inula-form-filled .inula-form-item-control-input .inula-input-affix-wrapper:focus-within, +.inula-form-filled .inula-form-item-control-input .inula-select:focus-within { + background: var(--inula-form-variant-focus-bg); + border-color: var(--inula-form-variant-focus-border-color); +} + +/* Borderless 变体 - 参考 Ant Design 5.0 设计规范 */ +.inula-form-borderless { + --inula-form-variant-bg: transparent; + --inula-form-variant-hover-bg: var(--inula-variant-borderless-hover-bg); + --inula-form-variant-focus-bg: var(--inula-variant-borderless-focus-bg); + --inula-form-variant-border-color: transparent; + --inula-form-variant-focus-border-color: transparent; +} + +.inula-form-borderless .inula-form-item-control-input .inula-input, +.inula-form-borderless .inula-form-item-control-input .inula-input-affix-wrapper, +.inula-form-borderless .inula-form-item-control-input .inula-select { + border: none !important; + box-shadow: none !important; + background: var(--inula-form-variant-bg); +} + +.inula-form-borderless .inula-form-item-control-input .inula-input:hover, +.inula-form-borderless .inula-form-item-control-input .inula-input-affix-wrapper:hover, +.inula-form-borderless .inula-form-item-control-input .inula-select:hover { + border: none !important; + box-shadow: none !important; + background: var(--inula-variant-borderless-hover-bg); +} + +.inula-form-borderless .inula-form-item-control-input .inula-input:focus-within, +.inula-form-borderless .inula-form-item-control-input .inula-input-affix-wrapper:focus-within, +.inula-form-borderless .inula-form-item-control-input .inula-select:focus-within { + border: none !important; + box-shadow: none !important; + background: var(--inula-form-variant-focus-bg); +} + +/* Underlined 变体 - 参考 Ant Design 5.0 设计规范 */ +.inula-form-underlined .inula-form-item-control-input .inula-input, +.inula-form-underlined .inula-form-item-control-input .inula-input-affix-wrapper, +.inula-form-underlined .inula-form-item-control-input .inula-select { + border: none !important; + border-bottom: 0.5px solid var(--inula-variant-underlined-border) !important; + border-radius: 0 !important; + box-shadow: none !important; + background: transparent; +} + +.inula-form-underlined .inula-form-item-control-input .inula-input:hover, +.inula-form-underlined .inula-form-item-control-input .inula-input-affix-wrapper:hover, +.inula-form-underlined .inula-form-item-control-input .inula-select:hover { + border: none !important; + border-bottom: 0.5px solid var(--inula-variant-underlined-hover-border) !important; + box-shadow: none !important; +} + +.inula-form-underlined .inula-form-item-control-input .inula-input:focus-within, +.inula-form-underlined .inula-form-item-control-input .inula-input-affix-wrapper:focus-within, +.inula-form-underlined .inula-form-item-control-input .inula-select:focus-within { + border: none !important; + border-bottom: 0.5px solid var(--inula-variant-underlined-focus-border) !important; + box-shadow: none !important; +} + +/* 额外覆盖:让 Select 在 Form 的 underlined 形态下仅显示底边框 */ +.inula-form-underlined .inula-select .inula-select-selection { + border: none !important; + border-bottom: 0.5px solid var(--inula-variant-underlined-border) !important; + background: transparent; + border-radius: 0 !important; + box-shadow: none !important; +} +.inula-form-underlined .inula-select .inula-select-selection:hover { + border: none !important; + border-bottom: 0.5px solid var(--inula-variant-underlined-hover-border) !important; + background: transparent; +} +.inula-form-underlined .inula-select .inula-select-selection:focus, +.inula-form-underlined .inula-select .inula-select-selection:focus-within { + border: none !important; + border-bottom: 0.5px solid var(--inula-variant-underlined-focus-border) !important; + background: transparent; +} + +/* 表单尺寸样式 */ + + diff --git a/packages/inula2-ui2/library_code/src/components/form/index.jsx b/packages/inula2-ui2/library_code/src/components/form/index.jsx new file mode 100644 index 00000000..e1792bd7 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/form/index.jsx @@ -0,0 +1,428 @@ +import { watch, createContext, useContext } from '@openinula/next'; +import './index.css'; + +/** + * Form 组件(openinula2.0) + * - 使用响应式变量作为表单状态(例如:let form = { username: '' }) + * - 简易校验:required、min、max、pattern、validator(同步) + * - 布局:horizontal/vertical/inline + * - 支持通过props传递disabled状态 + */ + +// 按 openinula 文档创建 Context(作为 Provider/Consumer 使用) +const FormContext = createContext({ + model: {}, + rules: {}, + variant: 'outlined', + size: 'medium', + disabled: false, + requiredMark: 'default', + requiredMarkRender: null, +}); + +const getValueByPath = (obj, path) => { + if (!obj || !path) return undefined; + const segments = Array.isArray(path) ? path : String(path).split('.'); + let cur = obj; + for (let i = 0; i < segments.length; i++) { + if (cur == null) return undefined; + cur = cur[segments[i]]; + } + return cur; +}; + +const setValueByPath = (obj, path, value) => { + const segments = Array.isArray(path) ? path : String(path).split('.'); + let cur = obj; + for (let i = 0; i < segments.length - 1; i++) { + const key = segments[i]; + if (cur[key] == null || typeof cur[key] !== 'object') cur[key] = {}; + cur = cur[key]; + } + cur[segments[segments.length - 1]] = value; +}; + +// 每个表单模型对应的字段校验注册表(model -> Map) +const fieldValidatorsRegistry = new WeakMap(); +// 每个表单模型对应的表单级规则(model -> rules 对象) +const formRulesRegistry = new WeakMap(); + +const runRules = (value, model, rules = []) => { + if (!Array.isArray(rules)) rules = [rules].filter(Boolean); + for (let i = 0; i < rules.length; i++) { + const rule = rules[i] || {}; + if (rule.required) { + const empty = value === undefined || value === null || String(value).trim() === ''; + if (empty) return rule.message || '该字段为必填项'; + } + if (rule.min != null) { + if (typeof value === 'number') { + if (value < rule.min) return rule.message || `不能小于 ${rule.min}`; + } else if (String(value).length < rule.min) { + return rule.message || `最少 ${rule.min} 个字符`; + } + } + if (rule.max != null) { + if (typeof value === 'number') { + if (value > rule.max) return rule.message || `不能大于 ${rule.max}`; + } else if (String(value).length > rule.max) { + return rule.message || `最多 ${rule.max} 个字符`; + } + } + if (rule.pattern && rule.pattern instanceof RegExp) { + if (!rule.pattern.test(String(value || ''))) return rule.message || '格式不正确'; + } + if (typeof rule.validator === 'function') { + const res = rule.validator(value, model); + if (res === false) return rule.message || '校验未通过'; + if (typeof res === 'string') return res; + if (res && res.valid === false) return res.message || '校验未通过'; + } + } + return ''; +}; + +const Form = ({ + model = {}, + rules = {}, + layout = 'horizontal', // horizontal | vertical | inline + labelAlign = 'right', // left | right + colon = true, + disabled = false, + variant = 'outlined', // outlined | filled | borderless | underlined + size = 'medium', // small | medium | large + requiredMark = 'default', // default | optional | hidden | customize + requiredMarkRender, + onFinish, + onFinishFailed, + className = '', + style = {}, + children, + ref, + ...rest +}) => { + let submitting = false; + let formRef = ref; + // 记录当前表单的表单级规则(兼容已有字段校验实现) + formRulesRegistry.set(model, rules || {}); + + // 表单方法 + const validate = (fieldNames) => { + const errors = {}; + const values = model; + + const fieldsToValidate = fieldNames || Object.keys(rules || {}); + for (let i = 0; i < fieldsToValidate.length; i++) { + const name = fieldsToValidate[i]; + const fieldRules = rules[name]; + if (fieldRules) { + const value = getValueByPath(model, name); + const msg = runRules(value, model, fieldRules); + if (msg) errors[name] = msg; + } + } + + return { + valid: Object.keys(errors).length === 0, + errors, + values + }; + }; + + const validateField = (fieldName) => { + const fieldRules = rules[fieldName]; + if (!fieldRules) return { valid: true, error: '', value: getValueByPath(model, fieldName) }; + + const value = getValueByPath(model, fieldName); + const error = runRules(value, model, fieldRules); + + return { + valid: !error, + error, + value + }; + }; + + const resetFields = (fieldNames) => { + const fieldsToReset = fieldNames || Object.keys(model); + for (let i = 0; i < fieldsToReset.length; i++) { + const name = fieldsToReset[i]; + setValueByPath(model, name, ''); + } + }; + + const setFieldsValue = (values) => { + Object.keys(values).forEach(name => { + setValueByPath(model, name, values[name]); + }); + }; + + const getFieldsValue = (fieldNames) => { + if (!fieldNames) return model; + + const result = {}; + fieldNames.forEach(name => { + result[name] = getValueByPath(model, name); + }); + return result; + }; + + const clearValidate = (fieldNames) => { + // 清除校验状态,这里可以通过触发重新渲染来实现 + // 在 openinula2.0 中,直接修改响应式变量即可 + if (fieldNames) { + fieldNames.forEach(name => { + // 可以在这里添加清除校验状态的逻辑 + }); + } + }; + + const handleSubmit = (e) => { + e && e.preventDefault && e.preventDefault(); + if (submitting) return; + submitting = true; + + const result = validate(); + if (result.valid) { + onFinish && onFinish(result.values); + } else { + onFinishFailed && onFinishFailed({ errors: result.errors, values: result.values }); + } + // 提交后触发当前表单内各字段的校验以更新错误提示 + try { + const registry = fieldValidatorsRegistry.get(model); + if (registry) { + registry.forEach((fn, fieldName) => { + const currentVal = getValueByPath(model, fieldName); + if (typeof fn === 'function') fn(currentVal); + }); + } + } catch (err) { } + submitting = false; + }; + + const formClassNames = [ + 'inula-form', + `inula-form-${layout}`, + `inula-form-label-${labelAlign}`, + `inula-form-${variant}`, + `inula-form-${size}`, + disabled ? 'inula-form-disabled' : '', + requiredMark ? `inula-form-required-mark-${requiredMark}` : '', + className, + ].filter(Boolean).join(' '); + + // 暴露表单方法给 ref + if (formRef) { + formRef.current = { + validate, + validateField, + resetFields, + setFieldsValue, + getFieldsValue, + clearValidate, + submit: handleSubmit + }; + } + + return ( + +
+ {typeof children === 'function' ? children() : children} +
+
+ ); +}; + +const FormItem = ({ + name, + label, + required = false, + rules = [], + model, + validateOn = 'change', // change | blur | submit + help, + extra, + className = '', + style = {}, + children, + colon = true, + disabled, // 从Form父组件传递,不设默认值 + variant, // 从Form父组件传递,不设默认值 + size, // 从Form父组件传递,不设默认值 + requiredMark, // 从Form父组件传递,不设默认值 + ...rest +}) => { + let error = ''; + + // 确保 requiredMark 有默认值 + + const { model: ctxModel, rules: ctxRules, variant: ctxVariant, size: ctxSize, disabled: ctxDisabled, requiredMark: ctxRequiredMark, requiredMarkRender: ctxRequiredMarkRender } = useContext(FormContext); + const fieldValue = getValueByPath(ctxModel, name); + + const triggerValidate = (val) => { + const formLevelRules = formRulesRegistry.get(ctxModel) || {}; + const nameRules = formLevelRules ? formLevelRules[name] : undefined; + const mergedRules = [ + required ? { required: true, message: '该字段为必填项' } : null, + ...(Array.isArray(rules) ? rules : [rules]), + ...(Array.isArray(nameRules) ? nameRules : (nameRules ? [nameRules] : [])) + ].filter(Boolean); + error = runRules(val, model, mergedRules); + }; + + // 注册字段的提交时触发校验函数(按当前表单 model 作用域) + if (name && model) { + let registry = fieldValidatorsRegistry.get(model); + if (!registry) { + registry = new Map(); + fieldValidatorsRegistry.set(model, registry); + } + registry.set(name, (val) => triggerValidate(val)); + } + + const onInputCapture = (e) => { + if (validateOn === 'change') { + const val = e && e.target ? e.target.value : getValueByPath(ctxModel, name); + triggerValidate(val); + } + }; + + const onBlurCapture = (e) => { + if (validateOn === 'blur') { + const val = e && e.target ? e.target.value : getValueByPath(ctxModel, name); + triggerValidate(val); + } + }; + + // 初始 required 态(不显示红字,但显示 * 标识) + const hasError = !!error; + + // 根据requiredMark属性决定是否添加required类 + const shouldShowRequiredMark = ctxRequiredMark !== 'hidden' && required; + + const itemClassNames = [ + 'inula-form-item', + `inula-form-item-${ctxSize === 'medium' ? 'default' : ctxSize}`, + hasError ? 'inula-form-item-has-error' : '', + shouldShowRequiredMark && (ctxRequiredMark || 'default') === 'default' ? 'inula-form-item-required' : '', + className, + ].filter(Boolean).join(' '); + + // 计算标签内容(纯派生,无副作用) + const computedDefaultLabel = (() => { + if (ctxRequiredMark === 'default') return null; + if (ctxRequiredMark === 'optional' && !required) { + return (可选); + } + if (ctxRequiredMark === 'customize' && required) { + return (必填); + } + if (ctxRequiredMark === 'customize' && !required) { + return optional; + } + return null; + })(); + + const labelContent = ctxRequiredMarkRender + ? ctxRequiredMarkRender(computedDefaultLabel, { required, requiredMark: ctxRequiredMark }) + : computedDefaultLabel; + + + + return ( +
+ {label !== null ? ( +
+ +
+ ) : (
)} +
+ {/*
+ {ctxVariant ? ( + // 克隆子组件并传递variant和size属性 + typeof children === 'function' ? + (() => { + const childrenResult = children(); + + return Array.isArray(childrenResult) ? + childrenResult.map((child, index) => + child && typeof child === 'object' && child.type ? + { ...child, props: { ...child.props, variant: ctxVariant, size: (ctxSize === 'medium' ? 'default' : ctxSize), disabled: ctxDisabled || child.props?.disabled, requiredMark: ctxRequiredMark } } : + child + ) : + childrenResult && typeof childrenResult === 'object' && childrenResult.type ? + { ...childrenResult, props: { ...childrenResult.props, variant: ctxVariant, size: (ctxSize === 'medium' ? 'default' : ctxSize), disabled: ctxDisabled || childrenResult.props?.disabled, requiredMark: ctxRequiredMark } } : + childrenResult; + })() : + Array.isArray(children) ? + children.map((child, index) => + child && typeof child === 'object' && child.type ? + { ...child, props: { ...child.props, variant: ctxVariant, size: (ctxSize === 'medium' ? 'default' : ctxSize), disabled: ctxDisabled || child.props?.disabled, requiredMark: ctxRequiredMark } } : + child + ) : + children && typeof children === 'object' && children.type ? + { ...children, props: { ...children.props, variant: ctxVariant, size: (ctxSize === 'medium' ? 'default' : ctxSize), disabled: ctxDisabled || children.props?.disabled, requiredMark: ctxRequiredMark } } : + children + ) : ( + // 如果没有variant,传递size和disabled状态(来自上下文) + typeof children === 'function' ? + (() => { + const childrenResult = children(); + + { Array.isArray(childrenResult) } + return Array.isArray(childrenResult) ? + childrenResult.map((child, index) => + child && typeof child === 'object' && child.type ? + { ...child, props: { ...child.props, size: (ctxSize === 'medium' ? 'default' : ctxSize), disabled: ctxDisabled || child.props?.disabled, requiredMark: ctxRequiredMark } } : + child + ) : + childrenResult && typeof childrenResult === 'object' && childrenResult.type ? + { ...childrenResult, props: { ...childrenResult.props, size: (ctxSize === 'medium' ? 'default' : ctxSize), disabled: ctxDisabled || childrenResult.props?.disabled, requiredMark: ctxRequiredMark } } : + childrenResult; + })() : + Array.isArray(children) ? + children.map((child, index) => + child && typeof child === 'object' && child.type ? + { ...child, props: { ...child.props, size: (ctxSize === 'medium' ? 'default' : ctxSize), disabled: ctxDisabled || child.props?.disabled, requiredMark: ctxRequiredMark } } : + child + ) : + children && typeof children === 'object' && children.type ? + { ...children, props: { ...children.props, size: (ctxSize === 'medium' ? 'default' : ctxSize), disabled: ctxDisabled || children.props?.disabled, requiredMark: ctxRequiredMark } } : + children + )} +
*/} +
+ {typeof children === 'function' ? children() : children} +
+ {help ? ( +
{help}
+ ) : null} + {error ? ( +
{error}
+ ) : null} + {extra ? ( +
{extra}
+ ) : null} +
+
+ ); +}; + +export { Form, FormItem, getValueByPath, setValueByPath }; +export default Form; diff --git a/packages/inula2-ui2/library_code/src/components/icon/demo.jsx b/packages/inula2-ui2/library_code/src/components/icon/demo.jsx new file mode 100644 index 00000000..281ce7be --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/demo.jsx @@ -0,0 +1,28 @@ +import Icon from './index.jsx'; +import demo1 from './demos/demo1.jsx'; +import demo2 from './demos/demo2.jsx'; +import demo3 from './demos/demo3.jsx'; +import demo4 from './demos/demo4.jsx'; +import demo5 from './demos/demo5.jsx'; + +function IconDemo() { + return ( +
+
+

基本Icon

+
支持实体、品牌图标,可改大小、颜色、旋转角度,支持旋转动画
+
+
+
+
+
+
+

Icon表

+
点击复制value和theme
+
+
+
+ ); +} + +export default IconDemo; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/icon/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/icon/demos/demo1.jsx new file mode 100644 index 00000000..cf6ea145 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/demos/demo1.jsx @@ -0,0 +1,22 @@ +import Icon from "../index.jsx"; + +function IconDemo() { + return ( +
+
+ + user默认实体 +
+
+ + user实体 +
+
+ + user实体蓝色 +
+
+ ); +} + +export default IconDemo; diff --git a/packages/inula2-ui2/library_code/src/components/icon/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/icon/demos/demo2.jsx new file mode 100644 index 00000000..67780356 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/demos/demo2.jsx @@ -0,0 +1,30 @@ +import Icon from "../index.jsx"; + +function IconDemo() { + return ( +
+
+ + 下箭头默认实体 +
+ {/*
+ + 下箭头线条 +
*/} +
+ + 下箭头实体 +
+ {/*
+ + 下箭头双色 +
*/} +
+ + 下箭头实体32px +
+
+ ); +} + +export default IconDemo; diff --git a/packages/inula2-ui2/library_code/src/components/icon/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/icon/demos/demo3.jsx new file mode 100644 index 00000000..01aa23a1 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/demos/demo3.jsx @@ -0,0 +1,30 @@ +import Icon from "../index.jsx"; + +function IconDemo() { + return ( +
+
+ + caret-left默认实体 +
+
+ + caret-left实体 +
+
+ + caret-left实体蓝色 +
+
+ + caret-left实体天蓝色旋转45 +
+
+ + caret-left实体天蓝色旋转 +
+
+ ); +} + +export default IconDemo; diff --git a/packages/inula2-ui2/library_code/src/components/icon/demos/demo4.jsx b/packages/inula2-ui2/library_code/src/components/icon/demos/demo4.jsx new file mode 100644 index 00000000..cddc63c0 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/demos/demo4.jsx @@ -0,0 +1,30 @@ +import Icon from "../index.jsx"; + +function IconDemo() { + return ( +
+
+ + 苹果品牌图标 +
+
+ + 苹果品牌图标32px +
+
+ + 苹果品牌图标绿色 +
+
+ + 苹果品牌图标绿色旋转120度 +
+
+ + 苹果品牌图标绿色旋转 +
+
+ ); +} + +export default IconDemo; diff --git a/packages/inula2-ui2/library_code/src/components/icon/demos/demo5.jsx b/packages/inula2-ui2/library_code/src/components/icon/demos/demo5.jsx new file mode 100644 index 00000000..89141d1e --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/demos/demo5.jsx @@ -0,0 +1,51 @@ +import Icon from "../index.jsx"; +import { success, error } from "../../Notification/index.jsx"; +import "../index.css"; +import { filledIconValueList } from "./iconlist.ts"; +import Tag from "../../tag/index.jsx"; + +const handleCopy = async (text) => { + try { + await navigator.clipboard.writeText(text); + success({ message: "Copy success!", placement: "top" }); + } catch (err) { + error({ message: "Copy failed!", placement: "top" }); + } +}; + +const IconItem = ({ value, theme }) => { + const text = ``; + return ( +
handleCopy(text)}> +
+ +
+ {value} +
+ ); +}; + +const IconDemo = () => { + return ( +
+ + 实体图标表 + +
+
+ {filledIconValueList.map((value) => ( + + ))} +
+
+
+ ); +}; + +export default IconDemo; diff --git a/packages/inula2-ui2/library_code/src/components/icon/demos/demo6.jsx b/packages/inula2-ui2/library_code/src/components/icon/demos/demo6.jsx new file mode 100644 index 00000000..29694d1f --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/demos/demo6.jsx @@ -0,0 +1,43 @@ +import Icon from "../index.jsx"; +import { success, error } from "../../Notification/index.jsx"; +import "../index.css"; +import { brandIconValueList } from "./iconlist.ts"; +import Tag from "../../tag/index.jsx"; + +const handleCopy = async (text) => { + try { + await navigator.clipboard.writeText(text); + success({ message: "Copy success!", placement: "top" }); + } catch (err) { + error({ message: "Copy failed!", placement: "top" }); + } +}; + +const IconItem = ({ value, theme }) => { + const text = ``; + return ( +
handleCopy(text)}> +
+ +
+ {value} +
+ ); +}; + +const IconDemo = () => { + return ( +
+ + 品牌图标表 + +
+ {brandIconValueList.map((value) => ( + + ))} +
+
+ ); +}; + +export default IconDemo; diff --git a/packages/inula2-ui2/library_code/src/components/icon/demos/iconlist.ts b/packages/inula2-ui2/library_code/src/components/icon/demos/iconlist.ts new file mode 100644 index 00000000..55051216 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/demos/iconlist.ts @@ -0,0 +1,1852 @@ +const filledIconValueList = [ + "house", + "circle-user", + "image", + "file", + "camera", + "calendar", + "cloud", + "truck", + "thumbs-up", + "face-smile", + "headphones", + "bell", + "user", + "comment", + "envelope", + "magnifying-glass", + "check", + "download", + "font-awesome", + "web-awesome", + "phone", + "bars", + "star", + "location-dot", + "music", + "wand-magic-sparkles", + "heart", + "arrow-right", + "circle-xmark", + "bomb", + "poo", + "camera-retro", + "x", + "xmark", + "caret-up", + "truck-fast", + "pen-nib", + "arrow-up", + "hippo", + "calendar-days", + "paperclip", + "shield-halved", + "cart-shopping", + "clipboard", + "filter", + "circle-info", + "arrow-up-from-bracket", + "bolt", + "car", + "ghost", + "mug-hot", + "pen", + "umbrella", + "gift", + "film", + "list", + "gear", + "trash", + "circle-up", + "circle-down", + "inbox", + "rotate-right", + "lock", + "barcode", + "tag", + "book", + "bookmark", + "print", + "a", + "font", + "video", + "circle-half-stroke", + "droplet", + "pen-to-square", + "share-from-square", + "plus", + "minus", + "share", + "circle-exclamation", + "fire", + "eye", + "eye-slash", + "plane", + "magnet", + "hand", + "folder", + "folder-open", + "money-bill", + "thumbs-down", + "comments", + "lemon", + "key", + "thumbtack", + "paper-plane", + "code", + "globe", + "city", + "ticket", + "tree", + "wifi", + "paint-roller", + "bicycle", + "sliders", + "brush", + "hashtag", + "flask", + "briefcase", + "compass", + "dumpster-fire", + "person", + "person-dress", + "address-book", + "bath", + "handshake", + "snowflake", + "right-to-bracket", + "earth-americas", + "cloud-arrow-up", + "binoculars", + "palette", + "layer-group", + "users", + "gamepad", + "business-time", + "feather", + "sun", + "link", + "pen-fancy", + "fish", + "bug", + "shop", + "mug-saucer", + "landmark", + "poo-storm", + "chart-simple", + "shirt", + "anchor", + "quote-left", + "bag-shopping", + "code-compare", + "user-secret", + "stethoscope", + "car-side", + "hand-holding-heart", + "truck-front", + "cable-car", + "mountain-sun", + "location-pin", + "info", + "user-minus", + "cart-plus", + "clock", + "circle", + "play", + "cross", + "backward", + "handshake-slash", + "chevron-up", + "passport", + "question", + "pencil", + "phone-volume", + "upload", + "strikethrough", + "credit-card", + "street-view", + "database", + "copy", + "mobile", + "square", + "sort", + "forward", + "hourglass-start", + "newspaper", + "notes-medical", + "table", + "building", + "stop", + "store", + "flag", + "file-excel", + "network-wired", + "cash-register", + "file-export", + "hand-point-up", + "angle-up", + "shield", + "address-card", + "expand", + "flag-checkered", + "quote-right", + "tags", + "server", + "user-nurse", + "video-slash", + "arrow-down", + "blog", + "school", + "file-invoice", + "rocket", + "spinner", + "tty", + "exclamation", + "water", + "registered", + "signature", + "laptop", + "restroom", + "power-off", + "sitemap", + "icons", + "desktop", + "moon", + "calendar-week", + "pause", + "file-word", + "vials", + "language", + "door-open", + "brain", + "hotel", + "marker", + "star-of-life", + "leaf", + "walkie-talkie", + "shower", + "caret-down", + "file-import", + "place-of-worship", + "wallet", + "slash", + "award", + "toggle-on", + "ship", + "chalkboard", + "hands", + "signal", + "motorcycle", + "arrow-up-right-from-square", + "audio-description", + "square", + "seedling", + "closed-captioning", + "train", + "arrow-left", + "wrench", + "microchip", + "record-vinyl", + "trophy", + "hammer", + "diamond", + "robot", + "file-pdf", + "hospital", + "file-contract", + "square-xmark", + "square-check", + "crown", + "user-plus", + "virus", + "child", + "repeat", + "cube", + "copyright", + "medal", + "bullseye", + "mask", + "circle-check", + "radio", + "reply", + "chair", + "route", + "plug", + "calculator", + "dragon", + "certificate", + "fingerprint", + "road", + "crosshairs", + "heading", + "percent", + "user-tie", + "square-minus", + "i-cursor", + "church", + "joint", + "comments-dollar", + "truck-monster", + "recycle", + "warehouse", + "ruler", + "soap", + "scroll", + "wind", + "coins", + "baby", + "voicemail", + "puzzle-piece", + "keyboard", + "clone", + "eraser", + "wine-bottle", + "dice", + "receipt", + "ring", + "unlock", + "solar-panel", + "ruler-vertical", + "circle-notch", + "people-arrows", + "dollar-sign", + "tablet", + "not-equal", + "glasses", + "headset", + "code-branch", + "gopuram", + "images", + "window-restore", + "industry", + "stamp", + "microphone-slash", + "cookie-bite", + "otter", + "chevron-down", + "kiwi-bird", + "viruses", + "umbrella-beach", + "subscript", + "tablets", + "microphone", + "border-none", + "dumbbell", + "plane-departure", + "yin-yang", + "yen-sign", + "xmarks-lines", + "x-ray", + "worm", + "won-sign", + "wine-glass-empty", + "wine-glass", + "window-minimize", + "window-maximize", + "whiskey-glass", + "wheelchair-move", + "wheelchair", + "wheat-awn-circle-exclamation", + "wheat-awn", + "weight-scale", + "weight-hanging", + "wave-square", + "water-ladder", + "wand-magic", + "vr-cardboard", + "wand-sparkles", + "volume-xmark", + "volume-off", + "volume-low", + "volume-high", + "volleyball", + "volcano", + "virus-slash", + "virus-covid-slash", + "virus-covid", + "vihara", + "vial-virus", + "vial-circle-check", + "vial", + "vest-patches", + "vest", + "venus-mars", + "venus-double", + "venus", + "vector-square", + "vault", + "van-shuttle", + "utensils", + "users-viewfinder", + "users-slash", + "users-rectangle", + "users-rays", + "users-line", + "users-gear", + "users-between-lines", + "user-xmark", + "user-tag", + "user-slash", + "user-shield", + "user-pen", + "user-ninja", + "user-lock", + "user-large-slash", + "user-large", + "user-injured", + "user-group", + "user-graduate", + "user-gear", + "user-doctor", + "user-clock", + "user-check", + "user-astronaut", + "up-right-from-square", + "up-right-and-down-left-from-center", + "up-long", + "up-down-left-right", + "up-down", + "unlock-keyhole", + "universal-access", + "underline", + "turn-up", + "turn-down", + "turkish-lira-sign", + "truck-ramp-box", + "truck-plane", + "truck-pickup", + "truck-moving", + "truck-medical", + "truck-field-un", + "truck-field", + "truck-droplet", + "truck-arrow-right", + "trowel-bricks", + "trowel", + "triangle-exclamation", + "tree-city", + "trash-can-arrow-up", + "trash-can", + "trash-arrow-up", + "transgender", + "train-tram", + "train-subway", + "trailer", + "traffic-light", + "tractor", + "tower-observation", + "tower-cell", + "tower-broadcast", + "tornado", + "torii-gate", + "tooth", + "toolbox", + "toilets-portable", + "toilet-portable", + "toilet-paper-slash", + "toilet-paper", + "toilet", + "toggle-off", + "timeline", + "ticket-simple", + "thumbtack-slash", + "thermometer", + "text-width", + "text-slash", + "text-height", + "terminal", + "tents", + "tent-arrows-down", + "tent-arrow-turn-left", + "tent-arrow-left-right", + "tent-arrow-down-to-line", + "tent", + "tenge-sign", + "temperature-three-quarters", + "temperature-quarter", + "temperature-low", + "temperature-high", + "temperature-half", + "temperature-full", + "temperature-empty", + "temperature-arrow-up", + "temperature-arrow-down", + "teeth-open", + "teeth", + "taxi", + "tarp-droplet", + "tarp", + "tape", + "tachograph-digital", + "tablet-screen-button", + "tablet-button", + "table-tennis-paddle-ball", + "table-list", + "table-columns", + "table-cells-row-unlock", + "table-cells-row-lock", + "table-cells-large", + "table-cells-column-lock", + "table-cells", + "syringe", + "synagogue", + "superscript", + "swatchbook", + "sun-plant-wilt", + "suitcase-rolling", + "suitcase-medical", + "suitcase", + "stroopwafel", + "store-slash", + "stopwatch-20", + "stopwatch", + "sterling-sign", + "star-of-david", + "star-half-stroke", + "star-half", + "star-and-crescent", + "stapler", + "stairs", + "staff-snake", + "square-virus", + "square-up-right", + "square-share-nodes", + "square-rss", + "square-root-variable", + "square-poll-vertical", + "square-poll-horizontal", + "square-plus", + "square-phone-flip", + "square-phone", + "square-person-confined", + "square-pen", + "square-parking", + "square-nfi", + "square-h", + "square-full", + "square-envelope", + "square-caret-up", + "square-binary", + "square-caret-down", + "square-caret-right", + "square-caret-left", + "square-arrow-up-right", + "spray-can-sparkles", + "spray-can", + "splotch", + "spider", + "spell-check", + "spaghetti-monster-flying", + "sort-up", + "sort-down", + "socks", + "snowplow", + "snowman", + "smoking", + "smog", + "sleigh", + "skull-crossbones", + "skull", + "sink", + "sim-card", + "signs-post", + "sign-hanging", + "shuttle-space", + "shuffle", + "shrimp", + "shop-slash", + "shop-lock", + "shoe-prints", + "shield-virus", + "shield-heart", + "shield-dog", + "shield-cat", + "shekel-sign", + "sheet-plastic", + "share-nodes", + "shapes", + "section", + "sd-card", + "scroll-torah", + "screwdriver-wrench", + "screwdriver", + "scissors", + "school-lock", + "school-flag", + "school-circle-exclamation", + "school-circle-xmark", + "school-circle-check", + "scale-unbalanced-flip", + "scale-unbalanced", + "scale-balanced", + "satellite-dish", + "satellite", + "sailboat", + "sack-xmark", + "sack-dollar", + "rupiah-sign", + "rupee-sign", + "ruler-horizontal", + "ruler-combined", + "ruble-sign", + "rug", + "rss", + "rotate-left", + "rotate", + "road-spikes", + "road-lock", + "road-circle-xmark", + "road-circle-exclamation", + "road-circle-check", + "road-bridge", + "road-barrier", + "right-long", + "right-left", + "right-from-bracket", + "ribbon", + "retweet", + "republican", + "reply-all", + "rectangle-xmark", + "rectangle-list", + "rectangle-ad", + "ranking-star", + "rainbow", + "radiation", + "qrcode", + "pump-medical", + "prescription-bottle-medical", + "prescription-bottle", + "prescription", + "podcast", + "plus-minus", + "plug-circle-xmark", + "plug-circle-plus", + "plug-circle-minus", + "plug-circle-exclamation", + "plug-circle-check", + "plug-circle-bolt", + "plate-wheat", + "plant-wilt", + "plane-up", + "plane-slash", + "plane-lock", + "plane-circle-xmark", + "plane-circle-exclamation", + "plane-circle-check", + "plane-arrival", + "pizza-slice", + "pills", + "piggy-bank", + "photo-film", + "phone-slash", + "phone-flip", + "peso-sign", + "peseta-sign", + "person-walking-with-cane", + "person-walking-luggage", + "person-walking-dashed-line-arrow-right", + "person-walking-arrow-right", + "person-walking-arrow-loop-left", + "person-walking", + "person-through-window", + "person-swimming", + "person-snowboarding", + "person-skiing-nordic", + "person-skiing", + "person-skating", + "person-shelter", + "person-running", + "person-rifle", + "person-rays", + "person-praying", + "person-military-to-person", + "person-pregnant", + "person-military-rifle", + "person-military-pointing", + "person-hiking", + "person-harassing", + "person-half-dress", + "person-falling-burst", + "person-falling", + "person-drowning", + "person-dress-burst", + "person-dots-from-line", + "person-digging", + "person-circle-xmark", + "person-circle-question", + "person-circle-exclamation", + "person-circle-plus", + "person-circle-minus", + "person-circle-check", + "person-chalkboard", + "person-cane", + "person-burst", + "person-breastfeeding", + "person-booth", + "person-biking", + "person-arrow-up-from-line", + "person-arrow-down-to-line", + "pepper-hot", + "people-roof", + "people-robbery", + "people-pulling", + "people-line", + "people-group", + "people-carry-box", + "pen-ruler", + "pen-clip", + "peace", + "paw", + "paste", + "parachute-box", + "pallet", + "paragraph", + "panorama", + "paintbrush", + "pager", + "outdent", + "oil-well", + "oil-can", + "object-ungroup", + "object-group", + "note-sticky", + "neuter", + "naira-sign", + "mountain-city", + "mountain", + "mound", + "mosquito-net", + "mosquito", + "mosque", + "mortar-pestle", + "monument", + "money-check-dollar", + "money-check", + "money-bills", + "money-bill-wheat", + "money-bill-wave", + "money-bill-trend-up", + "money-bill-transfer", + "money-bill-1-wave", + "money-bill-1", + "mobile-screen-button", + "mobile-screen", + "mobile-retro", + "mobile-button", + "mitten", + "minimize", + "mill-sign", + "microscope", + "microphone-lines-slash", + "microphone-lines", + "meteor", + "message", + "mercury", + "menorah", + "memory", + "maximize", + "mattress-pillow", + "masks-theater", + "mask-ventilator", + "mask-face", + "martini-glass-empty", + "martini-glass-citrus", + "martini-glass", + "mars-stroke-up", + "mars-stroke-right", + "mars-stroke", + "mars-double", + "mars-and-venus-burst", + "mars-and-venus", + "mars", + "map-pin", + "map-location-dot", + "map-location", + "map", + "manat-sign", + "magnifying-glass-plus", + "magnifying-glass-minus", + "magnifying-glass", + "magnifying-glass-dollar", + "magnifying-glass-chart", + "magnifying-glass-arrow-right", + "lungs-virus", + "lungs", + "locust", + "lock-open", + "location-pin-lock", + "location-crosshairs", + "location-arrow", + "litecoin-sign", + "list-ul", + "list-ol", + "list-check", + "lira-sign", + "link-slash", + "lines-leaning", + "life-ring", + "less-than-equal", + "less-than", + "left-right", + "left-long", + "lari-sign", + "laptop-medical", + "laptop-file", + "laptop-code", + "landmark-flag", + "landmark-dome", + "land-mine-on", + "kitchen-set", + "kit-medical", + "kip-sign", + "khanda", + "kaaba", + "jug-detergent", + "jet-fighter-up", + "jet-fighter", + "jedi", + "jar-wheat", + "jar", + "italic", + "infinity", + "indian-rupee-sign", + "indent", + "image-portrait", + "igloo", + "id-card-clip", + "id-card", + "id-badge", + "icicles", + "ice-cream", + "hurricane", + "hryvnia-sign", + "house-user", + "house-tsunami", + "house-signal", + "house-medical-flag", + "house-medical-circle-exclamation", + "house-medical-circle-xmark", + "house-medical-circle-check", + "house-medical", + "house-flood-water-circle-arrow-right", + "house-lock", + "house-laptop", + "house-flood-water", + "house-flag", + "house-fire", + "house-crack", + "house-circle-xmark", + "house-circle-exclamation", + "house-circle-check", + "house-chimney-window", + "house-chimney-user", + "house-chimney-medical", + "house-chimney-crack", + "house-chimney", + "hourglass-half", + "hourglass-end", + "hourglass", + "hotdog", + "hot-tub-person", + "hospital-user", + "horse-head", + "horse", + "holly-berry", + "hockey-puck", + "hill-rockslide", + "hill-avalanche", + "highlighter", + "hexagon-nodes-bolt", + "hexagon-nodes", + "helmet-un", + "helmet-safety", + "helicopter-symbol", + "helicopter", + "heart-pulse", + "heart-crack", + "heart-circle-xmark", + "heart-circle-plus", + "heart-circle-minus", + "heart-circle-exclamation", + "headphones-simple", + "heart-circle-check", + "heart-circle-bolt", + "head-side-virus", + "head-side-mask", + "head-side-cough-slash", + "head-side-cough", + "hat-wizard", + "hat-cowboy-side", + "hat-cowboy", + "hard-drive", + "hanukiah", + "handshake-simple-slash", + "handshake-simple", + "handshake-angle", + "hands-praying", + "hands-holding-circle", + "hands-holding-child", + "hands-holding", + "hands-clapping", + "hands-bubbles", + "hands-bound", + "hands-asl-interpreting", + "handcuffs", + "hand-spock", + "hand-sparkles", + "hand-scissors", + "hand-pointer", + "hand-point-right", + "hand-point-left", + "hand-point-down", + "hand-peace", + "hand-middle-finger", + "hand-lizard", + "hand-holding-medical", + "hand-holding-hand", + "hand-holding-droplet", + "hand-holding-dollar", + "hand-holding", + "hand-fist", + "hand-dots", + "hand-back-fist", + "hamsa", + "gun", + "guitar", + "guarani-sign", + "group-arrows-rotate", + "grip-vertical", + "grip-lines-vertical", + "grip-lines", + "grip", + "greater-than-equal", + "greater-than", + "graduation-cap", + "golf-ball-tee", + "glass-water-droplet", + "glass-water", + "gifts", + "genderless", + "gem", + "gavel", + "gauge-simple-high", + "gauge-simple", + "gauge-high", + "gas-pump", + "futbol", + "frog", + "franc-sign", + "forward-step", + "forward-fast", + "football", + "folder-tree", + "folder-plus", + "folder-minus", + "folder-closed", + "florin-sign", + "floppy-disk", + "flask-vial", + "flag-usa", + "fish-fins", + "fire-flame-simple", + "fire-flame-curved", + "fire-extinguisher", + "fire-burner", + "filter-circle-xmark", + "filter-circle-dollar", + "fill-drip", + "fill", + "file-zipper", + "file-waveform", + "file-video", + "file-signature", + "file-shield", + "file-prescription", + "file-powerpoint", + "file-pen", + "file-medical", + "file-lines", + "file-invoice-dollar", + "file-image", + "file-half-dashed", + "file-fragment", + "file-csv", + "file-code", + "file-circle-xmark", + "file-circle-question", + "file-circle-plus", + "file-circle-minus", + "file-circle-exclamation", + "file-circle-check", + "file-audio", + "file-arrow-up", + "file-arrow-down", + "ferry", + "feather-pointed", + "fax", + "faucet-drip", + "faucet", + "fan", + "face-tired", + "face-surprise", + "face-smile-wink", + "face-smile-beam", + "face-sad-tear", + "face-sad-cry", + "face-rolling-eyes", + "face-meh-blank", + "face-meh", + "face-laugh-wink", + "face-laugh-squint", + "face-laugh-beam", + "face-laugh", + "face-kiss-wink-heart", + "face-kiss-beam", + "face-kiss", + "face-grin-wink", + "face-grin-wide", + "face-grin-tongue-wink", + "face-grin-tongue-squint", + "face-grin-tongue", + "face-grin-tears", + "face-grin-stars", + "face-grin-squint-tears", + "face-grin-squint", + "face-grin-hearts", + "face-grin-beam-sweat", + "face-grin-beam", + "face-grin", + "face-grimace", + "face-frown-open", + "face-frown", + "face-flushed", + "face-dizzy", + "face-angry", + "eye-low-vision", + "eye-dropper", + "explosion", + "euro-sign", + "ethernet", + "equals", + "envelopes-bulk", + "envelope-open-text", + "envelope-open", + "envelope-circle-check", + "ellipsis-vertical", + "ellipsis", + "elevator", + "eject", + "egg", + "earth-oceania", + "earth-europe", + "earth-asia", + "earth-africa", + "ear-listen", + "ear-deaf", + "dungeon", + "drumstick-bite", + "drum", + "dumpster", + "drum-steelpan", + "droplet-slash", + "draw-polygon", + "down-long", + "down-left-and-up-right-to-center", + "dove", + "door-closed", + "dong-sign", + "dolly", + "dog", + "dna", + "divide", + "display", + "disease", + "dice-two", + "dice-three", + "dice-six", + "dice-one", + "dice-four", + "dice-five", + "dice-d6", + "dice-d20", + "diamond-turn-right", + "diagram-successor", + "diagram-project", + "diagram-predecessor", + "diagram-next", + "dharmachakra", + "democrat", + "delete-left", + "cubes-stacked", + "cubes", + "cruzeiro-sign", + "crutch", + "crow", + "crop-simple", + "crop", + "cow", + "couch", + "cookie", + "computer-mouse", + "computer", + "compress", + "compass-drafting", + "compact-disc", + "comment-sms", + "comment-slash", + "comment-nodes", + "comment-medical", + "comment-dots", + "comment-dollar", + "colon-sign", + "code-pull-request", + "code-merge", + "code-fork", + "code-commit", + "clover", + "cloud-sun-rain", + "cloud-sun", + "cloud-showers-water", + "cloud-showers-heavy", + "cloud-rain", + "cloud-moon-rain", + "cloud-moon", + "cloud-meatball", + "cloud-bolt", + "cloud-arrow-down", + "clock-rotate-left", + "clipboard-user", + "clipboard-question", + "clipboard-list", + "clipboard-check", + "clapperboard", + "circle-stop", + "circle-right", + "circle-radiation", + "circle-question", + "circle-plus", + "circle-play", + "circle-pause", + "circle-nodes", + "circle-minus", + "circle-left", + "circle-h", + "circle-dot", + "circle-dollar-to-slot", + "circle-chevron-up", + "circle-chevron-right", + "circle-chevron-left", + "circle-chevron-down", + "circle-arrow-up", + "circle-arrow-right", + "circle-arrow-left", + "circle-arrow-down", + "children", + "child-reaching", + "child-dress", + "child-combatant", + "chevron-right", + "chevron-left", + "chess-rook", + "chess-queen", + "chess-pawn", + "chess-knight", + "chess-king", + "chess-board", + "chess-bishop", + "chess", + "cheese", + "check-to-slot", + "check-double", + "chart-pie", + "chart-line", + "chart-gantt", + "chart-diagram", + "chart-column", + "chart-bar", + "chart-area", + "charging-station", + "champagne-glasses", + "chalkboard-user", + "cent-sign", + "cedi-sign", + "cat", + "cart-flatbed-suitcase", + "cart-flatbed", + "cart-arrow-down", + "carrot", + "caret-right", + "caret-left", + "caravan", + "car-tunnel", + "car-rear", + "car-on", + "car-burst", + "car-battery", + "capsules", + "cannabis", + "candy-cane", + "campground", + "camera-rotate", + "calendar-xmark", + "calendar-plus", + "calendar-minus", + "calendar-day", + "calendar-check", + "cake-candles", + "bus-simple", + "bus", + "burst", + "burger", + "bullhorn", + "building-wheat", + "building-user", + "building-un", + "building-shield", + "building-ngo", + "building-lock", + "building-flag", + "building-columns", + "building-circle-xmark", + "building-circle-exclamation", + "building-circle-check", + "building-circle-arrow-right", + "bugs", + "bug-slash", + "bucket", + "broom-ball", + "broom", + "briefcase-medical", + "bridge-water", + "bridge-lock", + "bridge-circle-xmark", + "bridge-circle-exclamation", + "bridge-circle-check", + "bridge", + "brazilian-real-sign", + "braille", + "bread-slice", + "boxes-stacked", + "boxes-packing", + "box-tissue", + "box-open", + "box-archive", + "box", + "bowling-ball", + "bowl-rice", + "bowl-food", + "bottle-water", + "bottle-droplet", + "bore-hole", + "border-top-left", + "border-all", + "book-tanakh", + "book-skull", + "book-quran", + "book-open-reader", + "book-open", + "book-medical", + "book-journal-whills", + "book-bookmark", + "book-bible", + "book-atlas", + "bong", + "bone", + "bolt-lightning", + "bold", + "blender-phone", + "blender", + "bitcoin-sign", + "biohazard", + "bezier-curve", + "bell-slash", + "bell-concierge", + "beer-mug-empty", + "bed-pulse", + "bed", + "battery-three-quarters", + "battery-quarter", + "battery-half", + "battery-full", + "battery-empty", + "basketball", + "basket-shopping", + "baseball-bat-ball", + "baseball", + "bars-staggered", + "bars-progress", + "bangladeshi-taka-sign", + "bandage", + "ban-smoking", + "ban", + "baht-sign", + "bahai", + "bacterium", + "bacteria", + "bacon", + "backward-step", + "backward-fast", + "baby-carriage", + "austral-sign", + "atom", + "asterisk", + "arrows-up-to-line", + "arrows-up-down-left-right", + "arrows-up-down", + "arrows-turn-to-dots", + "arrows-turn-right", + "arrows-to-eye", + "arrows-to-dot", + "arrows-to-circle", + "arrows-split-up-and-left", + "arrows-spin", + "arrows-rotate", + "arrows-left-right-to-line", + "arrows-left-right", + "arrows-down-to-people", + "arrows-down-to-line", + "arrow-up-z-a", + "arrow-up-wide-short", + "arrow-up-short-wide", + "arrow-up-right-dots", + "arrow-up-long", + "arrow-up-from-water-pump", + "arrow-up-from-ground-water", + "arrow-up-a-z", + "arrow-up-9-1", + "arrow-up-1-9", + "arrow-turn-up", + "arrow-turn-down", + "arrow-trend-up", + "arrow-trend-down", + "arrow-rotate-right", + "arrow-rotate-left", + "arrow-right-to-city", + "arrow-right-to-bracket", + "arrow-right-long", + "arrow-right-from-bracket", + "arrow-right-arrow-left", + "arrow-pointer", + "arrow-left-long", + "arrow-down-up-across-line", + "arrow-down-z-a", + "arrow-down-wide-short", + "arrow-down-up-lock", + "arrow-down-short-wide", + "arrow-down-long", + "arrow-down-a-z", + "arrow-down-9-1", + "arrow-down-1-9", + "archway", + "apple-whole", + "ankh", + "angles-up", + "angles-right", + "angles-left", + "angles-down", + "angle-right", + "angle-left", + "angle-down", + "anchor-lock", + "anchor-circle-xmark", + "anchor-circle-exclamation", + "anchor-circle-check", + "align-right", + "align-left", + "align-justify", + "align-center", + "a", + "9", + "8", + "7", + "6", + "5", + "4", + "3", + "2", + "1", + "0", +]; + +const brandIconValueList = [ + "font-awesome", + "web-awesome", + "github", + "bluesky", + "facebook", + "linkedin", + "discord", + "slack", + "algolia", + "figma", + "youtube", + "apple", + "google", + "pied-piper-hat", + "kickstarter", + "docker", + "instagram", + "tiktok", + "wordpress", + "stripe", + "windows", + "paypal", + "stack-overflow", + "dribbble", + "dropbox", + "squarespace", + "android", + "shopify", + "medium", + "codepen", + "cloudflare", + "airbnb", + "vimeo", + "whatsapp", + "intercom", + "wix", + "line", + "behance", + "openid", + "product-hunt", + "internet-explorer", + "pagelines", + "teamspeak", + "html5", + "telegram", + "pinterest", + "dashcube", + "ideal", + "salesforce", + "readme", + "free-code-camp", + "soundcloud", + "square-twitter", + "accessible-icon", + "visa", + "cc-visa", + "goodreads-g", + "google-play", + "react", + "wikipedia-w", + "square-js", + "square-pinterest", + "python", + "skype", + "linux", + "node", + "rebel", + "etsy", + "discourse", + "amazon", + "glide-g", + "gitlab", + "spotify", + "think-peaks", + "microsoft", + "elementor", + "square-youtube", + "cc-mastercard", + "facebook-messenger", + "atlassian", + "playstation", + "fly", + "meetup", + "twitch", + "waze", + "zhihu", + "yoast", + "yelp", + "yarn", + "yandex-international", + "yandex", + "yammer", + "yahoo", + "y-combinator", + "xing", + "xbox", + "x-twitter", + "wpressr", + "wpforms", + "wpexplorer", + "wpbeginner", + "wordpress-simple", + "wolf-pack-battalion", + "wodu", + "wizards-of-the-coast", + "wirsindhandwerk", + "whmcs", + "weixin", + "weibo", + "weebly", + "webflow", + "watchman-monitoring", + "vuejs", + "vine", + "vimeo-v", + "viber", + "viadeo", + "viacoin", + "vaadin", + "ussunnah", + "usb", + "upwork", + "untappd", + "unsplash", + "unity", + "uniregistry", + "uncharted", + "umbraco", + "uikit", + "ubuntu", + "uber", + "typo3", + "twitter", + "tumblr", + "trello", + "trade-federation", + "threads", + "themeisle", + "themeco", + "the-red-yeti", + "tencent-weibo", + "symfony", + "swift", + "suse", + "supple", + "superpowers", + "stumbleupon-circle", + "stumbleupon", + "studiovinari", + "stubber", + "stripe-s", + "strava", + "sticker-mule", + "steam-symbol", + "steam", + "staylinked", + "stackpath", + "stack-exchange", + "square-xing", + "square-x-twitter", + "square-whatsapp", + "square-web-awesome-stroke", + "square-web-awesome", + "square-vimeo", + "square-viadeo", + "square-upwork", + "square-tumblr", + "square-threads", + "square-steam", + "square-snapchat", + "square-reddit", + "square-pied-piper", + "square-odnoklassniki", + "square-lastfm", + "square-letterboxd", + "square-instagram", + "square-hacker-news", + "square-google-plus", + "square-gitlab", + "square-github", + "git", + "square-git", + "square-font-awesome-stroke", + "square-font-awesome", + "square-facebook", + "square-dribbble", + "square-bluesky", + "square-behance", + "speaker-deck", + "speakap", + "space-awesome", + "sourcetree", + "snapchat", + "slideshare", + "skyatlas", + "sketch", + "sitrox", + "sith", + "sistrix", + "simplybuilt", + "signal-messenger", + "shopware", + "shoelace", + "shirtsinbulk", + "servicestack", + "sellsy", + "sellcast", + "searchengin", + "scribd", + "screenpal", + "schlix", + "safari", + "rust", + "rockrms", + "rocketchat", + "resolving", + "researchgate", + "replyd", + "renren", + "redhat", + "reddit-alien", + "reddit", + "red-river", + "reacteurope", + "ravelry", + "raspberry-pi", + "r-project", + "quinscape", + "quora", + "pushed", + "pixiv", + "pix", + "pinterest-p", + "pied-piper-pp", + "pied-piper-alt", + "pied-piper", + "php", + "phoenix-squadron", + "phoenix-framework", + "phabricator", + "periscope", + "perbyte", + "patreon", + "palfed", + "page4", + "padlet", + "osi", + "orcid", + "optin-monster", + "opera", + "opensuse", + "opencart", + "old-republic", + "odysee", + "odnoklassniki", + "octopus-deploy", + "nutritionix", + "ns8", + "npm", + "node-js", + "nimblr", + "nfc-directional", + "neos", + "napster", + "monero", + "modx", + "mizuni", + "mixer", + "mixcloud", + "mix", + "mintbit", + "microblog", + "meta", + "mendeley", + "megaport", + "medrt", + "medapps", + "mdb", + "maxcdn", + "mastodon", + "markdown", + "mandalorian", + "mailchimp", + "magento", + "lyft", + "linode", + "linkedin-in", + "letterboxd", + "less", + "leanpub", + "lastfm", + "laravel", + "korvue", + "kickstarter-k", + "keycdn", + "keybase", + "kaggle", + "jxl", + "jsfiddle", + "joomla", + "joget", + "jira", + "jenkins", + "jedi-order", + "itunes-note", + "itunes", + "itch-io", + "ioxhost", + "invision", + "instalod", + "imdb", + "hubspot", + "houzz", + "hotjar", + "hornbill", + "hooli", + "hive", + "hire-a-helper", + "hips", + "hashnode", + "hackerrank", + "hacker-news", + "gulp", + "guilded", + "grunt", + "gripfire", + "gratipay", + "google-wallet", + "google-scholar", + "google-plus-g", + "google-plus", + "google-pay", + "google-drive", + "goodreads", + "golang", + "glide", + "gofore", + "gitter", + "gitkraken", + "github-alt", + "git-alt", + "git", + "gg-circle", + "get-pocket", + "galactic-senate", + "galactic-republic", + "fulcrum", + "freebsd", + "foursquare", + "forumbee", + "font-awesome-alt", + "fort-awesome", + "fonticons-fi", + "fonticons", + "flutter", + "flipboard", + "flickr", + "firstdraft", + "first-order-alt", + "first-order", + "firefox-browser", + "firefox", + "files-pinwheel", + "fedora", + "fedex", + "fantasy-flight-games", + "facebook-f", + "expeditedssl", + "evernote", + "ethereum", + "erlang", + "envira", + "empire", + "ember", + "ello", + "edge-legacy", + "edge", + "ebay", + "earlybirds", + "dyalog", + "drupal", + "draft2digital", + "dochub", + "digital-ocean", + "digg", + "diaspora", + "dhl", + "deviantart", + "dev", + "deskpro", + "deploydog", + "delicious", + "deezer", + "debian", + "dart-lang", + "dailymotion", + "d-and-d-beyond", + "d-and-d", + "cuttlefish", + "css3-alt", + "critical-role", + "creative-commons-zero", + "creative-commons-share", + "creative-commons-sampling-plus", + "creative-commons-sampling", + "creative-commons-remix", + "creative-commons-pd", + "creative-commons-nd", + "creative-commons-nc-jp", + "creative-commons-nc-eu", + "creative-commons-nc", + "creative-commons-by", + "creative-commons", + "cpanel", + "cotton-bureau", + "contao", + "connectdevelop", + "confluence", + "codiepie", + "cloudversify", + "cloudsmith", + "cloudscale", + "chromecast", + "chrome", + "centos", + "centercode", + "cc-stripe", + "cc-paypal", + "cc-jcb", + "cc-discover", + "cc-diners-club", + "cc-apple-pay", + "cc-amex", + "cc-amazon-pay", + "canadian-maple-leaf", + "buysellads", + "buy-n-large", + "buromobelexperte", + "buffer", + "btc", + "brave-reverse", + "brave", + "bootstrap", + "bluetooth", + "blogger", + "blackberry", + "black-tie", + "bity", + "bitcoin", + "bitbucket", + "bimobject", + "bilibili", + "battle-net", + "bandcamp", + "aws", + "aviato", + "avianex", + "autoprefixer", + "audible", + "asymmetrik", + "artstation", + "apple-pay", + "apper", + "app-store-ios", + "app-store", + "angular", + "angrycreative", + "angellist", + "amilia", + "amazon-pay", + "alipay", + "affiliatetheme", + "adversal", + "adn", + "accusoft", + "500px", + "42-group", +]; + +export { filledIconValueList, brandIconValueList }; diff --git a/packages/inula2-ui2/library_code/src/components/icon/index.css b/packages/inula2-ui2/library_code/src/components/icon/index.css new file mode 100644 index 00000000..53773131 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/index.css @@ -0,0 +1,54 @@ +.inula-icon { + font-size: 24px; + color: var(--inula-icon-default); +} + +@keyframes icon-spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +.inula-icon-spin { + animation: icon-spin 1.5s linear infinite; + transform-origin: center center; +} + +/* Icon表样式 */ +.inula-icon-table { + /* width: 80%; */ + /* height: 600px; */ + overflow-y: scroll; + /* border: 1px solid #f0f0f0; */ + /* background-color: #fAf8f9; */ + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + align-items: flex-start; + padding: 20px; + gap:20px; +} + +.inula-icon-item { + display: flex; + flex-direction: column; + background-color: #fff; + border-radius: 1px solid #f0f0f0; + height: 90px; + width: 10%; + padding: 20px; + justify-content: flex-start; + gap: 20px; + border-radius: 8px; +} + +.inula-icon-item:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + transform: scale(1.01); + transition: all 0.3s ease-in-out; + cursor: pointer; +} + +.inula-icon-item-text { + font-size: 16px; + font-family: "宋体"; +} \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/icon/index.jsx b/packages/inula2-ui2/library_code/src/components/icon/index.jsx new file mode 100644 index 00000000..1e592a5c --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/icon/index.jsx @@ -0,0 +1,65 @@ +import "./index.css"; + +const Icon = ({ + value, + // theme = "outline", // outline, filled, twoTone + theme = "filled", // filled, brand + size, //number + color, //string + rotate, //number + spin = false, + style, + onClick, + ...rest +}) => { + // const iconTheme = (theme) => { + // switch (theme) { + // case "filled": + // return "fas"; + // case "twoTone": + // return "fad"; + // default: + // return "fal"; + // } + // }; + const iconTheme = (theme) => { + switch (theme) { + case "filled": + return "fas"; + case "brand": + return "fab"; + default: + alert(`Invalid theme: ${theme}`); + return ""; + } + }; + + const classNames = [ + "inula-icon", + iconTheme(theme), + value ? `fa-${value}` : "", + spin ? "inula-icon-spin" : "" // 新增动画类 + ] + .filter(Boolean) + .join(" "); + + const styles = { + ...style, + ...(rotate && { transform: `rotate(${rotate}deg)` }), + fontSize: `${size}px`, + color: `${color}`, + } + + // console.log("Icon props:", rest); + + return ( + + ); +}; + +export default Icon; diff --git a/packages/inula2-ui2/library_code/src/components/input/demo.jsx b/packages/inula2-ui2/library_code/src/components/input/demo.jsx new file mode 100644 index 00000000..ae84b9ff --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demo.jsx @@ -0,0 +1,70 @@ +// import Button from './index.jsx'; +import demo1 from './demos/demo1.jsx'; +import demo2 from './demos/demo2.jsx'; +import demo3 from './demos/demo3.jsx'; +import demo4 from './demos/demo4.jsx'; +import demo5 from './demos/demo5.jsx'; +import demo6 from './demos/demo6.jsx'; +import demo7 from './demos/demo7.jsx'; +import demo8 from './demos/demo8.jsx'; +import demo9 from './demos/demo9.jsx'; + +function InputDemo() { + return ( +
+
+
+

基础输入框

+
演示基础输入框的用法。
+
+
+
+

不同形态

+
演示不同形态的输入框。
+
+
+
+

前后缀

+
演示带前后缀的输入框。
+
+
+
+

密码框

+
+
+
+
+

清除按钮

+
演示带清除按钮的输入框。
+
+
+
+ +
+
+

Textarea 自动调整高度

+
演示 textarea 的自动调整高度功能。
+
+
+
+

不同尺寸

+
+
+
+
+

字数统计

+
演示带字数统计的输入框。
+
+
+
+

状态

+
+
+
+
+ +
+ ); +} + +export default InputDemo; diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo1.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo1.jsx new file mode 100644 index 00000000..7089dc2b --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo1.jsx @@ -0,0 +1,32 @@ +import Input from "../index.jsx"; +import Tag from "../../tag/index.jsx" + +function Demo1() { + let value = ""; + + function handleInput(e) { + value = e.target.value; + } + return ( +
+
+ 非受控组件 + +
+
+ 受控组件 + +
+
+ 不带默认值 + +
+
+ 带默认值 + +
+
+ ); +} + +export default Demo1; diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo2.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo2.jsx new file mode 100644 index 00000000..e29a5dae --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo2.jsx @@ -0,0 +1,43 @@ +import Input from "../index.jsx"; +import Tag from "../../tag/index.jsx" + +function Demo2() { + + return ( +
+
+ input + + + +
+
+ textarea + + + +
+
+ ); + +} + +export default Demo2; diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo3.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo3.jsx new file mode 100644 index 00000000..86e75a57 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo3.jsx @@ -0,0 +1,55 @@ +import Input from "../index.jsx"; +import Tag from "../../tag/index.jsx" + +function Demo3() { + + return ( +
+
+ input + + + + + +
+
+ textarea + + + + + +
+ +
+ ); + +} + +export default Demo3; diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo4.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo4.jsx new file mode 100644 index 00000000..7b207c7b --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo4.jsx @@ -0,0 +1,13 @@ +import Input from "../index.jsx"; + +function Demo4() { + + return ( +
+ +
+ ) + +} + +export default Demo4; diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo5.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo5.jsx new file mode 100644 index 00000000..6b9d2b2b --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo5.jsx @@ -0,0 +1,36 @@ +import Input from "../index.jsx"; + +function Demo5() { + let value = "这是一个输入框"; + + function handleInput(e) { + value = e.target.value; + } + + return ( +
+ + + +
+ ); +} + +export default Demo5; diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo6.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo6.jsx new file mode 100644 index 00000000..7e2e305d --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo6.jsx @@ -0,0 +1,27 @@ +import Input from "../index.jsx"; + +function Demo6() { + let value = ""; + + function handleInput(e) { + value = e.target.value; + } + + return ( +
+ + +
+ ); +} + +export default Demo6; diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo7.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo7.jsx new file mode 100644 index 00000000..18fe793b --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo7.jsx @@ -0,0 +1,36 @@ +import Input from '../index.jsx'; +import Tag from "../../tag/index.jsx" + +const Demo7 = () => { + return ( +
+
+ 基础 textarea + +
+
+ 自动调整高度(布尔值) + +
+ +
+ 自定义最小最大行数 + +
+ +
+ ); +}; + +export default Demo7; diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo8.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo8.jsx new file mode 100644 index 00000000..e6da62d0 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo8.jsx @@ -0,0 +1,35 @@ + +import Input from '../index.jsx'; + +const Demo8 = () => { + + let value = ""; + + function handleInput(e) { + console.log("handleInput111", e.target.value); + value = e.target.value; + } + return ( +
+ + + +
+ ); +} + +export default Demo8; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/input/demos/demo9.jsx b/packages/inula2-ui2/library_code/src/components/input/demos/demo9.jsx new file mode 100644 index 00000000..953f0f5a --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/demos/demo9.jsx @@ -0,0 +1,14 @@ +import Input from '../index.jsx'; + +let password = ''; + +function handlePasswordInput(e) { + password = e.target.value; +} + + +const Demo9 = () => { + return +} + +export default Demo9; \ No newline at end of file diff --git a/packages/inula2-ui2/library_code/src/components/input/index.css b/packages/inula2-ui2/library_code/src/components/input/index.css new file mode 100644 index 00000000..fbccf1c9 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/index.css @@ -0,0 +1,651 @@ +@import '../../colors.css'; + +/* 输入框外层包装器 */ +.inula-input-affix-wrapper { + position: relative; + display: inline-flex; + align-items: center; + width: 100%; + color: var(--inula-color-primary-text); + background: var(--inula-color-default-bg); + border: 1px solid var(--inula-color-default-border); + border-radius: 4px; + outline: none; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + box-sizing: border-box; + /* overflow: hidden; */ +} + +.inula-input-affix-wrapper:hover { + border-color: var(--inula-color-primary-hover); + box-shadow: 0 2px 8px rgba(22, 119, 255, 0.1); +} + +.inula-input-affix-wrapper:focus-within { + border-color: var(--inula-color-primary); + box-shadow: 0 0 0 3px rgba(22, 119, 255, 0.1); +} + +/* 输入框本体 */ +.inula-input { + flex: 1 1 auto; + /* 关键:允许在有清除/统计/后缀时可收缩,避免把右侧元素挤没 */ + min-width: 0; + /* 不强制占满 100%,交给 flex 分配剩余空间 */ + width: auto; + font-size: 14px; + line-height: 1.5; + background: transparent; + border: none; + outline: none; + height: 40px; + padding: 0 16px; + color: var(--inula-color-primary-text); + transition: all 0.3s ease; + border-radius: 4px; +} + +.inula-input::placeholder { + color: #999; + font-size: 14px; +} + +/* 尺寸变体 */ +.inula-input-large { + height: 40px; + font-size: 16px; + padding: 0 20px; +} + +.inula-input-large::placeholder { + font-size: 16px; +} + +.inula-input-default, +.inula-input-medium { + height: 32px; + font-size: 14px; + padding: 0 16px; +} + +.inula-input-small { + height: 24px; + font-size: 13px; + padding: 0 12px; +} + +.inula-input-small::placeholder { + font-size: 13px; +} + +/* 形态变体 - 支持Form传递的CSS变量 */ +.inula-input-outlined { + background: var(--inula-color-default-bg); +} + +.inula-input-filled { + background: var(--inula-form-variant-bg, var(--inula-variant-filled-bg)); + border: 1px solid var(--inula-form-variant-border, transparent); + box-shadow: none !important; +} + +/* 让 textarea 与 input 的 filled 形态一致:把样式下沉到外层包装器 */ +.inula-input-affix-wrapper:has(.inula-input-filled) { + background: var(--inula-form-variant-bg, var(--inula-variant-filled-bg)); + border-color: var(--inula-form-variant-border, transparent); + box-shadow: none !important; +} + +/* borderless 形态的特殊处理 */ +.inula-input-affix-wrapper-borderless { + border: var(--inula-form-variant-border, none) !important; + box-shadow: none !important; + background: var(--inula-form-variant-bg, transparent); +} + +.inula-input-affix-wrapper-borderless:hover { + border: var(--inula-form-variant-border, none) !important; + box-shadow: none !important; + background: var(--inula-form-variant-hover-bg, var(--inula-variant-borderless-hover-bg)); +} + +.inula-input-affix-wrapper-borderless:focus-within { + border: var(--inula-form-variant-border, none) !important; + box-shadow: none !important; + background: var(--inula-form-variant-focus-bg, var(--inula-variant-borderless-focus-bg)); +} + +/* borderless 形态禁用状态 */ +.inula-input-affix-wrapper-borderless.inula-input-disabled:hover, +.inula-input-affix-wrapper-borderless:has(.inula-input:disabled):hover { + border: none !important; + box-shadow: none !important; + background: var(--inula-color-disabled-bg); + border-radius: 4px; +} + +.inula-input-affix-wrapper-borderless.inula-input-disabled:focus-within, +.inula-input-affix-wrapper-borderless:has(.inula-input:disabled):focus-within { + border: none !important; + box-shadow: none !important; + background: var(--inula-color-disabled-bg); + border-radius: 4px; +} + +.inula-input-filled:hover { + background: var(--inula-variant-filled-hover-bg); + box-shadow: none !important; +} +.inula-input-affix-wrapper:has(.inula-input-filled):hover { + background: var(--inula-variant-filled-hover-bg); + box-shadow: none !important; +} + +.inula-input-filled:focus-within { + background: var(--inula-variant-filled-focus-bg); + border: 1px solid var(--inula-color-primary); + box-shadow: 0 0 0 3px rgba(22, 119, 255, 0.1); +} +.inula-input-affix-wrapper:has(.inula-input-filled):focus-within { + background: var(--inula-variant-filled-focus-bg); + box-shadow: 0 0 0 3px rgba(22, 119, 255, 0.1); +} + +/* filled 形态禁用状态 */ +.inula-input-affix-wrapper.inula-input-disabled .inula-input-filled:hover, +.inula-input-affix-wrapper:has(.inula-input:disabled) .inula-input-filled:hover { + background: var(--inula-color-disabled-bg); +} + +.inula-input-affix-wrapper.inula-input-disabled .inula-input-filled:focus-within, +.inula-input-affix-wrapper:has(.inula-input:disabled) .inula-input-filled:focus-within { + background: var(--inula-color-disabled-bg); +} + +.inula-input-borderless { + background: transparent; + border: none; + box-shadow: none; +} + +.inula-input-borderless:hover { + background: transparent; + border: none; + box-shadow: none; +} + +.inula-input-borderless:focus-within { + background: transparent; + border: none; + box-shadow: none; +} + +/* borderless 形态禁用状态 */ +.inula-input-affix-wrapper.inula-input-disabled .inula-input-borderless:hover, +.inula-input-affix-wrapper:has(.inula-input:disabled) .inula-input-borderless:hover { + background: transparent; + border: none; + box-shadow: none; +} + +.inula-input-affix-wrapper.inula-input-disabled .inula-input-borderless:focus-within, +.inula-input-affix-wrapper:has(.inula-input:disabled) .inula-input-borderless:focus-within { + background: transparent; + border: none; + box-shadow: none; +} + +/* .inula-input-underlined { + background: transparent; + border: none; + border-radius: 0; +} */ + +.inula-input-underlined:hover { + border-bottom-color: var(--inula-color-primary-hover); +} + +.inula-input-underlined:focus-within { + border-bottom-color: var(--inula-color-primary); + box-shadow: none; +} + +/* underlined 形态的特殊处理 - 支持Form传递的CSS变量 */ +.inula-input-affix-wrapper-underlined { + border: var(--inula-form-variant-border, none) !important; + border-bottom: var(--inula-form-variant-bottom-border, 1px solid var(--inula-variant-underlined-border)) !important; + border-radius: 0 !important; + box-shadow: none !important; + background: var(--inula-form-variant-bg, transparent); +} + +.inula-input-affix-wrapper-underlined:hover { + border: var(--inula-form-variant-border, none) !important; + border-bottom: var(--inula-form-variant-bottom-hover-border, 1px solid var(--inula-variant-underlined-hover-border)) !important; + box-shadow: none !important; + background: var(--inula-form-variant-hover-bg, transparent); +} + +.inula-input-affix-wrapper-underlined:focus-within { + border: var(--inula-form-variant-border, none) !important; + border-bottom: var(--inula-form-variant-bottom-focus-border, 1px solid var(--inula-variant-underlined-focus-border)) !important; + box-shadow: none !important; + background: var(--inula-form-variant-focus-bg, transparent); +} + +/* underlined 形态禁用状态 */ +.inula-input-affix-wrapper-underlined.inula-input-disabled:hover, +.inula-input-affix-wrapper-underlined:has(.inula-input:disabled):hover { + border: none !important; + border-bottom: 2px solid var(--inula-color-disabled-border) !important; + box-shadow: none !important; +} + +.inula-input-affix-wrapper-underlined.inula-input-disabled:focus-within, +.inula-input-affix-wrapper-underlined:has(.inula-input:disabled):focus-within { + border: none !important; + border-bottom: 2px solid var(--inula-color-disabled-border) !important; + box-shadow: none !important; +} + +/* 禁用状态 */ +.inula-input-disabled, +.inula-input:disabled { + background: var(--inula-color-disabled-bg); + color: var(--inula-color-disabled-text); + border-color: var(--inula-color-disabled-border); + cursor: not-allowed; + opacity: 1; +} + +/* 禁用状态下禁用hover效果 */ +.inula-input-affix-wrapper.inula-input-disabled:hover, +.inula-input-affix-wrapper:has(.inula-input:disabled):hover { + border-color: var(--inula-color-disabled-border); + box-shadow: none; +} + +.inula-input-disabled:hover, +.inula-input:disabled:hover { + border-color: var(--inula-color-disabled-border); + box-shadow: none; +} + +.inula-input-disabled:focus-within, +.inula-input:disabled:focus-within { + border-color: var(--inula-color-disabled-border); + box-shadow: none; +} + +/* 禁用状态下禁用focus效果 */ +.inula-input-affix-wrapper.inula-input-disabled:focus-within, +.inula-input-affix-wrapper:has(.inula-input:disabled):focus-within { + border-color: var(--inula-color-disabled-border); + box-shadow: none; +} + +/* 输入框包装器 */ +.inula-input-wrapper { + display: inline-flex; + align-items: stretch; + vertical-align: middle; + width: 100%; + border-radius: 4px; +} + +/* 前后缀标签 */ +.inula-input-addon { + display: inline-flex; + align-items: center; + background: #f8f9fa; + color: #666; + font-size: 14px; + font-weight: 500; + padding: 0 16px; + border: 1px solid var(--inula-color-default-border); + border-radius: 8px; + white-space: nowrap; + transition: all 0.3s ease; +} + +.inula-input-addon:hover { + background: #f0f2f5; + border-color: var(--inula-color-primary-hover); +} + +.inula-input-addon-before { + border-right: none; + border-radius: 8px 0 0 8px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.inula-input-addon-after { + border-left: none; + border-radius: 0 8px 8px 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.inula-input-has-addon-before .inula-input-affix-wrapper { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.inula-input-has-addon-after .inula-input-affix-wrapper { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +/* 尺寸适配 */ +.inula-input-wrapper-large .inula-input-addon { + font-size: 16px; + padding: 0 20px; + min-height: 48px; +} + +.inula-input-wrapper-small .inula-input-addon { + font-size: 13px; + padding: 0 12px; + min-height: 32px; +} + +/* 补充 medium 尺寸别名以便与 Form 的 size 对齐 */ +.inula-input-wrapper-medium .inula-input-addon { + font-size: 14px; + padding: 0 16px; + min-height: 40px; +} + +/* 字数统计 */ +.inula-input-count { + display: inline-flex; + align-items: center; + margin-left: 8px; + color: #999; + font-size: 12px; + user-select: none; + white-space: nowrap; + font-weight: 400; +} + +.inula-input-has-count { + /* 为右侧预留最小空间,避免计数器被挤压隐藏 */ + padding-right: 0; +} + +.inula-input-count-inside { + /* position: absolute; */ + margin-right: 12px; + /* top: 50%; + transform: translateY(-50%); */ + color: #999; + font-size: 12px; + background: transparent; + pointer-events: none; + user-select: none; + font-weight: 400; + display: flex; + align-items: center; + gap: 4px; +} + +/* 清除按钮样式 */ +.inula-input-clear { + /* position: absolute; */ + margin-right: 12px; + /* top: 50%; + transform: translateY(-50%); */ + display: flex; + align-items: center; + justify-content: center; + width: 16px; + height: 16px; + border-radius: 50%; + background: rgba(0, 0, 0, 0.1); + color: #666; + cursor: pointer; + transition: all 0.2s ease; + opacity: 0; + pointer-events: none; +} + +.inula-input-affix-wrapper:hover .inula-input-clear { + opacity: 1; + pointer-events: auto; +} + +.inula-input-clear:hover { + background: rgba(0, 0, 0, 0.2); + color: #333; +} + + + + +/* 响应式设计 */ +@media (max-width: 768px) { + .inula-input { + font-size: 16px; /* 防止iOS缩放 */ + border-radius: 4px; + } + + .inula-input-large { + font-size: 16px; + border-radius: 4px; + } + + .inula-input-small { + font-size: 16px; + border-radius: 4px; + } +} + +/* 深色模式支持 */ +@media (prefers-color-scheme: dark) { + .inula-input-affix-wrapper { + background: #1f1f1f; + border-color: #434343; + color: #fff; + } + + .inula-input { + color: #fff; + } + + .inula-input::placeholder { + color: #666; + } + + .inula-input-filled { + background: #262626; + } + + .inula-input-filled:hover { + background: #303030; + } + + .inula-input-addon { + background: #262626; + color: #ccc; + border-color: #434343; + } + + .inula-input-addon:hover { + background: #303030; + } +} + +/* textarea 样式 */ +.inula-textarea { + flex: 1; + width: 100%; + font-size: 14px; + line-height: 1.5; + background: transparent; + border: none; + outline: none; + padding: 10px 16px; + color: var(--inula-color-primary-text); + transition: all 0.3s ease; + font-family: inherit; + resize: vertical; +} + +.inula-textarea, textarea { + height: auto; + box-sizing: border-box; +} + +.inula-textarea::placeholder { + color: #999; + font-size: 14px; +} + +/* textarea 尺寸变体 */ +.inula-textarea.inula-input-large { + font-size: 16px; + padding: 12px 20px; +} + +.inula-textarea.inula-input-large::placeholder { + font-size: 16px; +} + +.inula-textarea.inula-input-default { + font-size: 14px; + padding: 10px 16px; +} + +.inula-textarea.inula-input-small { + font-size: 13px; + padding: 8px 12px; +} + +.inula-textarea.inula-input-small::placeholder { + font-size: 13px; +} + +/* textarea 自动调整高度样式 */ +.inula-textarea.inula-input-auto-size { + resize: none; + overflow: auto; + transition: height 0.3s ease; +} + +/* textarea 禁用状态 */ +.inula-textarea:disabled { + background: var(--inula-color-disabled-bg); + color: var(--inula-color-disabled-text); + cursor: not-allowed; +} + +/* textarea 聚焦状态 */ +.inula-textarea:focus { + outline: none; +} + +/* textarea 响应式设计 */ +@media (max-width: 768px) { + .inula-textarea { + font-size: 16px; /* 防止iOS缩放 */ + } + + .inula-textarea.inula-input-large { + font-size: 16px; + } + + .inula-textarea.inula-input-small { + font-size: 16px; + } +} + +/* 深色模式下的 textarea */ +@media (prefers-color-scheme: dark) { + .inula-textarea { + color: #fff; + } + + .inula-textarea::placeholder { + color: #666; + } +} + +/* 滚动条美化 */ +.inula-input, +.inula-textarea { + scrollbar-width: thin; + scrollbar-color: var(--inula-select-disabled-text); +} + +.inula-input::-webkit-scrollbar, +.inula-textarea::-webkit-scrollbar { + width: 8px; + height: 8px; + background: transparent; + border-radius: 8px; +} + +.inula-input::-webkit-scrollbar-thumb, +.inula-textarea::-webkit-scrollbar-thumb { + background: #b3b3b3; + border-radius: 8px; + transition: background 0.3s; +} + +.inula-input::-webkit-scrollbar-thumb:hover, +.inula-textarea::-webkit-scrollbar-thumb:hover { + background: #888; +} + +.inula-input::-webkit-scrollbar-corner, +.inula-textarea::-webkit-scrollbar-corner { + background: transparent; +} + +@media (prefers-color-scheme: dark) { + .inula-input, + .inula-textarea { + scrollbar-color: #444 transparent; + } + .inula-input::-webkit-scrollbar, + .inula-textarea::-webkit-scrollbar { + background: transparent; + } + .inula-input::-webkit-scrollbar-thumb, + .inula-textarea::-webkit-scrollbar-thumb { + background: #444; + } + .inula-input::-webkit-scrollbar-thumb:hover, + .inula-textarea::-webkit-scrollbar-thumb:hover { + background: #888; + } + .inula-input::-webkit-scrollbar-corner, + .inula-textarea::-webkit-scrollbar-corner { + background: transparent; + } +} + +/* error 状态 */ +.inula-input-error, +.inula-input-affix-wrapper.inula-input-error { + border-color: #ff4d4f !important; + box-shadow: 0 0 0 2px rgba(255,77,79,0.1) !important; +} +.inula-input-error:focus, +.inula-input-affix-wrapper.inula-input-error:focus-within { + border-color: #ff4d4f !important; + box-shadow: 0 0 0 3px rgba(255,77,79,0.15) !important; +} + +/* warning 状态 */ +.inula-input-warning, +.inula-input-affix-wrapper.inula-input-warning { + border-color: #faad14 !important; + box-shadow: 0 0 0 2px rgba(250,173,20,0.1) !important; +} +.inula-input-warning:focus, +.inula-input-affix-wrapper.inula-input-warning:focus-within { + border-color: #faad14 !important; + box-shadow: 0 0 0 3px rgba(250,173,20,0.15) !important; +} diff --git a/packages/inula2-ui2/library_code/src/components/input/index.jsx b/packages/inula2-ui2/library_code/src/components/input/index.jsx new file mode 100644 index 00000000..2bee6fa7 --- /dev/null +++ b/packages/inula2-ui2/library_code/src/components/input/index.jsx @@ -0,0 +1,273 @@ +import "./index.css"; +import Icon from '../icon'; + +/** + * 通用 Input 输入框组件 + * 支持受控/非受控、前后缀、数字统计、禁用、尺寸、形态等 + * openinula2.0 响应式兼容 + */ +const Input = ({ + value, // 受控模式下输入值 + defaultValue = "", // 非受控模式下初始值 + allowClear = false, // 是否显示清除按钮 + onInput, // 输入事件 + onChange, // 变更事件 + disabled = false, // 是否禁用 + placeholder = "", // 占位符 + type = "text", // 输入类型 + className = "", // 自定义类名 + style = {}, // 自定义样式 + size = "default", // 输入框尺寸 large/default/small + variant = "outlined", // 形态 outlined/filled/borderless/underlined + addonBefore, // 前置标签 + addonAfter, // 后置标签 + showCount = false, // 是否显示字数统计 + maxLength = 5000, // 最大长度 + autoSize = false, // 自动调整大小,可以是布尔值或对象 { minRows: 2, maxRows: 6 } + status, // 新增:输入框状态 error/warning + ...rest +}) => { + let innerValue = value !== undefined ? value : defaultValue; + let count = innerValue.length; + let showPassword = false; // 密码可见性响应式变量 + + // 处理 autoSize 配置 + const getAutoSizeConfig = () => { + if (!autoSize) return null; + + if (autoSize === true) { + return { unlimited: true }; + } + + if (typeof autoSize === 'object') { + return { + minRows: autoSize.minRows || 2, + maxRows: autoSize.maxRows || 6 + }; + } + + return null; + }; + + const autoSizeConfig = getAutoSizeConfig(); + const isTextarea = type === 'textarea'; + + // 兼容性查找:从任意子节点向上查找 .inula-input-affix-wrapper(不依赖 Element.closest) + const findAffixWrapper = (startNode) => { + let node = startNode; + // 仅在存在且是元素节点时向上遍历 + while (node && node !== document) { + if (node.classList && node.classList.contains('inula-input-affix-wrapper')) { + return node; + } + node = node.parentNode; + } + return null; + }; + + // 计算 textarea 的样式 + const getTextareaStyle = () => { + if (!isTextarea || !autoSizeConfig) return {}; + if (autoSizeConfig.unlimited) { + return { + resize: 'none', + overflow: 'auto' + }; + } + const lineHeight = size === 'large' ? 24 : size === 'small' ? 18 : 20; + const padding = size === 'large' ? 12 : size === 'small' ? 8 : 10; + const borderWidth = 1; + const minHeight = autoSizeConfig.minRows * lineHeight + padding * 2 + borderWidth * 2; + const maxHeight = autoSizeConfig.maxRows * lineHeight + padding * 2 + borderWidth * 2; + return { + minHeight: `${minHeight}px`, + maxHeight: `${maxHeight}px`, + resize: 'none', + overflow: 'auto' + }; + }; + + // 自动调整 textarea 高度的函数 + const adjustTextareaHeight = (element) => { + if (!isTextarea || !autoSizeConfig || !element) return; + element.style.height = 'auto'; + if (autoSizeConfig.unlimited) { + element.style.height = `${element.scrollHeight}px`; + return; + } + const lineHeight = size === 'large' ? 24 : size === 'small' ? 18 : 20; + const padding = size === 'large' ? 12 : size === 'small' ? 8 : 10; + const borderWidth = 1; + const minHeight = autoSizeConfig.minRows * lineHeight + padding * 2 + borderWidth * 2; + const maxHeight = autoSizeConfig.maxRows * lineHeight + padding * 2 + borderWidth * 2; + const scrollHeight = element.scrollHeight; + const newHeight = Math.max(minHeight, Math.min(scrollHeight, maxHeight)); + element.style.height = `${newHeight}px`; + }; + + // 事件处理,自动调用父组件传递的 onInput/onChange + const handleInput = (e) => { + if (value !== undefined) { + // 受控:更新统计基于当前输入值 + count = (e && e.target ? e.target.value.length : 0); + onInput && onInput(e); + onChange && onChange(e); + } else { + // 非受控:同步内部值并更新统计 + innerValue = e.target.value; + count = innerValue.length; + onInput && onInput(e); + onChange && onChange(e.target.value); + } + + // 如果是 textarea 且启用了 autoSize,调整高度 + if (isTextarea && autoSizeConfig) { + adjustTextareaHeight(e.target); + } + } + + const handleClear = (e) => { + // 区分受控和非受控模式 + if (value !== undefined) { + // 受控模式:只调用回调,不修改内部状态 + count = 0; + onChange && onChange(""); + onInput && onInput({ target: { value: "" } }); + } else { + // 非受控模式:修改内部状态并调用回调 + innerValue = ""; + count = 0; + onChange && onChange(""); + onInput && onInput({ target: { value: "" } }); + } + + // 无 ref 方案:从事件 target 向上遍历拿到包装器,再定位到对应的 input/textarea + const wrapper = e && e.target ? findAffixWrapper(e.target) : null; + const el = wrapper ? wrapper.querySelector(isTextarea ? 'textarea' : 'input') : null; + if (el) { + // 立即同步清空,避免外部受控延迟导致的视觉滞后 + try { el.value = ""; } catch (_) {} + if (isTextarea && autoSizeConfig) { + adjustTextareaHeight(el); + } + try { el.focus(); } catch (_) {} + } + } + + // 密码显示/隐藏切换 + const handleTogglePassword = () => { + console.log("handleTogglePassword", showPassword); + showPassword = !showPassword; + }; + + // 拼接输入框样式类名 + const inputClassNames = [ + "inula-input", + `inula-input-${size}`, + `inula-input-${variant}`, + showCount ? "inula-input-has-count" : "", + allowClear ? "inula-input-has-clear" : "", + disabled ? "inula-input-disabled" : "", + status ? `inula-input-${status}` : "", + isTextarea ? "inula-textarea" : "", + autoSizeConfig ? "inula-input-auto-size" : "", + className, + ] + .filter(Boolean) + .join(" "); + + // 拼接外层包裹样式类名 + const wrapperClassNames = [ + "inula-input-wrapper", + addonBefore ? "inula-input-has-addon-before" : "", + addonAfter ? "inula-input-has-addon-after" : "", + `inula-input-wrapper-${size}`, + autoSizeConfig ? "inula-input-wrapper-auto-size" : "", + ] + .filter(Boolean) + .join(" "); + + // 拼接外层包装器样式类名 + const affixWrapperClassNames = [ + "inula-input-affix-wrapper", + variant === "borderless" ? "inula-input-affix-wrapper-borderless" : "", + variant === "underlined" ? "inula-input-affix-wrapper-underlined" : "", + status ? `inula-input-${status}` : "", + autoSizeConfig ? "inula-input-affix-wrapper-auto-size" : "", + ] + .filter(Boolean) + .join(" "); + + // 不让 rest 里的 className 覆盖 inputClassNames + // const { className: _ignore, ...restProps } = rest; + + // 渲染 + return ( + + {/* 前置标签 */} + {addonBefore && ( + + {addonBefore} + + )} + + {/* 输入框本体,受控/非受控兼容 */} + {isTextarea ? ( +