diff --git a/package.json b/package.json index 387dce7..5b706d6 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "@ant-design/icons-vue": "^6.1.0", + "@emotion/css": "^11.11.2", "@vueuse/core": "^10.4.1", "ant-design-vue": "^3.2.20", "axios": "^1.5.0", @@ -52,6 +53,7 @@ "form-data": "^4.0.0", "fs-extra": "^10.1.0", "less": "^4.2.0", + "postcss-preset-env": "^9.5.9", "rollup": "^3.28.1", "terser": "^5.19.4", "ts-node": "^10.9.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a923edc..63db628 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ dependencies: '@ant-design/icons-vue': specifier: ^6.1.0 version: 6.1.0(vue@3.3.4) + '@emotion/css': + specifier: ^11.11.2 + version: 11.11.2 '@vueuse/core': specifier: ^10.4.1 version: 10.4.1(vue@3.3.4) @@ -112,6 +115,9 @@ devDependencies: less: specifier: ^4.2.0 version: 4.2.0 + postcss-preset-env: + specifier: ^9.5.9 + version: 9.5.9(postcss@8.4.29) rollup: specifier: ^3.28.1 version: 3.28.1 @@ -197,7 +203,6 @@ packages: dependencies: '@babel/highlight': 7.22.13 chalk: 2.4.2 - dev: true /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} @@ -339,7 +344,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} @@ -452,7 +456,6 @@ packages: '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} @@ -1380,6 +1383,431 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true + /@csstools/cascade-layer-name-parser@1.0.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-RRqNjxTZDUhx7pxYOBG/AkCVmPS3zYzfE47GEhIGkFuWFTQGJBgWOUUkKNo5MfxIfjDz5/1L3F3rF1oIsYaIpw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 + dependencies: + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + dev: true + + /@csstools/color-helpers@4.2.0: + resolution: {integrity: sha512-hJJrSBzbfGxUsaR6X4Bzd/FLx0F1ulKnR5ljY9AiXCtsR+H+zSWQDFWlKES1BRaVZTDHLpIIHS9K2o0h+JLlrg==} + engines: {node: ^14 || ^16 || >=18} + dev: true + + /@csstools/css-calc@1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-iQqIW5vDPqQdLx07/atCuNKDprhIWjB0b8XRhUyXZWBZYUG+9mNyFwyu30rypX84WLevVo25NYW2ipxR8WyseQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 + dependencies: + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + dev: true + + /@csstools/css-color-parser@2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-0/v6OPpcg+b8TJT2N1Rcp0oH5xEvVOU5K2qDkaR3IMHNXuJ7XfVCQLINt3Cuj8mr54DbilEoZ9uvAmHBoZ//Fw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 + dependencies: + '@csstools/color-helpers': 4.2.0 + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + dev: true + + /@csstools/css-parser-algorithms@2.6.1(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-tokenizer': ^2.2.4 + dependencies: + '@csstools/css-tokenizer': 2.2.4 + dev: true + + /@csstools/css-tokenizer@2.2.4: + resolution: {integrity: sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==} + engines: {node: ^14 || ^16 || >=18} + dev: true + + /@csstools/media-query-list-parser@2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 + dependencies: + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + dev: true + + /@csstools/postcss-cascade-layers@4.0.4(postcss@8.4.29): + resolution: {integrity: sha512-MKErv8lpEwVmAcAwidY1Kfd3oWrh2Q14kxHs9xn26XzjP/PrcdngWq63lJsZeMlBY7o+WlEOeE+FP6zPzeY2uw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /@csstools/postcss-color-function@3.0.14(postcss@8.4.29): + resolution: {integrity: sha512-joGAf5bT3Jg1CpybupMJ4DwNg/VNjmLWZoWMDmX0MTy/ftHA1Qr4+CslqTT4AA1n6Dx4Wa+DSMGPrDLHtRP0jg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-color-mix-function@2.0.14(postcss@8.4.29): + resolution: {integrity: sha512-ZLbgtdhyuOoWoRo/W8jFv68q+IMgTJHOAI+WunRbrRPqI+vJ0K2rud/lS9Se5urzM/imVKs/kz0Uobm5Yj4HUg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-exponential-functions@1.0.5(postcss@8.4.29): + resolution: {integrity: sha512-7S7I7KgwHWQYzJJAoIjRtUf7DQs1dxipeg1A6ikZr0PYapNJX7UHz0evlpE67SQqYj1xBs70gpG7xUv3uLp4PA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + postcss: 8.4.29 + dev: true + + /@csstools/postcss-font-format-keywords@3.0.2(postcss@8.4.29): + resolution: {integrity: sha512-E0xz2sjm4AMCkXLCFvI/lyl4XO6aN1NCSMMVEOngFDJ+k2rDwfr6NDjWljk1li42jiLNChVX+YFnmfGCigZKXw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-gamut-mapping@1.0.7(postcss@8.4.29): + resolution: {integrity: sha512-vrsHsl5TN6NB5CT0rPG6JE9V2GLFftcmPtF/k4cWT4gyVMCsDyS9wEVl82sgvh/JQ32TaUo6bh8Ndl+XRJqGQw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + postcss: 8.4.29 + dev: true + + /@csstools/postcss-gradients-interpolation-method@4.0.15(postcss@8.4.29): + resolution: {integrity: sha512-0xQ5r4WU/6W2lDmnOTx9liC1Cq6RSnrkEzqX7d0cRA3fz5hjC276pA0nLMoAiY3vtAp0u71nTk/3TRdnCx/OUw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-hwb-function@3.0.13(postcss@8.4.29): + resolution: {integrity: sha512-f44tgkFSxJBGm8UjlkAfBP7xE2x2XFFdvNdedHl8jpx2pQcW8a50OT3yeMnM3NB9Y2Ynd7Wn8iXARiV/IHoKvw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-ic-unit@3.0.6(postcss@8.4.29): + resolution: {integrity: sha512-fHaU9C/sZPauXMrzPitZ/xbACbvxbkPpHoUgB9Kw5evtsBWdVkVrajOyiT9qX7/c+G1yjApoQjP1fQatldsy9w==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-initial@1.0.1(postcss@8.4.29): + resolution: {integrity: sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /@csstools/postcss-is-pseudo-class@4.0.6(postcss@8.4.29): + resolution: {integrity: sha512-HilOhAsMpFheMYkuaREZx+CGa4hsG6kQdzwXSsuqKDFzYz2eIMP213+3dH/vUbPXaWrzqLKr8m3i0dgYPoh7vg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /@csstools/postcss-light-dark-function@1.0.3(postcss@8.4.29): + resolution: {integrity: sha512-izW8hvhOqJlarLcGXO5PSylW9pQS3fytmhRdx2/e1oZFi15vs7ZShOHcREHJ3FfGdYqDA10cP9uhH0A3hmm1Rw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-logical-float-and-clear@2.0.1(postcss@8.4.29): + resolution: {integrity: sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /@csstools/postcss-logical-overflow@1.0.1(postcss@8.4.29): + resolution: {integrity: sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /@csstools/postcss-logical-overscroll-behavior@1.0.1(postcss@8.4.29): + resolution: {integrity: sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /@csstools/postcss-logical-resize@2.0.1(postcss@8.4.29): + resolution: {integrity: sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-logical-viewport-units@2.0.7(postcss@8.4.29): + resolution: {integrity: sha512-L4G3zsp/bnU0+WXUyysihCUH14LkfMgUJsS9vKz3vCYbVobOTqQRoNXnEPpyNp8WYyolLqAWbGGJhVu8J6u2OQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-tokenizer': 2.2.4 + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-media-minmax@1.1.4(postcss@8.4.29): + resolution: {integrity: sha512-xl/PIO3TUbXO1ZA4SA6HCw+Q9UGe2cgeRKx3lHCzoNig2D4bT5vfVCOrwhxjUb09oHihc9eI3I0iIfVPiXaN1A==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/media-query-list-parser': 2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.7(postcss@8.4.29): + resolution: {integrity: sha512-HBDAQw1K0NilcHGMUHv8jzf2mpOtcWTVKtuY3AeZ5TS1uyWWNVi5/yuA/tREPLU9WifNdqHQ+rfbsV/8zTIkTg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/media-query-list-parser': 2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-nested-calc@3.0.2(postcss@8.4.29): + resolution: {integrity: sha512-ySUmPyawiHSmBW/VI44+IObcKH0v88LqFe0d09Sb3w4B1qjkaROc6d5IA3ll9kjD46IIX/dbO5bwFN/swyoyZA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-normalize-display-values@3.0.2(postcss@8.4.29): + resolution: {integrity: sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-oklab-function@3.0.14(postcss@8.4.29): + resolution: {integrity: sha512-92xdpcfc2wB3z4+GftPA0PXMuGI/tRLw9Tc0+HzpaAHHxyLK6aCJtoQIcw0Ox/PthXtqXZn/3wWT/Idfe8I7Wg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-progressive-custom-properties@3.2.0(postcss@8.4.29): + resolution: {integrity: sha512-BZlirVxCRgKlE7yVme+Xvif72eTn1MYXj8oZ4Knb+jwaH4u3AN1DjbhM7j86RP5vvuAOexJ4JwfifYYKWMN/QQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-relative-color-syntax@2.0.14(postcss@8.4.29): + resolution: {integrity: sha512-NlxgLjAjVCTUVGiWk8WNj3dKvux9eC6O5aLM3BmdA8UXEwBHYI9r4IqlanxG9PlcXnzhTUX6eZsqgmxwt4FPow==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /@csstools/postcss-scope-pseudo-class@3.0.1(postcss@8.4.29): + resolution: {integrity: sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /@csstools/postcss-stepped-value-functions@3.0.6(postcss@8.4.29): + resolution: {integrity: sha512-rnyp8tWRuBXERTHVdB5hjUlif5dQgPcyN+BX55wUnYpZ3LN9QPfK2Z3/HUZymwyou8Gg6vhd6X2W+g1pLq1jYg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + postcss: 8.4.29 + dev: true + + /@csstools/postcss-text-decoration-shorthand@3.0.6(postcss@8.4.29): + resolution: {integrity: sha512-Q8HEu4AEiwNVZBD6+DpQ8M9SajpMow4+WtmndWIAv8qxDtDYL4JK1xXWkhOGk28PrcJawOvkrEZ8Ri59UN1TJw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/color-helpers': 4.2.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-trigonometric-functions@3.0.6(postcss@8.4.29): + resolution: {integrity: sha512-i5Zd0bMJooZAn+ZcDmPij2WCkcOJJJ6opzK+QeDjxbMrYmoGQl0CY8FDHdeQyBF1Nly+Q0Fq3S7QfdNLKBBaCg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + postcss: 8.4.29 + dev: true + + /@csstools/postcss-unset-value@3.0.1(postcss@8.4.29): + resolution: {integrity: sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16): + resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + dependencies: + postcss-selector-parser: 6.0.16 + dev: true + + /@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16): + resolution: {integrity: sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + dependencies: + postcss-selector-parser: 6.0.16 + dev: true + + /@csstools/utilities@1.0.0(postcss@8.4.29): + resolution: {integrity: sha512-tAgvZQe/t2mlvpNosA4+CkMiZ2azISW5WPAcdSalZlEjQvUfghHxfQcrCiK/7/CrfAWVxyM88kGFYO82heIGDg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + /@ctrl/tinycolor@3.6.1: resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} @@ -1392,6 +1820,76 @@ packages: fd-slicer2: 1.2.0 dev: true + /@emotion/babel-plugin@11.11.0: + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/runtime': 7.22.15 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.4 + 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 + dev: false + + /@emotion/cache@11.11.0: + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + dev: false + + /@emotion/css@11.11.2: + resolution: {integrity: sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew==} + dependencies: + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.4 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + dev: false + + /@emotion/hash@0.9.1: + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + dev: false + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + dev: false + + /@emotion/serialize@1.1.4: + resolution: {integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==} + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.2 + dev: false + + /@emotion/sheet@1.2.2: + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + dev: false + + /@emotion/unitless@0.8.1: + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + dev: false + + /@emotion/utils@1.2.1: + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + dev: false + + /@emotion/weak-memoize@0.3.1: + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + dev: false + /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -1904,6 +2402,10 @@ packages: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + dev: false + /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true @@ -2191,7 +2693,6 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -2278,6 +2779,22 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + /autoprefixer@10.4.19(postcss@8.4.29): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001612 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + /axios@1.5.0: resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} dependencies: @@ -2292,6 +2809,15 @@ packages: resolution: {integrity: sha512-wWUK79hNEsHN1PTHwHsGYpTNupgaovM39g6374uoIL1gfVSwK2q9flM1DFyvSEYkELRWf5aMGSf7bkGGNSl0Jw==} dev: true + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.22.15 + cosmiconfig: 7.1.0 + resolve: 1.22.4 + dev: false + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.15): resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} peerDependencies: @@ -2381,6 +2907,17 @@ packages: update-browserslist-db: 1.0.11(browserslist@4.21.10) dev: true + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001612 + electron-to-chromium: 1.4.749 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + /buffer-alloc-unsafe@1.1.0: resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} dev: true @@ -2456,6 +2993,11 @@ packages: get-intrinsic: 1.2.1 dev: true + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: false + /camelcase-keys@7.0.2: resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} engines: {node: '>=12'} @@ -2475,6 +3017,10 @@ packages: resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==} dev: true + /caniuse-lite@1.0.30001612: + resolution: {integrity: sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==} + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -2482,7 +3028,6 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true /chart.js@4.4.0: resolution: {integrity: sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==} @@ -2561,7 +3106,6 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -2572,7 +3116,6 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2641,7 +3184,6 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true /copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} @@ -2662,6 +3204,17 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -2675,6 +3228,47 @@ packages: which: 2.0.2 dev: true + /css-blank-pseudo@6.0.2(postcss@8.4.29): + resolution: {integrity: sha512-J/6m+lsqpKPqWHOifAFtKFeGLOzw3jR92rxQcwRUfA/eTuZzKfKlxOmYDx2+tqOPQAueNvBiY8WhAeHu5qNmTg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /css-has-pseudo@6.0.3(postcss@8.4.29): + resolution: {integrity: sha512-qIsDxK/z0byH/mpNsv5hzQ5NOl8m1FRmOLgZpx4bG5uYHnOlO2XafeMI4mFIgNSViHwoUWcxSJZyyijaAmbs+A==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + postcss-value-parser: 4.2.0 + dev: true + + /css-prefers-color-scheme@9.0.1(postcss@8.4.29): + resolution: {integrity: sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /cssdb@8.0.0: + resolution: {integrity: sha512-hfpm8VXc7/dhcEWpLvKDLwImOSk1sa2DxL36OEiY/4h2MGfKjPYIMZo4hnEEl+TCJr2GwcX46jF5TafRASDe9w==} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -2771,6 +3365,10 @@ packages: resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} dev: true + /electron-to-chromium@1.4.749: + resolution: {integrity: sha512-LRMMrM9ITOvue0PoBrvNIraVmuDbJV5QC9ierz/z5VilMdPOVMjOtpICNld3PuXuTZ3CHH/UPxX9gHhAPwi+0Q==} + dev: true + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true @@ -2815,7 +3413,6 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: true /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} @@ -2855,7 +3452,11 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -2919,6 +3520,10 @@ packages: to-regex-range: 5.0.1 dev: true + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2996,6 +3601,10 @@ packages: combined-stream: 1.0.8 mime-types: 2.1.35 + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: true @@ -3049,7 +3658,6 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true /gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} @@ -3169,7 +3777,6 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} @@ -3196,7 +3803,6 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -3274,6 +3880,14 @@ packages: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} dev: false + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: false + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3313,7 +3927,6 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -3337,7 +3950,6 @@ packages: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 - dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -3482,7 +4094,6 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -3556,7 +4167,6 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} @@ -3908,6 +4518,10 @@ packages: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3938,6 +4552,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + /now-and-later@2.0.1: resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==} engines: {node: '>= 0.10'} @@ -4011,6 +4630,13 @@ packages: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} dev: true + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: false + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -4019,7 +4645,6 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true /parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} @@ -4047,7 +4672,6 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-scurry@1.10.1: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} @@ -4057,6 +4681,11 @@ packages: minipass: 7.0.3 dev: true + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true @@ -4074,6 +4703,354 @@ packages: engines: {node: '>=6'} dev: true + /postcss-attribute-case-insensitive@6.0.3(postcss@8.4.29): + resolution: {integrity: sha512-KHkmCILThWBRtg+Jn1owTnHPnFit4OkqS+eKiGEOPIGke54DCeYGJ6r0Fx/HjfE9M9kznApCLcU0DvnPchazMQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-clamp@4.1.0(postcss@8.4.29): + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-functional-notation@6.0.9(postcss@8.4.29): + resolution: {integrity: sha512-8i/ofOArZ4fljp+3g+HI6Pok01Kb8YaSqInrJt2vMimEKrI0ZDNRLpH+wLhXBNu/Bi8zeWDvxhvCqsGSpu8E6Q==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /postcss-color-hex-alpha@9.0.4(postcss@8.4.29): + resolution: {integrity: sha512-XQZm4q4fNFqVCYMGPiBjcqDhuG7Ey2xrl99AnDJMyr5eDASsAGalndVgHZF8i97VFNy1GQeZc4q2ydagGmhelQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-rebeccapurple@9.0.3(postcss@8.4.29): + resolution: {integrity: sha512-ruBqzEFDYHrcVq3FnW3XHgwRqVMrtEPLBtD7K2YmsLKVc2jbkxzzNEctJKsPCpDZ+LeMHLKRDoSShVefGc+CkQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-media@10.0.4(postcss@8.4.29): + resolution: {integrity: sha512-Ubs7O3wj2prghaKRa68VHBvuy3KnTQ0zbGwqDYY1mntxJD0QL2AeiAy+AMfl3HBedTCVr2IcFNktwty9YpSskA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': 1.0.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/media-query-list-parser': 2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + postcss: 8.4.29 + dev: true + + /postcss-custom-properties@13.3.8(postcss@8.4.29): + resolution: {integrity: sha512-OP9yj4yXxYOiW2n2TRpnE7C0yePvBiZb72S22mZVNzZEObdTYFjNaX6oZO4R4E8Ie9RmC/Jxw8EKYSbLrC1EFA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': 1.0.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-selectors@7.1.8(postcss@8.4.29): + resolution: {integrity: sha512-fqDkGSEsO7+oQaqdRdR8nwwqH+N2uk6LE/2g4myVJJYz/Ly418lHKEleKTdV/GzjBjFcG4n0dbfuH/Pd2BE8YA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': 1.0.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-dir-pseudo-class@8.0.1(postcss@8.4.29): + resolution: {integrity: sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-double-position-gradients@5.0.6(postcss@8.4.29): + resolution: {integrity: sha512-QJ+089FKMaqDxOhhIHsJrh4IP7h4PIHNC5jZP5PMmnfUScNu8Hji2lskqpFWCvu+5sj+2EJFyzKd13sLEWOZmQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-focus-visible@9.0.1(postcss@8.4.29): + resolution: {integrity: sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-focus-within@8.0.1(postcss@8.4.29): + resolution: {integrity: sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-font-variant@5.0.0(postcss@8.4.29): + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-gap-properties@5.0.1(postcss@8.4.29): + resolution: {integrity: sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-image-set-function@6.0.3(postcss@8.4.29): + resolution: {integrity: sha512-i2bXrBYzfbRzFnm+pVuxVePSTCRiNmlfssGI4H0tJQvDue+yywXwUxe68VyzXs7cGtMaH6MCLY6IbCShrSroCw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-lab-function@6.0.14(postcss@8.4.29): + resolution: {integrity: sha512-ddQS9FRWT8sfl4wfW0ae8fpP2JdLIuhC9pYpHq1077avjrLzg73T9IEVu5QmFa72nJhYFlO9CbqjcoSdEzfY9A==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 2.0.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/utilities': 1.0.0(postcss@8.4.29) + postcss: 8.4.29 + dev: true + + /postcss-logical@7.0.1(postcss@8.4.29): + resolution: {integrity: sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-nesting@12.1.2(postcss@8.4.29): + resolution: {integrity: sha512-FUmTHGDNundodutB4PUBxt/EPuhgtpk8FJGRsBhOuy+6FnkR2A8RZWIsyyy6XmhvX2DZQQWIkvu+HB4IbJm+Ew==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.16) + '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-opacity-percentage@2.0.0(postcss@8.4.29): + resolution: {integrity: sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-overflow-shorthand@5.0.1(postcss@8.4.29): + resolution: {integrity: sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-page-break@3.0.4(postcss@8.4.29): + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-place@9.0.1(postcss@8.4.29): + resolution: {integrity: sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-preset-env@9.5.9(postcss@8.4.29): + resolution: {integrity: sha512-W+WgDH1MOWLT3Fsvknd45pzGMQ8Sp3fmt94Pxeik3Zkqfhw2XUDF8FehfV3Naxw4l/NrKPWLtltPJYVnpjMmfw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-cascade-layers': 4.0.4(postcss@8.4.29) + '@csstools/postcss-color-function': 3.0.14(postcss@8.4.29) + '@csstools/postcss-color-mix-function': 2.0.14(postcss@8.4.29) + '@csstools/postcss-exponential-functions': 1.0.5(postcss@8.4.29) + '@csstools/postcss-font-format-keywords': 3.0.2(postcss@8.4.29) + '@csstools/postcss-gamut-mapping': 1.0.7(postcss@8.4.29) + '@csstools/postcss-gradients-interpolation-method': 4.0.15(postcss@8.4.29) + '@csstools/postcss-hwb-function': 3.0.13(postcss@8.4.29) + '@csstools/postcss-ic-unit': 3.0.6(postcss@8.4.29) + '@csstools/postcss-initial': 1.0.1(postcss@8.4.29) + '@csstools/postcss-is-pseudo-class': 4.0.6(postcss@8.4.29) + '@csstools/postcss-light-dark-function': 1.0.3(postcss@8.4.29) + '@csstools/postcss-logical-float-and-clear': 2.0.1(postcss@8.4.29) + '@csstools/postcss-logical-overflow': 1.0.1(postcss@8.4.29) + '@csstools/postcss-logical-overscroll-behavior': 1.0.1(postcss@8.4.29) + '@csstools/postcss-logical-resize': 2.0.1(postcss@8.4.29) + '@csstools/postcss-logical-viewport-units': 2.0.7(postcss@8.4.29) + '@csstools/postcss-media-minmax': 1.1.4(postcss@8.4.29) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.7(postcss@8.4.29) + '@csstools/postcss-nested-calc': 3.0.2(postcss@8.4.29) + '@csstools/postcss-normalize-display-values': 3.0.2(postcss@8.4.29) + '@csstools/postcss-oklab-function': 3.0.14(postcss@8.4.29) + '@csstools/postcss-progressive-custom-properties': 3.2.0(postcss@8.4.29) + '@csstools/postcss-relative-color-syntax': 2.0.14(postcss@8.4.29) + '@csstools/postcss-scope-pseudo-class': 3.0.1(postcss@8.4.29) + '@csstools/postcss-stepped-value-functions': 3.0.6(postcss@8.4.29) + '@csstools/postcss-text-decoration-shorthand': 3.0.6(postcss@8.4.29) + '@csstools/postcss-trigonometric-functions': 3.0.6(postcss@8.4.29) + '@csstools/postcss-unset-value': 3.0.1(postcss@8.4.29) + autoprefixer: 10.4.19(postcss@8.4.29) + browserslist: 4.23.0 + css-blank-pseudo: 6.0.2(postcss@8.4.29) + css-has-pseudo: 6.0.3(postcss@8.4.29) + css-prefers-color-scheme: 9.0.1(postcss@8.4.29) + cssdb: 8.0.0 + postcss: 8.4.29 + postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.29) + postcss-clamp: 4.1.0(postcss@8.4.29) + postcss-color-functional-notation: 6.0.9(postcss@8.4.29) + postcss-color-hex-alpha: 9.0.4(postcss@8.4.29) + postcss-color-rebeccapurple: 9.0.3(postcss@8.4.29) + postcss-custom-media: 10.0.4(postcss@8.4.29) + postcss-custom-properties: 13.3.8(postcss@8.4.29) + postcss-custom-selectors: 7.1.8(postcss@8.4.29) + postcss-dir-pseudo-class: 8.0.1(postcss@8.4.29) + postcss-double-position-gradients: 5.0.6(postcss@8.4.29) + postcss-focus-visible: 9.0.1(postcss@8.4.29) + postcss-focus-within: 8.0.1(postcss@8.4.29) + postcss-font-variant: 5.0.0(postcss@8.4.29) + postcss-gap-properties: 5.0.1(postcss@8.4.29) + postcss-image-set-function: 6.0.3(postcss@8.4.29) + postcss-lab-function: 6.0.14(postcss@8.4.29) + postcss-logical: 7.0.1(postcss@8.4.29) + postcss-nesting: 12.1.2(postcss@8.4.29) + postcss-opacity-percentage: 2.0.0(postcss@8.4.29) + postcss-overflow-shorthand: 5.0.1(postcss@8.4.29) + postcss-page-break: 3.0.4(postcss@8.4.29) + postcss-place: 9.0.1(postcss@8.4.29) + postcss-pseudo-class-any-link: 9.0.2(postcss@8.4.29) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.29) + postcss-selector-not: 7.0.2(postcss@8.4.29) + dev: true + + /postcss-pseudo-class-any-link@9.0.2(postcss@8.4.29): + resolution: {integrity: sha512-HFSsxIqQ9nA27ahyfH37cRWGk3SYyQLpk0LiWw/UGMV4VKT5YG2ONee4Pz/oFesnK0dn2AjcyequDbIjKJgB0g==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.29): + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-selector-not@7.0.2(postcss@8.4.29): + resolution: {integrity: sha512-/SSxf/90Obye49VZIfc0ls4H0P6i6V1iHv0pzZH8SdgvZOPFkF37ef1r5cyWcMflJSFJ5bfuoluTnFnBBFiuSA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + /postcss@8.4.29: resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} engines: {node: ^10 || ^12 || >=14} @@ -4277,6 +5254,11 @@ packages: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} dev: false + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: false + /resolve-options@1.1.0: resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==} engines: {node: '>= 0.10'} @@ -4291,7 +5273,6 @@ packages: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} @@ -4448,6 +5429,11 @@ packages: source-map: 0.6.1 dev: true + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -4552,17 +5538,19 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: true + /stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + dev: false + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} @@ -4835,6 +5823,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -5084,6 +6083,11 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} diff --git a/src/components/box.vue b/src/components/box.vue index bfc8704..22a0a80 100644 --- a/src/components/box.vue +++ b/src/components/box.vue @@ -165,7 +165,6 @@ function resize() { onUpdated(resize); onMounted(async () => { - await sleep(50); resize(); if (!main) return; diff --git a/src/core/main/custom/danmaku.ts b/src/core/main/custom/danmaku.ts index f2e7a4c..32f9dc9 100644 --- a/src/core/main/custom/danmaku.ts +++ b/src/core/main/custom/danmaku.ts @@ -22,11 +22,15 @@ interface DanmakuResponse extends ResponseBase { } interface DanmakuInfo { - id: number; + id: string; comment: string; tags: string; - love: number; + love: string; my_love_type: boolean; + userid: string; + deler: string; + upload_time: string; + tower_name: string; } interface DanmakuPostInfo extends Partial { @@ -468,8 +472,8 @@ export class Danmaku extends EventEmitter { data.data.list.forEach(v => { const dan = new Danmaku(); - dan.id = v.id; - dan.likedNum = v.love; + dan.id = parseInt(v.id); + dan.likedNum = parseInt(v.love); dan.liked = v.my_love_type; dan.decode(v); dan.posted = true; diff --git a/src/core/main/custom/toolbar.ts b/src/core/main/custom/toolbar.ts index 26bf181..aa17240 100644 --- a/src/core/main/custom/toolbar.ts +++ b/src/core/main/custom/toolbar.ts @@ -1,21 +1,16 @@ import { EmitableEvent, EventEmitter } from '@/core/common/eventEmitter'; -import { KeyCode } from '@/plugin/keyCodes'; -import { deleteWith, flipBinary, has } from '@/plugin/utils'; -import { - FunctionalComponent, - markRaw, - nextTick, - reactive, - shallowReactive -} from 'vue'; -import { - createToolbarComponents, - createToolbarEditorComponents -} from '../init/toolbar'; -import { gameKey } from '../init/hotkey'; -import { unwarpBinary } from './hotkey'; +import { deleteWith, has } from '@/plugin/utils'; +import { Component, nextTick, reactive, shallowReactive } from 'vue'; import { fixedUi } from '../init/ui'; import { GameStorage } from '../storage'; +import type { + CustomToolbarComponent, + MiscToolbar, + SettableItemData, + ToolbarItemBase, + ToolbarItemMap, + ToolbarItemType +} from '../init/toolbar'; interface CustomToolbarEvent extends EmitableEvent { add: (item: ValueOf) => void; @@ -25,45 +20,6 @@ interface CustomToolbarEvent extends EmitableEvent { posChange: (bar: CustomToolbar) => void; } -interface ToolbarItemBase { - type: T; - id: string; - noDefaultAction?: boolean; -} - -// 快捷键 -interface HotkeyToolbarItem extends ToolbarItemBase<'hotkey'> { - key: KeyCode; - assist: number; -} - -// 使用道具 -interface ItemToolbarItem extends ToolbarItemBase<'item'> { - item: ItemIdOf<'tools' | 'constants'>; -} - -// 切换辅助按键 ctrl alt shift -interface AssistKeyToolbarItem extends ToolbarItemBase<'assistKey'> { - assist: KeyCode.Ctrl | KeyCode.Shift | KeyCode.Alt; -} - -interface MinimatToolbar extends ToolbarItemBase<'minimap'> { - action: boolean; - scale: number; - noBorder: boolean; - showInfo: boolean; - autoLocate: boolean; - width: number; - height: number; -} - -interface ToolbarItemMap { - hotkey: HotkeyToolbarItem; - item: ItemToolbarItem; - assistKey: AssistKeyToolbarItem; - minimap: MinimatToolbar; -} - interface ToolbarSaveData { x: number; y: number; @@ -72,21 +28,6 @@ interface ToolbarSaveData { items: ValueOf[]; } -export type ToolbarItemType = keyof ToolbarItemMap; - -export type SettableItemData = - Omit; - -export interface CustomToolbarProps< - T extends ToolbarItemType = ToolbarItemType -> { - item: ToolbarItemMap[T]; - toolbar: CustomToolbar; -} -export type CustomToolbarComponent< - T extends ToolbarItemType = ToolbarItemType -> = FunctionalComponent>; - type ToolItemEmitFn = ( this: CustomToolbar, id: string, @@ -101,18 +42,91 @@ interface RegisteredCustomToolInfo { onCreate: (item: any) => ToolbarItemBase; } -const COM = createToolbarComponents(); -const EDITOR = createToolbarEditorComponents(); +type MiscEmitFn = ( + id: string, + toolbar: CustomToolbar, + item: MiscToolbar +) => void; +type ActivedFn = (info: MiscInfo) => boolean; + +interface MiscInfo { + id: string; + name: string; + emit: MiscEmitFn; + display: Component; + activable?: boolean; + actived?: ActivedFn; +} + +interface Misc { + info: Record; + + /** + * 注册一个杂项工具 + * @param id 杂项工具的id + * @param name 这个工具的名称 + * @param emit 触发这个杂项工具时执行的函数 + * @param display 这个工具的显示组件 + * @param activable 是否是可以被激活的工具,例如打开小地图后显示为激活状态 + */ + register( + this: Misc, + id: string, + name: string, + emit: MiscEmitFn, + display: Component + ): void; + + bindActivable(id: string, activable: boolean, actived?: ActivedFn): void; + + /** + * 刷新所有或指定的包含杂项工具的工具栏 + * @param id 指定包含这个杂项工具的工具栏刷新,例如填drag,则只会刷新包含drag杂项工具的工具栏 + */ + requestRefresh(id?: string): void; +} const toolbarStorage = new GameStorage>( GameStorage.fromAuthor('AncTe', 'toolbar') ); +const misc: Misc = { + info: {}, + register(id, name, emit, display) { + this.info[id] = { id, name, emit, display }; + }, + bindActivable(id, activable, actived) { + this.info[id].activable = activable; + this.info[id].actived = actived; + }, + requestRefresh(id) { + if (id) { + CustomToolbar.list.forEach(v => { + if ( + v.items.some(v => { + return v.type === 'misc' && v.items?.includes(id); + }) + ) { + v.refresh(); + } + }); + } else { + CustomToolbar.list.forEach(v => { + if (v.items.some(v => v.type === 'misc')) { + v.refresh(); + } + }); + } + } +}; + export class CustomToolbar extends EventEmitter { static num: number = 0; static list: CustomToolbar[] = shallowReactive([]); static info: Record = {}; + static misc: Misc = misc; + items: ValueOf[] = reactive([]); num: number = CustomToolbar.num++; id: string; @@ -125,7 +139,7 @@ export class CustomToolbar extends EventEmitter { assistKey: number = 0; showIds: number[] = []; - constructor(id: string) { + constructor(id: string, noshow: boolean = false) { super(); this.id = id; // 按比例设置初始大小 @@ -136,7 +150,7 @@ export class CustomToolbar extends EventEmitter { this.x *= scale; this.y *= scale; - this.show(); + if (!noshow) this.show(); CustomToolbar.list.push(this); } @@ -237,8 +251,15 @@ export class CustomToolbar extends EventEmitter { /** * 显示这个自定义工具栏,可以显示多个,且内容互通 + * @param multi 是否允许显示多个,不填时,如果已经存在这个工具栏,那么将不会显示 */ - show() { + show(multi: boolean = false) { + if ( + !multi && + this.showIds.some(v => fixedUi.stack.some(vv => vv.num === v)) + ) { + return -1; + } const id = fixedUi.open('toolbar', { bar: this }); this.showIds.push(id); return id; @@ -343,96 +364,6 @@ export class CustomToolbar extends EventEmitter { } } -CustomToolbar.register( - 'hotkey', - '快捷键', - function (id, item) { - // 按键 - const assist = item.assist | this.assistKey; - const { ctrl, shift, alt } = unwarpBinary(assist); - const ev = new KeyboardEvent('keyup', { - ctrlKey: ctrl, - shiftKey: shift, - altKey: alt - }); - - // todo: Advanced KeyboardEvent simulate - gameKey.emitKey(item.key, assist, 'up', ev); - return true; - }, - COM.KeyTool, - EDITOR.KeyTool, - item => { - return { - key: KeyCode.Unknown, - assist: 0, - ...item - }; - } -); -CustomToolbar.register( - 'item', - '使用道具', - function (id, item) { - // 道具 - core.tryUseItem(item.item); - return true; - }, - COM.ItemTool, - EDITOR.ItemTool, - item => { - return { - item: 'book', - ...item - }; - } -); -CustomToolbar.register( - 'assistKey', - '辅助按键', - function (id, item) { - // 辅助按键 - if (item.assist === KeyCode.Ctrl) { - this.assistKey = flipBinary(this.assistKey, 0); - } else if (item.assist === KeyCode.Shift) { - this.assistKey = flipBinary(this.assistKey, 1); - } else if (item.assist === KeyCode.Alt) { - this.assistKey = flipBinary(this.assistKey, 2); - } - return true; - }, - COM.AssistKeyTool, - EDITOR.AssistKeyTool, - item => { - return { - assist: KeyCode.Ctrl, - ...item - }; - } -); -CustomToolbar.register( - 'minimap', - '小地图', - function (id, item) { - return true; - }, - COM.MinimapTool, - EDITOR.MinimapTool, - item => { - return { - action: false, - scale: 5, - width: 300, - height: 300, - noBorder: false, - showInfo: false, - autoLocate: true, - ...item, - noDefaultAction: true - }; - } -); - Mota.require('var', 'loading').once('coreInit', () => { CustomToolbar.load(); CustomToolbar.closeAll(); diff --git a/src/core/main/init/toolbar.tsx b/src/core/main/init/toolbar.tsx index 9e89058..e1139a1 100644 --- a/src/core/main/init/toolbar.tsx +++ b/src/core/main/init/toolbar.tsx @@ -1,11 +1,13 @@ import { KeyCode, KeyCodeUtils } from '@/plugin/keyCodes'; -import type { - CustomToolbarComponent, - CustomToolbarProps -} from '../custom/toolbar'; +import { CustomToolbar } from '../custom/toolbar'; import BoxAnimate from '@/components/boxAnimate.vue'; -import { checkAssist } from '../custom/hotkey'; -import { getVitualKeyOnce } from '@/plugin/utils'; +import { checkAssist, unwarpBinary } from '../custom/hotkey'; +import { + flipBinary, + getVitualKeyOnce, + openDanmakuPoster, + parseCss +} from '@/plugin/utils'; import { cloneDeep } from 'lodash-es'; import { Button, @@ -16,9 +18,76 @@ import { } from 'ant-design-vue'; import { mainSetting } from '../setting'; import Minimap from '@/components/minimap.vue'; +import { gameKey } from './hotkey'; +import { FunctionalComponent, StyleValue, h } from 'vue'; +import { mainUi } from './ui'; +import { isMobile } from '@/plugin/use'; +import { EllipsisOutlined } from '@ant-design/icons-vue'; // todo: 新增更改设置的ToolItem +export interface ToolbarItemBase { + type: T; + id: string; + noDefaultAction?: boolean; +} + +// 快捷键 +interface HotkeyToolbarItem extends ToolbarItemBase<'hotkey'> { + key: KeyCode; + assist: number; +} + +// 使用道具 +interface ItemToolbarItem extends ToolbarItemBase<'item'> { + item: ItemIdOf<'tools' | 'constants'>; +} + +// 切换辅助按键 ctrl alt shift +interface AssistKeyToolbarItem extends ToolbarItemBase<'assistKey'> { + assist: KeyCode.Ctrl | KeyCode.Shift | KeyCode.Alt; +} + +// 小地图 +interface MinimapToolbar extends ToolbarItemBase<'minimap'> { + action: boolean; + scale: number; + noBorder: boolean; + showInfo: boolean; + autoLocate: boolean; + width: number; + height: number; +} + +// 杂项工具栏 +export interface MiscToolbar extends ToolbarItemBase<'misc'> { + folded: boolean; + items: string[]; +} + +export interface ToolbarItemMap { + hotkey: HotkeyToolbarItem; + item: ItemToolbarItem; + assistKey: AssistKeyToolbarItem; + minimap: MinimapToolbar; + misc: MiscToolbar; +} + +export type ToolbarItemType = keyof ToolbarItemMap; + +export type SettableItemData = + Omit; + +export interface CustomToolbarProps< + T extends ToolbarItemType = ToolbarItemType +> { + item: ToolbarItemMap[T]; + toolbar: CustomToolbar; +} +export type CustomToolbarComponent< + T extends ToolbarItemType = ToolbarItemType +> = FunctionalComponent>; + interface Components { DefaultTool: CustomToolbarComponent; KeyTool: CustomToolbarComponent<'hotkey'>; @@ -139,6 +208,98 @@ function MinimapTool(props: CustomToolbarProps<'minimap'>) { ); } +function MiscTool(props: CustomToolbarProps<'misc'>) { + const { item, toolbar } = props; + const scale = mainSetting.getValue('ui.toolbarScale', 100) / 100; + + const triggerFold = () => { + item.folded = !item.folded; + toolbar.refresh(); + }; + + const unfoldStyle = ` + min-width: ${50 * scale}px; + display: flex; + align-items: center; + justify-content: center; + font-size: ${18 * scale}px; + `; + const blockStyle = ` + min-width: ${40 * scale}px; + display: flex; + align-items: center; + justify-content: center; + height: ${40 * scale}px; + border: 1px solid #ddd; + `; + const toolStyle = ` + display: flex; + align-items: center; + min-width: ${40 * scale}px; + height: ${40 * scale}px; + border: 1px solid #ddd; + margin-left: ${5 * scale}px; + justify-content: center; + `; + const toolActivedStyle = ` + display: flex; + align-items: center; + min-width: ${40 * scale}px; + height: ${40 * scale}px; + border: 1px solid #ddd; + margin-left: ${5 * scale}px; + justify-content: center; + color: aqua; + `; + const containerStyle = ` + display: flex; + align-items: center; + padding: 0 ${5 * scale}px; + `; + + return ( +
+ {item.folded ? ( +
+ +
+ ) : ( +
+ + 折叠 + + {item.items.map(v => { + const info = CustomToolbar.misc.info[v]; + const { actived } = info; + const style = actived?.(info) + ? toolActivedStyle + : toolStyle; + if (!info) return ; + else + return ( +
info.emit(v, toolbar, item)} + > + {info.display} +
+ ); + })} +
+ )} +
+ ); +} + function DefaultToolEditor(props: CustomToolbarProps) { return ; } @@ -407,3 +568,332 @@ function MinimapToolEditor(props: CustomToolbarProps<'minimap'>) { ); } + +function MiscToolEditor(props: CustomToolbarProps<'misc'>) { + const { item, toolbar } = props; + + const misc = CustomToolbar.misc.info; + const values = Object.values(misc); + + const divStyle = ` + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + padding: 5px 5%; + margin: 1%; + width: 100%; + border-bottom: 1px solid #888; + `; + const addStyle = ` + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 0 5%; + margin: 1%; + width: 100%; + `; + const containerStyle = ` + display: flex; + flex-direction: column; + `; + + return ( +
+ {item.items.map((v, i) => { + return ( +
+ 第{i + 1}个工具 + +
+ ); + })} +
+ +
+
+ ); +} + +CustomToolbar.register( + 'hotkey', + '快捷键', + function (id, item) { + // 按键 + const assist = item.assist | this.assistKey; + const { ctrl, shift, alt } = unwarpBinary(assist); + const ev = new KeyboardEvent('keyup', { + ctrlKey: ctrl, + shiftKey: shift, + altKey: alt + }); + + // todo: Advanced KeyboardEvent simulate + gameKey.emitKey(item.key, assist, 'up', ev); + return true; + }, + KeyTool, + KeyToolEdtior, + item => { + return { + key: KeyCode.Unknown, + assist: 0, + ...item + }; + } +); +CustomToolbar.register( + 'item', + '使用道具', + function (id, item) { + // 道具 + core.tryUseItem(item.item); + return true; + }, + ItemTool, + ItemToolEditor, + item => { + return { + item: 'book', + ...item + }; + } +); +CustomToolbar.register( + 'assistKey', + '辅助按键', + function (id, item) { + // 辅助按键 + if (item.assist === KeyCode.Ctrl) { + this.assistKey = flipBinary(this.assistKey, 0); + } else if (item.assist === KeyCode.Shift) { + this.assistKey = flipBinary(this.assistKey, 1); + } else if (item.assist === KeyCode.Alt) { + this.assistKey = flipBinary(this.assistKey, 2); + } + return true; + }, + AssistKeyTool, + AssistKeyToolEditor, + item => { + return { + assist: KeyCode.Ctrl, + ...item + }; + } +); +CustomToolbar.register( + 'minimap', + '小地图', + function (id, item) { + return true; + }, + MinimapTool, + MinimapToolEditor, + item => { + return { + action: false, + scale: 5, + width: 300, + height: 300, + noBorder: false, + showInfo: false, + autoLocate: true, + ...item, + noDefaultAction: true + }; + } +); +CustomToolbar.register( + 'misc', + '杂项', + function (id, item) { + return true; + }, + MiscTool, + MiscToolEditor, + item => { + return { + items: [], + folded: true, + ...item, + noDefaultAction: true + }; + } +); + +// 杂项注册 +Mota.require('var', 'hook').once('reset', () => { + // 小地图是否显示 + let minimapTool = CustomToolbar.list.some(v => v.id === '@misc/minimap'); + mainUi.on('close', () => { + let before = minimapTool; + minimapTool = CustomToolbar.list.some(v => v.id === '@misc/minimap'); + if (before !== minimapTool) { + CustomToolbar.misc.requestRefresh('minimap'); + } + }); + + CustomToolbar.misc.register( + 'danmaku', + '发弹幕', + openDanmakuPoster, + h('span', '发弹幕') + ); + CustomToolbar.misc.register( + 'toolbox', + '道具栏', + () => { + mainUi.open('toolbox'); + }, + + ); + CustomToolbar.misc.register( + 'virtualKey', + '虚拟键盘', + () => { + getVitualKeyOnce(); + }, + + ); + CustomToolbar.misc.register( + 'shop', + '快捷商店', + () => { + core.openQuickShop(true); + }, + + ); + CustomToolbar.misc.register( + 'save', + '存档', + () => { + core.save(true); + }, + + ); + CustomToolbar.misc.register( + 'load', + '读档', + () => { + core.load(true); + }, + + ); + CustomToolbar.misc.register( + 'redo', + '回退(自动存档)', + () => { + core.doSL('autoSave', 'load'); + }, + h('span', '回退') + ); + CustomToolbar.misc.register( + 'load', + '恢复(撤销自动存档)', + () => { + core.doSL('autoSave', 'reload'); + }, + h('span', '恢复') + ); + CustomToolbar.misc.register( + 'setting', + '系统设置', + () => { + core.openSettings(true); + }, + + ); + CustomToolbar.misc.register( + 'minimap', + '小地图', + (id, tool) => { + const index = CustomToolbar.list.findIndex( + v => v.id === '@misc/minimap' + ); + minimapTool = index !== -1; + if (minimapTool) { + const tool = CustomToolbar.list[index]; + tool.closeAll(); + CustomToolbar.list.splice(index, 1); + minimapTool = false; + } else { + const tool = new CustomToolbar('@misc/minimap', true); + const info = CustomToolbar.info['minimap'].onCreate({ + id: `minimap`, + type: 'minimap' + }) as MinimapToolbar; + info.noBorder = true; + info.action = true; + info.showInfo = true; + if (!isMobile) { + tool.x = window.innerWidth - 420; + tool.y = 100; + tool.width = 320; + tool.height = 320; + } else { + info.width = 150; + info.height = 150; + tool.x = window.innerWidth - 220; + tool.y = 50; + tool.width = 170; + tool.height = 170; + } + + tool.add(info); + tool.show(); + minimapTool = true; + } + tool.refresh(); + }, + h('span', '小地图') + ); + // CustomToolbar.misc.register( + // 'drag', + // '地图拖动', + // () => { + // // todo + // }, + // h('span', '拖动地图') + // ); + + CustomToolbar.misc.bindActivable('minimap', true, () => minimapTool); +}); diff --git a/src/ui/toolEditor.vue b/src/ui/toolEditor.vue index 4c82099..1db645b 100644 --- a/src/ui/toolEditor.vue +++ b/src/ui/toolEditor.vue @@ -191,7 +191,7 @@