From 26fce3838ce7a850a0bd4f34132859c56f09f6b1 Mon Sep 17 00:00:00 2001 From: glennliao Date: Wed, 17 Jan 2024 00:53:23 +0800 Subject: [PATCH] =?UTF-8?q?##=200.16.0:=20home=20=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=88=90=E5=8F=AF=E7=AA=97=E5=8F=A3=E6=89=93?= =?UTF-8?q?=E5=BC=80(desktop=E6=A8=A1=E5=BC=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/inits/table.go | 3 + ui/components.d.ts | 5 + ui/package.json | 5 + ui/pnpm-lock.yaml | 652 +++++++++++++++++- ui/src/App.vue | 103 +-- ui/src/layout/index.vue | 173 +++++ ui/src/pages/desktop/components/EditModal.vue | 88 +++ ui/src/pages/desktop/components/TitleIcon.vue | 28 + .../pages/desktop/components/Window/index.vue | 100 +++ ui/src/pages/desktop/index.vue | 180 +++++ ui/src/pages/desktop/useAppList.ts | 41 ++ ui/src/pages/desktop/useDesktop.ts | 131 ++++ ui/src/router/index.ts | 39 +- ui/src/svg/car.svg | 1 - ui/src/views/home/components/EditModal.vue | 55 -- ui/src/views/home/directive.ts | 177 ----- ui/src/views/home/index.vue | 171 ----- ui/src/views/home/types.ts | 5 - ui/src/views/home/win.vue | 26 - 19 files changed, 1401 insertions(+), 582 deletions(-) create mode 100644 ui/src/layout/index.vue create mode 100644 ui/src/pages/desktop/components/EditModal.vue create mode 100644 ui/src/pages/desktop/components/TitleIcon.vue create mode 100644 ui/src/pages/desktop/components/Window/index.vue create mode 100644 ui/src/pages/desktop/index.vue create mode 100644 ui/src/pages/desktop/useAppList.ts create mode 100644 ui/src/pages/desktop/useDesktop.ts delete mode 100644 ui/src/svg/car.svg delete mode 100644 ui/src/views/home/components/EditModal.vue delete mode 100644 ui/src/views/home/directive.ts delete mode 100644 ui/src/views/home/index.vue delete mode 100644 ui/src/views/home/types.ts delete mode 100644 ui/src/views/home/win.vue diff --git a/app/inits/table.go b/app/inits/table.go index e8e0a8d..6dd4a5c 100644 --- a/app/inits/table.go +++ b/app/inits/table.go @@ -139,6 +139,9 @@ type ( Remark string `ddl:"size:1024;comment:备注"` From string `ddl:"size:32;comment:来源"` UserId string `ddl:"size:128;comment:标题"` + OpenType string `ddl:"size:32;comment:打开方式"` + OpenParam string `ddl:"type:json;comment:打开参数"` + Sorts int32 Created Updated Deleted diff --git a/ui/components.d.ts b/ui/components.d.ts index d7e8a12..e74a918 100644 --- a/ui/components.d.ts +++ b/ui/components.d.ts @@ -9,12 +9,14 @@ declare module 'vue' { export interface GlobalComponents { AAlert: typeof import('ant-design-vue/es')['Alert'] ABadge: typeof import('ant-design-vue/es')['Badge'] + ABadgeRibbon: typeof import('ant-design-vue/es')['BadgeRibbon'] ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb'] ABreadcrumbItem: typeof import('ant-design-vue/es')['BreadcrumbItem'] AButton: typeof import('ant-design-vue/es')['Button'] ACard: typeof import('ant-design-vue/es')['Card'] ACheckableTag: typeof import('ant-design-vue/es')['CheckableTag'] ACol: typeof import('ant-design-vue/es')['Col'] + AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider'] ADropdown: typeof import('ant-design-vue/es')['Dropdown'] ADropdownButton: typeof import('ant-design-vue/es')['DropdownButton'] AEmpty: typeof import('ant-design-vue/es')['Empty'] @@ -23,6 +25,7 @@ declare module 'vue' { AForm: typeof import('ant-design-vue/es')['Form'] AFormItem: typeof import('ant-design-vue/es')['FormItem'] AInput: typeof import('ant-design-vue/es')['Input'] + AInputNumber: typeof import('ant-design-vue/es')['InputNumber'] AInputPassword: typeof import('ant-design-vue/es')['InputPassword'] AInputSearch: typeof import('ant-design-vue/es')['InputSearch'] ALayout: typeof import('ant-design-vue/es')['Layout'] @@ -33,10 +36,12 @@ declare module 'vue' { AModal: typeof import('ant-design-vue/es')['Modal'] APagination: typeof import('ant-design-vue/es')['Pagination'] APopover: typeof import('ant-design-vue/es')['Popover'] + ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup'] ARow: typeof import('ant-design-vue/es')['Row'] ASegmented: typeof import('ant-design-vue/es')['Segmented'] ASelect: typeof import('ant-design-vue/es')['Select'] ASubMenu: typeof import('ant-design-vue/es')['SubMenu'] + ASwitch: typeof import('ant-design-vue/es')['Switch'] ATabPane: typeof import('ant-design-vue/es')['TabPane'] ATabs: typeof import('ant-design-vue/es')['Tabs'] ATag: typeof import('ant-design-vue/es')['Tag'] diff --git a/ui/package.json b/ui/package.json index 1eeb25e..63afd90 100644 --- a/ui/package.json +++ b/ui/package.json @@ -13,6 +13,7 @@ "dependencies": { "@ant-design/icons-vue": "^6.1.0", "@element-plus/icons-vue": "^2.1.0", + "@vicons/fluent": "^0.12.0", "@vueuse/components": "^10.6.1", "@vueuse/core": "^10.6.1", "ant-design-vue": "^4.0.7", @@ -20,7 +21,10 @@ "cssnano": "^6.0.1", "dayjs": "^1.11.10", "highlight.js": "^11.9.0", + "less": "^4.2.0", + "less-loader": "^12.0.0", "md-editor-v3": "^4.8.3", + "naive-ui": "^2.37.3", "nprogress": "^0.2.0", "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.0", @@ -29,6 +33,7 @@ "unplugin-auto-import": "^0.16.7", "unplugin-vue-components": "^0.25.2", "vue": "^3.3.8", + "vue-resizable": "^2.1.7", "vue-router": "^4.2.5", "vue3-lazy": "1.0.0-alpha.1" }, diff --git a/ui/pnpm-lock.yaml b/ui/pnpm-lock.yaml index 1903845..6075c5a 100644 --- a/ui/pnpm-lock.yaml +++ b/ui/pnpm-lock.yaml @@ -11,6 +11,9 @@ dependencies: '@element-plus/icons-vue': specifier: ^2.1.0 version: 2.1.0(vue@3.3.8) + '@vicons/fluent': + specifier: ^0.12.0 + version: 0.12.0 '@vueuse/components': specifier: ^10.6.1 version: 10.6.1(vue@3.3.8) @@ -32,9 +35,18 @@ dependencies: highlight.js: specifier: ^11.9.0 version: 11.9.0 + less: + specifier: ^4.2.0 + version: 4.2.0 + less-loader: + specifier: ^12.0.0 + version: 12.0.0(less@4.2.0)(webpack@5.89.0) md-editor-v3: specifier: ^4.8.3 version: 4.8.3(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.1)(vue@3.3.8) + naive-ui: + specifier: ^2.37.3 + version: 2.37.3(vue@3.3.8) nprogress: specifier: ^0.2.0 version: 0.2.0 @@ -59,6 +71,9 @@ dependencies: vue: specifier: ^3.3.8 version: 3.3.8(typescript@5.2.2) + vue-resizable: + specifier: ^2.1.7 + version: 2.1.7 vue-router: specifier: ^4.2.5 version: 4.2.5(vue@3.3.8) @@ -135,7 +150,7 @@ devDependencies: version: 5.2.2 vite: specifier: ^4.5.0 - version: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + version: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) vite-plugin-eslint: specifier: ^1.8.1 version: 1.8.1(eslint@8.53.0)(vite@4.5.0) @@ -811,6 +826,7 @@ packages: /@commitlint/config-validator@18.4.0: resolution: {integrity: sha512-1y6qHMU3o4cYQSK+Y9EnmH6H1GRiwQGjnLIUOIKlekrmfc8MrMk1ByNmb8od4vK3qHJAaL/77/5n+1uyyIF5dA==} engines: {node: '>=v18'} + requiresBuild: true dependencies: '@commitlint/types': 18.4.0 ajv: 8.12.0 @@ -837,6 +853,7 @@ packages: /@commitlint/execute-rule@18.4.0: resolution: {integrity: sha512-g013SWki6ZWhURBLOSXTaVQGWHdA0QlPJGiW4a+YpThezmJOemvc4LiKVpn13AjSKQ40QnmBqpBrxujOaSo+3A==} engines: {node: '>=v18'} + requiresBuild: true dev: true optional: true @@ -951,6 +968,7 @@ packages: /@commitlint/resolve-extends@18.4.0: resolution: {integrity: sha512-qhgU6ach+S6sJMD9NjCYiEycOObGhxzWQLQzqlScJCv9zkPs15Bg0ffLXTQ3z7ipXv46XEKYMnSJzjLRw2Tlkg==} engines: {node: '>=v18'} + requiresBuild: true dependencies: '@commitlint/config-validator': 18.4.0 '@commitlint/types': 18.4.0 @@ -994,6 +1012,7 @@ packages: /@commitlint/types@18.4.0: resolution: {integrity: sha512-MKeaFxt0I9fhqUb2E+YIzX/gZtmkuodJET/XKiZIMvXUff8Ee4Ih86eLg+yAm2jf1pwGBmU02uNOp0y094w2Uw==} engines: {node: '>=v18'} + requiresBuild: true dependencies: chalk: 4.1.2 dev: true @@ -1006,6 +1025,22 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true + /@css-render/plugin-bem@0.15.12(css-render@0.15.12): + resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==} + peerDependencies: + css-render: ~0.15.12 + dependencies: + css-render: 0.15.12 + dev: false + + /@css-render/vue3-ssr@0.15.12(vue@3.3.8): + resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==} + peerDependencies: + vue: ^3.0.11 + dependencies: + vue: 3.3.8(typescript@5.2.2) + dev: false + /@ctrl/tinycolor@3.6.1: resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} @@ -1019,6 +1054,10 @@ packages: vue: 3.3.8(typescript@5.2.2) dev: false + /@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + /@emotion/hash@0.9.1: resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} dev: false @@ -1293,6 +1332,13 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: false + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -1309,6 +1355,10 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@juggle/resize-observer@3.4.0: + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + dev: false + /@lezer/common@1.1.1: resolution: {integrity: sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg==} dev: false @@ -1481,28 +1531,47 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.44.7 + '@types/estree': 1.0.5 + dev: false + /@types/eslint@8.44.7: resolution: {integrity: sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 - dev: true /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/katex@0.16.7: + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + dev: false + /@types/linkify-it@3.0.5: resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} dev: false + /@types/lodash-es@4.17.12: + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + dependencies: + '@types/lodash': 4.14.202 + dev: false + + /@types/lodash@4.14.202: + resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} + dev: false + /@types/markdown-it@12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} dependencies: @@ -1520,6 +1589,7 @@ packages: /@types/node@18.18.9: resolution: {integrity: sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==} + requiresBuild: true dependencies: undici-types: 5.26.5 dev: true @@ -1702,7 +1772,7 @@ packages: '@unocss/core': 0.57.4 '@unocss/reset': 0.57.4 '@unocss/vite': 0.57.4(vite@4.5.0) - vite: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + vite: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) transitivePeerDependencies: - rollup dev: false @@ -1895,7 +1965,7 @@ packages: chokidar: 3.5.3 fast-glob: 3.3.2 magic-string: 0.30.5 - vite: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + vite: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) transitivePeerDependencies: - rollup dev: false @@ -1904,6 +1974,10 @@ packages: resolution: {integrity: sha512-EhYyvt5w+GE6IO1JzDFZLmJOXQmWHnx3OBvA3YY/ZB1kWqHlhJTpL4x7TuANTzK7q1Y6G/okk4eFpLVWxvEBVA==} dev: false + /@vicons/fluent@0.12.0: + resolution: {integrity: sha512-ATCiqPuiJ6RI5GBlD3BIpZ9Xw4MsCA4RpI5oR6MCti4quS4mX1Gp6N74FCzw7lgOj+80rV4HMKhZTVInwimpVQ==} + dev: false + /@vitejs/plugin-vue-jsx@3.0.2(vite@4.5.0)(vue@3.3.8): resolution: {integrity: sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -1914,7 +1988,7 @@ packages: '@babel/core': 7.23.3 '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.3) '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.3) - vite: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + vite: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) vue: 3.3.8(typescript@5.2.2) transitivePeerDependencies: - supports-color @@ -1927,7 +2001,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + vite: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) vue: 3.3.8(typescript@5.2.2) dev: true @@ -2105,6 +2179,120 @@ packages: - vue dev: false + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: false + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: false + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: false + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: false + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: false + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: false + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: false + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: false + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: false + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: false + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -2113,6 +2301,14 @@ packages: through: 2.3.8 dev: true + /acorn-import-assertions@1.9.0(acorn@8.11.2): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.2 + dev: false + /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2131,6 +2327,14 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -2138,7 +2342,6 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} @@ -2485,6 +2688,10 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -2628,6 +2835,11 @@ packages: optionalDependencies: fsevents: 2.3.3 + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: false + /class-utils@0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} @@ -2752,6 +2964,10 @@ packages: engines: {node: '>=16'} dev: true + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -2845,6 +3061,11 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true + /copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + /copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} @@ -2887,6 +3108,7 @@ packages: /cosmiconfig-typescript-loader@5.0.0(@types/node@18.18.9)(cosmiconfig@8.3.6)(typescript@5.2.2): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} + requiresBuild: true peerDependencies: '@types/node': '*' cosmiconfig: '>=8.2' @@ -2940,6 +3162,13 @@ packages: postcss: 8.4.31 dev: false + /css-render@0.15.12: + resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==} + dependencies: + '@emotion/hash': 0.8.0 + csstype: 3.0.11 + dev: false + /css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} dependencies: @@ -3065,9 +3294,17 @@ packages: css-tree: 2.2.1 dev: false + /csstype@3.0.11: + resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} + dev: false + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: false + /cz-conventional-changelog@3.3.0(typescript@5.2.2): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} @@ -3089,6 +3326,21 @@ packages: engines: {node: '>=8'} dev: true + /date-fns-tz@2.0.0(date-fns@2.30.0): + resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==} + peerDependencies: + date-fns: '>=2.0.0' + dependencies: + date-fns: 2.30.0 + dev: false + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: false @@ -3375,6 +3627,14 @@ packages: engines: {node: '>= 4'} dev: true + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: false + /entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} dev: true @@ -3393,6 +3653,14 @@ packages: engines: {node: '>=0.12'} dev: false + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + optional: true + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -3444,6 +3712,10 @@ packages: which-typed-array: 1.1.13 dev: true + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + dev: false + /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} @@ -3661,6 +3933,14 @@ packages: - supports-color dev: true + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: false + /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3742,12 +4022,15 @@ packages: engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: false /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -3766,6 +4049,15 @@ packages: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /evtd@0.2.4: + resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==} + dev: false + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -3859,7 +4151,6 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} @@ -3873,7 +4164,6 @@ packages: /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4108,6 +4398,10 @@ packages: is-glob: 4.0.3 dev: true + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -4202,7 +4496,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -4244,7 +4537,6 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} @@ -4381,6 +4673,14 @@ packages: safer-buffer: 2.1.2 dev: true + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + safer-buffer: 2.1.2 + optional: true + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -4394,7 +4694,6 @@ packages: resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} hasBin: true - dev: true /immutable@4.3.4: resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} @@ -4710,6 +5009,9 @@ packages: call-bind: 1.0.5 dev: true + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -4738,6 +5040,15 @@ packages: engines: {node: '>=0.10.0'} dev: true + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.9.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -4768,14 +5079,13 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + requiresBuild: true dev: true /json-stable-stringify-without-jsonify@1.0.1: @@ -4846,6 +5156,34 @@ packages: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} dev: false + /less-loader@12.0.0(less@4.2.0)(webpack@5.89.0): + resolution: {integrity: sha512-fcRoWK28+eD+1PxuwNG+44V2v32IBdzsYAi0keUncHVblbpxMPWwrGlnw0wZKCdOg7O0HNwfhWNw/DrRZ45xCA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + dependencies: + less: 4.2.0 + webpack: 5.89.0 + dev: false + + /less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.6.2 + 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: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -4905,6 +5243,11 @@ packages: wrap-ansi: 8.1.0 dev: true + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: false + /loader-utils@1.4.2: resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} engines: {node: '>=4.0.0'} @@ -5055,6 +5398,15 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true @@ -5212,6 +5564,25 @@ packages: braces: 3.0.2 picomatch: 2.3.1 + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + optional: true + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -5304,6 +5675,33 @@ packages: thenify-all: 1.6.0 dev: true + /naive-ui@2.37.3(vue@3.3.8): + resolution: {integrity: sha512-aUkHFXVIluSi8Me+npbcsdv1NYhVMj5t9YaruoCESlqmfqspj+R2QHEVXkTtUI1kQwVrABMCtAGq/wountqjZA==} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@css-render/plugin-bem': 0.15.12(css-render@0.15.12) + '@css-render/vue3-ssr': 0.15.12(vue@3.3.8) + '@types/katex': 0.16.7 + '@types/lodash': 4.14.202 + '@types/lodash-es': 4.17.12 + async-validator: 4.2.5 + css-render: 0.15.12 + csstype: 3.1.3 + date-fns: 2.30.0 + date-fns-tz: 2.0.0(date-fns@2.30.0) + evtd: 0.2.4 + highlight.js: 11.9.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + seemly: 0.3.8 + treemate: 0.3.11 + vdirs: 0.1.8(vue@3.3.8) + vooks: 0.2.12(vue@3.3.8) + vue: 3.3.8(typescript@5.2.2) + vueuc: 0.4.58(vue@3.3.8) + dev: false + /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -5336,6 +5734,20 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + sax: 1.3.0 + optional: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + /node-fetch-native@1.4.1: resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==} dev: false @@ -5579,6 +5991,10 @@ packages: lines-and-columns: 1.2.4 dev: true + /parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + /parse-passwd@1.0.0: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} @@ -5653,6 +6069,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + requiresBuild: true + optional: true + /pinia-plugin-persistedstate@3.2.0(pinia@2.1.7): resolution: {integrity: sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==} peerDependencies: @@ -6105,6 +6527,11 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + requiresBuild: true + optional: true + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -6125,6 +6552,12 @@ packages: engines: {node: '>=8'} dev: true + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: @@ -6212,6 +6645,7 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: true /resize-observer-polyfill@1.5.1: @@ -6339,7 +6773,6 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -6357,7 +6790,6 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /sanitize-html@2.11.0: resolution: {integrity: sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA==} @@ -6379,6 +6811,20 @@ packages: immutable: 4.3.4 source-map-js: 1.0.2 + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + requiresBuild: true + optional: true + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + /scroll-into-view-if-needed@2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -6389,6 +6835,10 @@ packages: resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} dev: false + /seemly@0.3.8: + resolution: {integrity: sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==} + dev: false + /select@1.1.2: resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} dev: false @@ -6396,7 +6846,6 @@ packages: /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -6411,6 +6860,12 @@ packages: lru-cache: 6.0.0 dev: true + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: false + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -6534,6 +6989,13 @@ packages: urix: 0.1.0 dev: true + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: false + /source-map-url@0.4.1: resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} deprecated: See https://github.com/lydell/source-map-url#deprecated @@ -6547,7 +7009,6 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} @@ -6778,6 +7239,13 @@ packages: has-flag: 4.0.0 dev: true + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: false + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -6864,6 +7332,46 @@ packages: - ts-node dev: true + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: false + + /terser-webpack-plugin@5.3.10(webpack@5.89.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + 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 + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.26.0 + webpack: 5.89.0 + dev: false + + /terser@5.26.0: + resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.2 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: false + /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -6960,6 +7468,10 @@ packages: resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} dev: true + /treemate@0.3.11: + resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==} + dev: false + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -7020,7 +7532,6 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -7196,7 +7707,7 @@ packages: '@unocss/transformer-directives': 0.57.4 '@unocss/transformer-variant-group': 0.57.4 '@unocss/vite': 0.57.4(vite@4.5.0) - vite: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + vite: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) transitivePeerDependencies: - postcss - rollup @@ -7288,7 +7799,6 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 - dev: true /urix@0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -7319,6 +7829,15 @@ packages: engines: {node: '>= 0.8'} dev: true + /vdirs@0.1.8(vue@3.3.8): + resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} + peerDependencies: + vue: ^3.0.11 + dependencies: + evtd: 0.2.4 + vue: 3.3.8(typescript@5.2.2) + dev: false + /vite-plugin-eslint@1.8.1(eslint@8.53.0)(vite@4.5.0): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: @@ -7329,7 +7848,7 @@ packages: '@types/eslint': 8.44.7 eslint: 8.53.0 rollup: 2.79.1 - vite: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + vite: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) dev: true /vite-plugin-svg-icons@2.0.1(vite@4.5.0): @@ -7345,7 +7864,7 @@ packages: pathe: 0.2.0 svg-baker: 1.7.0 svgo: 2.8.0 - vite: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + vite: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) transitivePeerDependencies: - supports-color dev: true @@ -7357,10 +7876,10 @@ packages: dependencies: '@vue/compiler-sfc': 3.3.8 magic-string: 0.25.9 - vite: 4.5.0(@types/node@20.9.0)(sass@1.69.5) + vite: 4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5) dev: true - /vite@4.5.0(@types/node@20.9.0)(sass@1.69.5): + /vite@4.5.0(@types/node@20.9.0)(less@4.2.0)(sass@1.69.5): resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7390,12 +7909,22 @@ packages: dependencies: '@types/node': 20.9.0 esbuild: 0.18.20 + less: 4.2.0 postcss: 8.4.31 rollup: 3.29.4 sass: 1.69.5 optionalDependencies: fsevents: 2.3.3 + /vooks@0.2.12(vue@3.3.8): + resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==} + peerDependencies: + vue: ^3.0.0 + dependencies: + evtd: 0.2.4 + vue: 3.3.8(typescript@5.2.2) + dev: false + /vue-demi@0.14.6(vue@3.3.8): resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} engines: {node: '>=12'} @@ -7429,6 +7958,10 @@ packages: - supports-color dev: true + /vue-resizable@2.1.7: + resolution: {integrity: sha512-zEbWhRR8iXT8+nt3u8rkfrNpkPNsPkf7HteBh+AlPIsJ7rf9fyNwMqr0Q4FRzIpNIpZD5Zrr4+3+YELU0vc1Iw==} + dev: false + /vue-router@4.2.5(vue@3.3.8): resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} peerDependencies: @@ -7491,6 +8024,21 @@ packages: '@vue/shared': 3.3.8 typescript: 5.2.2 + /vueuc@0.4.58(vue@3.3.8): + resolution: {integrity: sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==} + peerDependencies: + vue: ^3.0.11 + dependencies: + '@css-render/vue3-ssr': 0.15.12(vue@3.3.8) + '@juggle/resize-observer': 3.4.0 + css-render: 0.15.12 + evtd: 0.2.4 + seemly: 0.3.8 + vdirs: 0.1.8(vue@3.3.8) + vooks: 0.2.12(vue@3.3.8) + vue: 3.3.8(typescript@5.2.2) + dev: false + /w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} dev: false @@ -7501,6 +8049,14 @@ packages: loose-envify: 1.4.0 dev: false + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -7516,6 +8072,46 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: false + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.2 + acorn-import-assertions: 1.9.0(acorn@8.11.2) + browserslist: 4.22.1 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.4.1 + 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: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.89.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: false + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: diff --git a/ui/src/App.vue b/ui/src/App.vue index 3af1123..a9926db 100644 --- a/ui/src/App.vue +++ b/ui/src/App.vue @@ -1,111 +1,10 @@ diff --git a/ui/src/layout/index.vue b/ui/src/layout/index.vue new file mode 100644 index 0000000..73e9922 --- /dev/null +++ b/ui/src/layout/index.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/ui/src/pages/desktop/components/EditModal.vue b/ui/src/pages/desktop/components/EditModal.vue new file mode 100644 index 0000000..a4950be --- /dev/null +++ b/ui/src/pages/desktop/components/EditModal.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/ui/src/pages/desktop/components/TitleIcon.vue b/ui/src/pages/desktop/components/TitleIcon.vue new file mode 100644 index 0000000..b0b6395 --- /dev/null +++ b/ui/src/pages/desktop/components/TitleIcon.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/ui/src/pages/desktop/components/Window/index.vue b/ui/src/pages/desktop/components/Window/index.vue new file mode 100644 index 0000000..da384f1 --- /dev/null +++ b/ui/src/pages/desktop/components/Window/index.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/ui/src/pages/desktop/index.vue b/ui/src/pages/desktop/index.vue new file mode 100644 index 0000000..f179cb8 --- /dev/null +++ b/ui/src/pages/desktop/index.vue @@ -0,0 +1,180 @@ + + + + + diff --git a/ui/src/pages/desktop/useAppList.ts b/ui/src/pages/desktop/useAppList.ts new file mode 100644 index 0000000..1236ca4 --- /dev/null +++ b/ui/src/pages/desktop/useAppList.ts @@ -0,0 +1,41 @@ +import { apiJson } from '@/api' +import type { Ref } from 'vue' +import { ref } from 'vue' + +export interface AppItem { + url: string + title: string + icon: string +} + +export const useAppList = () => { + + const list: Ref = ref([]) + + const loadList = () => { + apiJson.get({ + 'AppList[]': { + '@alias': 'list' + } + }).then(data => { + list.value = data.list.sort((a,b)=>a.sorts-b.sorts) + }) + } + + const del = (appId: string) => { + apiJson.delete({ + AppList: { + appId + }, + tag: 'AppList' + }).then(data => { + loadList() + }) + } + + return { + loadList, + del, + list + } +} diff --git a/ui/src/pages/desktop/useDesktop.ts b/ui/src/pages/desktop/useDesktop.ts new file mode 100644 index 0000000..fc0a896 --- /dev/null +++ b/ui/src/pages/desktop/useDesktop.ts @@ -0,0 +1,131 @@ +import { ref, type Ref } from 'vue' +import { useWindowSize } from '@vueuse/core' + +const { + width, + height +} = useWindowSize() + +interface WindowStyle { + width: number + height: number + x: number + y: number + zIndex: number +} + +interface ProcessInfo { + pid: number + appId: string + title: string + icon: string + url: string + hidden: boolean + focus: boolean + windowStyle: WindowStyle +} + +interface ForkAppParam { + title: string + icon: string + url: string + appId: string + windowStyle: { + width: number + height: number + } +} + +let pid = 1 + +const DefaultZIndex = 1000 + +const focus = (pid: number, processList: Ref) => { + processList.value.forEach(p => { + if (p.pid === pid) { + p.windowStyle.zIndex = DefaultZIndex + 1 + p.focus = true + } else { + p.windowStyle.zIndex = DefaultZIndex + p.focus = false + } + }) +} + +const close = (pid: number, processList: Ref) => { + processList.value.splice(processList.value.findIndex(p => p.pid === pid), 1) +} + +const min = (pid: number, processList: Ref) => { + processList.value.find(p => p.pid === pid).hidden = true +} + +const show = (pid: number, processList: Ref) => { + processList.value.find(p => p.pid === pid).hidden = false +} + +const toggle = (pid: number, processList: Ref) => { + let item = processList.value.find(p => p.pid === pid) + const isHidden = item.hidden + if (isHidden) { + item.hidden = false + focus(pid, processList) + } else { + if (item.windowStyle.zIndex === DefaultZIndex + 1) { + item.hidden = true + } else { + focus(pid, processList) + } + } +} + +export function useDesktop () { + const processList: Ref = ref([]) + const fork = (app: ForkAppParam) => { + processList.value.forEach(p => { + p.windowStyle.zIndex = DefaultZIndex + }) + + pid += 1 + const newProcess = { + pid, + appId: app.appId, + title: app.title, + icon: app.icon, + url: app.url, + hidden: false, + windowStyle: { + zIndex: DefaultZIndex, + ...app.windowStyle + } + } + + newProcess.windowStyle.x = width.value / 2 - newProcess.windowStyle.width / 2 + newProcess.windowStyle.y = height.value / 2 - newProcess.windowStyle.height / 2 - 60 + + processList.value.push(newProcess) + + console.log(newProcess) + + focus(pid, processList) + } + + const action = (pid: number, action: 'focus' | 'close' | 'min' | 'show' | 'toggle') => { + const actions = { + focus, + close, + min, + show, + toggle + } + + actions[action](pid, processList) + + } + + return { + processList, + fork, + action + } +} diff --git a/ui/src/router/index.ts b/ui/src/router/index.ts index 5be8eec..cae0757 100644 --- a/ui/src/router/index.ts +++ b/ui/src/router/index.ts @@ -1,26 +1,31 @@ import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router' - +import Layout from '../layout/index.vue' const routes: Array = [ - { - path: '/bookmark', - name: 'Bookmark', - component: () => import('../views/bookmark/index.vue') - }, - { - path: '/note', - name: 'Note', - component: () => import('../views/note/index.vue') - }, - { - path: '/home', - name: 'Home', - component: () => import('../views/home/index.vue') - }, + { path: '/', name: 'Index', - redirect: location.href.includes("?url=")?'/bookmark':"/home" + redirect: location.href.includes("?url=")?'/bookmark':"/home", + component: Layout, + children:[ + { + path: '/bookmark', + name: 'Bookmark', + component: () => import('../views/bookmark/index.vue') + }, + { + path: '/note', + name: 'Note', + component: () => import('../views/note/index.vue') + }, + { + path: '/home', + name: 'Desktop', + component: () => import('../pages/desktop/index.vue') + }, + ] }, + { path: '/login', name: 'Login', diff --git a/ui/src/svg/car.svg b/ui/src/svg/car.svg deleted file mode 100644 index a5b3361..0000000 --- a/ui/src/svg/car.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/ui/src/views/home/components/EditModal.vue b/ui/src/views/home/components/EditModal.vue deleted file mode 100644 index cfcada2..0000000 --- a/ui/src/views/home/components/EditModal.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - - - diff --git a/ui/src/views/home/directive.ts b/ui/src/views/home/directive.ts deleted file mode 100644 index a92b89d..0000000 --- a/ui/src/views/home/directive.ts +++ /dev/null @@ -1,177 +0,0 @@ -import { App } from "vue"; -// import { throttle } from "@/utils"; //节流函数不再展示,不要直接去除即可,在下面样式引用去除即可 - -export const vDrag = { - mounted(el: any, binding: any, vnode: any) { - // 如果传递了false就不启用指令,反之true undefined null 不传 则启动 - if (!binding.value && (binding.value ?? "") !== "") return; - // 拖拽实现 - const odiv = el.parentNode; - el.onmousedown = (eve: any) => { - odiv.style.zIndex = 1; //当前拖拽的在最前面显示 - eve = eve || window.event; - const mx = eve.pageX; //鼠标点击时的坐标 - const my = eve.pageY; //鼠标点击时的坐标 - const dleft = odiv.offsetLeft; //窗口初始位置 - const dtop = odiv.offsetTop; - const clientWidth = document.documentElement.clientWidth; //页面的宽 - const oWidth = odiv.clientWidth; //窗口的宽 - const maxX = clientWidth - oWidth; // x轴能移动的最大距离 - const clientHeight = document.documentElement.clientHeight; //页面的高 - const oHeight = odiv.clientHeight; //窗口的高度 - const maxY = clientHeight - oHeight; //y轴能移动的最大距离 - document.onmousemove = (e: any) => { - const x = e.pageX; - const y = e.pageY; - let left = x - mx + dleft; //移动后的新位置 - let top = y - my + dtop; //移动后的新位置 - if (left < 0) left = 0; - if (left > maxX) left = maxX; - if (top < 0) top = 0; - if (top > maxY) top = maxY; - - odiv.style.left = left + "px"; - odiv.style.top = top + "px"; - odiv.style.marginLeft = 0; - odiv.style.marginTop = 0; - }; - document.onmouseup = () => { - document.onmousemove = null; - }; - }; - } -} - -export const vResize = { - mounted(el: any, binding: any, vnode: any) { - // 如果传递了false就不启用指令,反之true undefined null 不传 则启动 - if (!binding.value && (binding.value ?? "") !== "") return; - // 给选定的元素绑定name属性 设置name为resize区分只有该元素可以缩放 - el.name = "resize"; - // 八个方位对应 - const mouseDir = { - top: "n-resize", //上 - bottom: "s-resize", //下 - left: "w-resize", //左 - right: "e-resize", //右 - topright: "ne-resize", //右上 - topleft: "nw-resize", //左上 - bottomleft: "sw-resize", //左下 - bottomright: "se-resize" //右下 - }; - // 记录被修改元素的原始位置大小,以及变更方向 - const pos = { width: 0, height: 0, top: 0, left: 0, x: 0, y: 0, dir: "" }; - // 获取鼠标所在方位 - const getDirection = (ev: any): string => { - let dir = ""; - const xP = ev.offsetX; - const yP = ev.offsetY; - const offset = 12; //内边距为多少时触发 - // 计算是那个方位 - if (yP < offset) dir += "top"; - else if (yP > ev.toElement.clientHeight - offset) dir += "bottom"; - if (xP < offset) dir += "left"; - else if (xP > ev.toElement.clientWidth - offset) dir += "right"; - return dir; - }; - // 计算移动距离 - const computedDistance = (pre: any, cur: any): any => { - return [cur.x - pre.x, cur.y - pre.y]; - }; - //数据重置 - const resetData = () => { - pos.width = 0; - pos.height = 0; - pos.top = 0; - pos.left = 0; - pos.x = 0; - pos.y = 0; - pos.dir = ""; - document.onmousemove = null; - }; - // 变更尺寸方法 - const changeSize = (e: any) => { - // 两个点之间的差值,计算鼠标位移数值 - const [disX, disY] = computedDistance( - { x: pos.x, y: pos.y }, - { x: e.pageX, y: e.pageY } - ); - const addWid = pos.width + disX; - const subWid = pos.width - disX; - const addHig = pos.height + disY; - const subHig = pos.height - disY; - const minX = 200; - const minY = 200; - //上下左右的变更方法 - const top = () => { - if (subHig <= minY) return; //不能小于最小最高 - el.style.height = subHig + "px"; - el.style.top = pos.top + disY + "px"; - }; // 上 - const bottom = () => { - el.style.height = addHig + "px"; - }; // 下 - const left = () => { - if (subWid <= minX) return; //不能小于最小宽度 - el.style.width = subWid + "px"; - el.style.left = pos.left + disX + "px"; - }; // 左 - const right = () => { - el.style.width = addWid + "px"; - }; // 右 - // 变更方位及其修改方法映射 - const doFn = { - top, //上 - bottom, //下 - left, //左 - right, //右 - topright: () => { - top(); - right(); - }, //右上 - topleft: () => { - top(); - left(); - }, //左上 - bottomleft: () => { - bottom(); - left(); - }, //左下 - bottomright: () => { - bottom(); - right(); - } //右下 - }; - doFn[pos.dir](); - }; - //鼠标按下 触发变更事件 - el.onmousedown = (e: any) => { - if (e.target.name !== "resize") return; - let d = getDirection(e); - //当位置为四个边和四个角才开启尺寸修改 - if (mouseDir[d]) { - pos.width = el.clientWidth; - pos.height = el.clientHeight; - pos.top = el.offsetTop; - pos.left = el.offsetLeft; - pos.x = e.pageX; - pos.y = e.pageY; - pos.dir = d; - document.onmousemove = changeSize; - } - document.onmouseup = resetData; - }; - - /** 鼠标样式变更 */ - // const changeShowCursor = throttle((e: any) => { - // e.preventDefault(); - // el.style.cursor = "default"; //先恢复鼠标默认 - // if (e.target.name !== "resize") return; - // // 修改鼠标显示效果 - // let d = getDirection(e); - // // 确定是某个方位的动向 - // el.style.cursor = mouseDir[d] || "default"; - // }, 200); //节流0.2s - // el.onmousemove = changeShowCursor; //监听根元素上移动的鼠标事件 - } -} diff --git a/ui/src/views/home/index.vue b/ui/src/views/home/index.vue deleted file mode 100644 index 0f6b68e..0000000 --- a/ui/src/views/home/index.vue +++ /dev/null @@ -1,171 +0,0 @@ - - -