feat: 更换通知插件

This commit is contained in:
imsyy 2023-08-04 18:11:51 +08:00
parent 357c10240b
commit 1b016cb037
14 changed files with 524 additions and 791 deletions

View File

@ -11,16 +11,15 @@
"dependencies": {
"axios": "^1.4.0",
"fetch-jsonp": "^1.3.0",
"notivue": "^1.1.3",
"pinia": "^2.1.4",
"pinia-plugin-persistedstate": "^3.2.0",
"sass": "^1.64.1",
"vite-plugin-pwa": "^0.16.4",
"vue": "^3.3.4",
"vue3-perfect-scrollbar": "^1.6.1"
"vue": "^3.3.4"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.2.3",
"naive-ui": "^2.34.4",
"terser": "^5.19.2",
"vite": "^4.4.5"
}

View File

@ -11,9 +11,6 @@ dependencies:
fetch-jsonp:
specifier: ^1.3.0
version: 1.3.0
notivue:
specifier: ^1.1.3
version: 1.1.3
pinia:
specifier: ^2.1.4
version: 2.1.4(vue@3.3.4)
@ -29,14 +26,14 @@ dependencies:
vue:
specifier: ^3.3.4
version: 3.3.4
vue3-perfect-scrollbar:
specifier: ^1.6.1
version: 1.6.1(postcss@8.4.27)
devDependencies:
'@vitejs/plugin-vue':
specifier: ^4.2.3
version: 4.2.3(vite@4.4.6)(vue@3.3.4)
naive-ui:
specifier: ^2.34.4
version: 2.34.4(vue@3.3.4)
terser:
specifier: ^5.19.2
version: 5.19.2
@ -1194,7 +1191,6 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.13.11
dev: false
/@babel/template@7.22.5:
resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==}
@ -1231,6 +1227,26 @@ packages:
'@babel/helper-validator-identifier': 7.22.5
to-fast-properties: 2.0.0
/@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: true
/@css-render/vue3-ssr@0.15.12(vue@3.3.4):
resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==}
peerDependencies:
vue: ^3.0.11
dependencies:
vue: 3.3.4
dev: true
/@emotion/hash@0.8.0:
resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
dev: true
/@esbuild/android-arm64@0.18.16:
resolution: {integrity: sha512-wsCqSPqLz+6Ov+OM4EthU43DyYVVyfn15S4j1bJzylDpc1r1jZFFfJQNfDuT8SlgwuqpmpJXK4uPlHGw6ve7eA==}
engines: {node: '>=12'}
@ -1441,6 +1457,10 @@ packages:
'@jridgewell/resolve-uri': 3.1.0
'@jridgewell/sourcemap-codec': 1.4.14
/@juggle/resize-observer@3.4.0:
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
dev: true
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@ -1525,15 +1545,24 @@ packages:
string.prototype.matchall: 4.0.8
dev: false
/@trysound/sax@0.2.0:
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
dev: false
/@types/estree@0.0.39:
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
dev: false
/@types/katex@0.14.0:
resolution: {integrity: sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA==}
dev: true
/@types/lodash-es@4.17.8:
resolution: {integrity: sha512-euY3XQcZmIzSy7YH5+Unb3b2X12Wtk54YWINBvvGQ5SmMvwb11JQskGsfkH/5HXK77Kr8GF0wkVDIxzAisWtog==}
dependencies:
'@types/lodash': 4.14.196
dev: true
/@types/lodash@4.14.196:
resolution: {integrity: sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==}
dev: true
/@types/node@20.4.5:
resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==}
dev: false
@ -1690,6 +1719,10 @@ packages:
is-shared-array-buffer: 1.0.2
dev: false
/async-validator@4.2.5:
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
dev: true
/async@3.2.4:
resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
dev: false
@ -1762,10 +1795,6 @@ packages:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
/boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
dev: false
/brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
@ -1811,15 +1840,6 @@ packages:
get-intrinsic: 1.2.1
dev: false
/caniuse-api@3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
dependencies:
browserslist: 4.21.10
caniuse-lite: 1.0.30001518
lodash.memoize: 4.1.2
lodash.uniq: 4.5.0
dev: false
/caniuse-lite@1.0.30001518:
resolution: {integrity: sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==}
dev: false
@ -1876,10 +1896,6 @@ packages:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: false
/colord@2.9.3:
resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
dev: false
/combined-stream@1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
@ -1890,11 +1906,6 @@ packages:
/commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
/commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
dev: false
/common-tags@1.8.2:
resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
engines: {node: '>=4.0.0'}
@ -1919,113 +1930,35 @@ packages:
engines: {node: '>=8'}
dev: false
/css-declaration-sorter@6.4.1(postcss@8.4.27):
resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==}
engines: {node: ^10 || ^12 || >=14}
peerDependencies:
postcss: ^8.0.9
/css-render@0.15.12:
resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==}
dependencies:
postcss: 8.4.27
dev: false
'@emotion/hash': 0.8.0
csstype: 3.0.11
dev: true
/css-select@4.3.0:
resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
dependencies:
boolbase: 1.0.0
css-what: 6.1.0
domhandler: 4.3.1
domutils: 2.8.0
nth-check: 2.1.1
dev: false
/css-tree@1.1.3:
resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
engines: {node: '>=8.0.0'}
dependencies:
mdn-data: 2.0.14
source-map: 0.6.1
dev: false
/css-what@6.1.0:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
dev: false
/cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
hasBin: true
dev: false
/cssnano-preset-default@5.2.14(postcss@8.4.27):
resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
css-declaration-sorter: 6.4.1(postcss@8.4.27)
cssnano-utils: 3.1.0(postcss@8.4.27)
postcss: 8.4.27
postcss-calc: 8.2.4(postcss@8.4.27)
postcss-colormin: 5.3.1(postcss@8.4.27)
postcss-convert-values: 5.1.3(postcss@8.4.27)
postcss-discard-comments: 5.1.2(postcss@8.4.27)
postcss-discard-duplicates: 5.1.0(postcss@8.4.27)
postcss-discard-empty: 5.1.1(postcss@8.4.27)
postcss-discard-overridden: 5.1.0(postcss@8.4.27)
postcss-merge-longhand: 5.1.7(postcss@8.4.27)
postcss-merge-rules: 5.1.4(postcss@8.4.27)
postcss-minify-font-values: 5.1.0(postcss@8.4.27)
postcss-minify-gradients: 5.1.1(postcss@8.4.27)
postcss-minify-params: 5.1.4(postcss@8.4.27)
postcss-minify-selectors: 5.2.1(postcss@8.4.27)
postcss-normalize-charset: 5.1.0(postcss@8.4.27)
postcss-normalize-display-values: 5.1.0(postcss@8.4.27)
postcss-normalize-positions: 5.1.1(postcss@8.4.27)
postcss-normalize-repeat-style: 5.1.1(postcss@8.4.27)
postcss-normalize-string: 5.1.0(postcss@8.4.27)
postcss-normalize-timing-functions: 5.1.0(postcss@8.4.27)
postcss-normalize-unicode: 5.1.1(postcss@8.4.27)
postcss-normalize-url: 5.1.0(postcss@8.4.27)
postcss-normalize-whitespace: 5.1.1(postcss@8.4.27)
postcss-ordered-values: 5.1.3(postcss@8.4.27)
postcss-reduce-initial: 5.1.2(postcss@8.4.27)
postcss-reduce-transforms: 5.1.0(postcss@8.4.27)
postcss-svgo: 5.1.0(postcss@8.4.27)
postcss-unique-selectors: 5.1.1(postcss@8.4.27)
dev: false
/cssnano-utils@3.1.0(postcss@8.4.27):
resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
dev: false
/cssnano@5.1.15(postcss@8.4.27):
resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
cssnano-preset-default: 5.2.14(postcss@8.4.27)
lilconfig: 2.1.0
postcss: 8.4.27
yaml: 1.10.2
dev: false
/csso@4.2.0:
resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
engines: {node: '>=8.0.0'}
dependencies:
css-tree: 1.1.3
dev: false
/csstype@3.0.11:
resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==}
dev: true
/csstype@3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
/date-fns-tz@1.3.8(date-fns@2.30.0):
resolution: {integrity: sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==}
peerDependencies:
date-fns: '>=2.0.0'
dependencies:
date-fns: 2.30.0
dev: true
/date-fns@2.30.0:
resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
engines: {node: '>=0.11'}
dependencies:
'@babel/runtime': 7.22.6
dev: true
/debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
@ -2056,33 +1989,6 @@ packages:
engines: {node: '>=0.4.0'}
dev: false
/dom-serializer@1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
dependencies:
domelementtype: 2.3.0
domhandler: 4.3.1
entities: 2.2.0
dev: false
/domelementtype@2.3.0:
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
dev: false
/domhandler@4.3.1:
resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
engines: {node: '>= 4'}
dependencies:
domelementtype: 2.3.0
dev: false
/domutils@2.8.0:
resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
dependencies:
dom-serializer: 1.4.1
domelementtype: 2.3.0
domhandler: 4.3.1
dev: false
/ejs@3.1.9:
resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==}
engines: {node: '>=0.10.0'}
@ -2095,10 +2001,6 @@ packages:
resolution: {integrity: sha512-qjTA8djMXd+ruoODDFGnRCRBpID+AAfYWCyGtYTNhsuwxI19s8q19gbjKTwRS5z/LyVf5wICaIiPQGLekmbJbA==}
dev: false
/entities@2.2.0:
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
dev: false
/es-abstract@1.22.1:
resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==}
engines: {node: '>= 0.4'}
@ -2213,6 +2115,10 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
/evtd@0.2.4:
resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==}
dev: true
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: false
@ -2427,6 +2333,11 @@ packages:
function-bind: 1.1.1
dev: false
/highlight.js@11.8.0:
resolution: {integrity: sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==}
engines: {node: '>=12.0.0'}
dev: true
/idb@7.1.1:
resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
dev: false
@ -2657,30 +2568,20 @@ packages:
engines: {node: '>=6'}
dev: false
/lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
dev: false
/lodash-es@4.17.21:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
dev: true
/lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
dev: false
/lodash.memoize@4.1.2:
resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
dev: false
/lodash.sortby@4.7.0:
resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
dev: false
/lodash.uniq@4.5.0:
resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
dev: false
/lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
dev: false
/lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@ -2700,10 +2601,6 @@ packages:
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
/mdn-data@2.0.14:
resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
dev: false
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: false
@ -2750,6 +2647,32 @@ packages:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: false
/naive-ui@2.34.4(vue@3.3.4):
resolution: {integrity: sha512-aPG8PDfhSzIzn/jSC9y3Jb3Pe2wHJ7F0cFV1EWlbImSrZECeUmoc+fIcOSWbizoztkKfaUAeKwYdMl09MKkj1g==}
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.4)
'@types/katex': 0.14.0
'@types/lodash': 4.14.196
'@types/lodash-es': 4.17.8
async-validator: 4.2.5
css-render: 0.15.12
date-fns: 2.30.0
date-fns-tz: 1.3.8(date-fns@2.30.0)
evtd: 0.2.4
highlight.js: 11.8.0
lodash: 4.17.21
lodash-es: 4.17.21
seemly: 0.3.6
treemate: 0.3.11
vdirs: 0.1.8(vue@3.3.4)
vooks: 0.2.12(vue@3.3.4)
vue: 3.3.4
vueuc: 0.4.51(vue@3.3.4)
dev: true
/nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@ -2763,22 +2686,6 @@ packages:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
/normalize-url@6.1.0:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
dev: false
/notivue@1.1.3:
resolution: {integrity: sha512-Pjn3sRmqzcvkPorlcv1FyoUbtfCmv6u6Sn/0THdYzjW9Mt6W43Sq1q5HnC6WBzTqEofNW0ggTYWoyilMn/6h6Q==}
requiresBuild: true
dev: false
/nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
dependencies:
boolbase: 1.0.0
dev: false
/object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
dev: false
@ -2813,14 +2720,6 @@ packages:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: false
/perfect-scrollbar@1.5.5:
resolution: {integrity: sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==}
dev: false
/picocolors@0.2.1:
resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==}
dev: false
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
@ -2828,11 +2727,6 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
/pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
dev: false
/pinia-plugin-persistedstate@3.2.0(pinia@2.1.4):
resolution: {integrity: sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==}
peerDependencies:
@ -2858,322 +2752,6 @@ packages:
vue-demi: 0.14.5(vue@3.3.4)
dev: false
/postcss-calc@8.2.4(postcss@8.4.27):
resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==}
peerDependencies:
postcss: ^8.2.2
dependencies:
postcss: 8.4.27
postcss-selector-parser: 6.0.13
postcss-value-parser: 4.2.0
dev: false
/postcss-colormin@5.3.1(postcss@8.4.27):
resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
browserslist: 4.21.10
caniuse-api: 3.0.0
colord: 2.9.3
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-convert-values@5.1.3(postcss@8.4.27):
resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
browserslist: 4.21.10
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-discard-comments@5.1.2(postcss@8.4.27):
resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
dev: false
/postcss-discard-duplicates@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
dev: false
/postcss-discard-empty@5.1.1(postcss@8.4.27):
resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
dev: false
/postcss-discard-overridden@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
dev: false
/postcss-import@12.0.1:
resolution: {integrity: sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==}
engines: {node: '>=6.0.0'}
dependencies:
postcss: 7.0.39
postcss-value-parser: 3.3.1
read-cache: 1.0.0
resolve: 1.22.2
dev: false
/postcss-merge-longhand@5.1.7(postcss@8.4.27):
resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
stylehacks: 5.1.1(postcss@8.4.27)
dev: false
/postcss-merge-rules@5.1.4(postcss@8.4.27):
resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
browserslist: 4.21.10
caniuse-api: 3.0.0
cssnano-utils: 3.1.0(postcss@8.4.27)
postcss: 8.4.27
postcss-selector-parser: 6.0.13
dev: false
/postcss-minify-font-values@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-minify-gradients@5.1.1(postcss@8.4.27):
resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
colord: 2.9.3
cssnano-utils: 3.1.0(postcss@8.4.27)
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-minify-params@5.1.4(postcss@8.4.27):
resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
browserslist: 4.21.10
cssnano-utils: 3.1.0(postcss@8.4.27)
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-minify-selectors@5.2.1(postcss@8.4.27):
resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-selector-parser: 6.0.13
dev: false
/postcss-normalize-charset@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
dev: false
/postcss-normalize-display-values@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-normalize-positions@5.1.1(postcss@8.4.27):
resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-normalize-repeat-style@5.1.1(postcss@8.4.27):
resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-normalize-string@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-normalize-timing-functions@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-normalize-unicode@5.1.1(postcss@8.4.27):
resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
browserslist: 4.21.10
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-normalize-url@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
normalize-url: 6.1.0
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-normalize-whitespace@5.1.1(postcss@8.4.27):
resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-ordered-values@5.1.3(postcss@8.4.27):
resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
cssnano-utils: 3.1.0(postcss@8.4.27)
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-reduce-initial@5.1.2(postcss@8.4.27):
resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
browserslist: 4.21.10
caniuse-api: 3.0.0
postcss: 8.4.27
dev: false
/postcss-reduce-transforms@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
dev: false
/postcss-selector-parser@6.0.13:
resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
engines: {node: '>=4'}
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
dev: false
/postcss-svgo@5.1.0(postcss@8.4.27):
resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-value-parser: 4.2.0
svgo: 2.8.0
dev: false
/postcss-unique-selectors@5.1.1(postcss@8.4.27):
resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
postcss: 8.4.27
postcss-selector-parser: 6.0.13
dev: false
/postcss-value-parser@3.3.1:
resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==}
dev: false
/postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
dev: false
/postcss@7.0.39:
resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==}
engines: {node: '>=6.0.0'}
dependencies:
picocolors: 0.2.1
source-map: 0.6.1
dev: false
/postcss@8.4.27:
resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==}
engines: {node: ^10 || ^12 || >=14}
@ -3211,12 +2789,6 @@ packages:
safe-buffer: 5.2.1
dev: false
/read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
dependencies:
pify: 2.3.0
dev: false
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@ -3236,7 +2808,6 @@ packages:
/regenerator-runtime@0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
dev: false
/regenerator-transform@0.15.1:
resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==}
@ -3356,6 +2927,10 @@ packages:
immutable: 4.3.1
source-map-js: 1.0.2
/seemly@0.3.6:
resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==}
dev: true
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@ -3401,11 +2976,6 @@ packages:
deprecated: Please use @jridgewell/sourcemap-codec instead
dev: false
/stable@0.1.8:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
dev: false
/string.prototype.matchall@4.0.8:
resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==}
dependencies:
@ -3458,17 +3028,6 @@ packages:
engines: {node: '>=10'}
dev: false
/stylehacks@5.1.1(postcss@8.4.27):
resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
postcss: ^8.2.15
dependencies:
browserslist: 4.21.10
postcss: 8.4.27
postcss-selector-parser: 6.0.13
dev: false
/supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@ -3488,20 +3047,6 @@ packages:
engines: {node: '>= 0.4'}
dev: false
/svgo@2.8.0:
resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
engines: {node: '>=10.13.0'}
hasBin: true
dependencies:
'@trysound/sax': 0.2.0
commander: 7.2.0
css-select: 4.3.0
css-tree: 1.1.3
csso: 4.2.0
picocolors: 1.0.0
stable: 0.1.8
dev: false
/temp-dir@2.0.0:
resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
engines: {node: '>=8'}
@ -3543,6 +3088,10 @@ packages:
punycode: 2.3.0
dev: false
/treemate@0.3.11:
resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==}
dev: true
/type-fest@0.16.0:
resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
engines: {node: '>=10'}
@ -3652,9 +3201,14 @@ packages:
punycode: 2.3.0
dev: false
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: false
/vdirs@0.1.8(vue@3.3.4):
resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
peerDependencies:
vue: ^3.0.11
dependencies:
evtd: 0.2.4
vue: 3.3.4
dev: true
/vite-plugin-pwa@0.16.4(vite@4.4.6)(workbox-build@7.0.0)(workbox-window@7.0.0):
resolution: {integrity: sha512-lmwHFIs9zI2H9bXJld/zVTbCqCQHZ9WrpyDMqosICDV0FVnCJwniX1NMDB79HGTIZzOQkY4gSZaVTJTw6maz/Q==}
@ -3710,6 +3264,15 @@ packages:
optionalDependencies:
fsevents: 2.3.2
/vooks@0.2.12(vue@3.3.4):
resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
peerDependencies:
vue: ^3.0.0
dependencies:
evtd: 0.2.4
vue: 3.3.4
dev: true
/vue-demi@0.14.5(vue@3.3.4):
resolution: {integrity: sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==}
engines: {node: '>=12'}
@ -3725,16 +3288,6 @@ packages:
vue: 3.3.4
dev: false
/vue3-perfect-scrollbar@1.6.1(postcss@8.4.27):
resolution: {integrity: sha512-r9wfxlFwVyHXMPKG0PnR7fDfJPQ20KEVzKQfSU5by2WKYz2PwV0bTfyfejmEyZXsXL0O8VtSWtgxfPuFR2AGOg==}
dependencies:
cssnano: 5.1.15(postcss@8.4.27)
perfect-scrollbar: 1.5.5
postcss-import: 12.0.1
transitivePeerDependencies:
- postcss
dev: false
/vue@3.3.4:
resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==}
dependencies:
@ -3744,6 +3297,21 @@ packages:
'@vue/server-renderer': 3.3.4(vue@3.3.4)
'@vue/shared': 3.3.4
/vueuc@0.4.51(vue@3.3.4):
resolution: {integrity: sha512-pLiMChM4f+W8czlIClGvGBYo656lc2Y0/mXFSCydcSmnCR1izlKPGMgiYBGjbY9FDkFG8a2HEVz7t0DNzBWbDw==}
peerDependencies:
vue: ^3.0.11
dependencies:
'@css-render/vue3-ssr': 0.15.12(vue@3.3.4)
'@juggle/resize-observer': 3.4.0
css-render: 0.15.12
evtd: 0.2.4
seemly: 0.3.6
vdirs: 0.1.8(vue@3.3.4)
vooks: 0.2.12(vue@3.3.4)
vue: 3.3.4
dev: true
/webidl-conversions@4.0.2:
resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
dev: false
@ -3930,8 +3498,3 @@ packages:
/yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
dev: false
/yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
dev: false

View File

@ -1,36 +1,35 @@
<template>
<!-- 壁纸 -->
<Cover @loadComplete="loadComplete" />
<!-- 主界面 -->
<Transition name="fade" mode="out-in">
<main v-if="status.imgLoadStatus" id="main" @click="mainClick">
<WeatherTime />
<SearchInp />
<Footer />
<!-- Notivue -->
<Notivue v-slot="item">
<Notifications :item="item" />
</Notivue>
</main>
<div v-else id="loading">
<img src="/icon/logo.png" alt="logo" class="logo" />
<span class="tip">开发中</span>
</div>
</Transition>
<Provider>
<!-- 壁纸 -->
<Cover @loadComplete="loadComplete" />
<!-- 主界面 -->
<Transition name="fade" mode="out-in">
<main v-if="status.imgLoadStatus" id="main" @click="mainClick">
<WeatherTime />
<SearchInp />
<Footer />
<!-- Notification -->
<Notification />
</main>
<div v-else id="loading">
<img src="/icon/logo.png" alt="logo" class="logo" />
<span class="tip">开发中</span>
</div>
</Transition>
</Provider>
</template>
<script setup>
import { nextTick } from "vue";
import { statusStore } from "@/stores";
import { Notivue, Notifications, usePush } from "notivue";
import { getGreeting } from "@/utils/timeTools";
import Provider from "@/components/Provider.vue";
import Cover from "@/components/Cover.vue";
import WeatherTime from "@/components/WeatherTime.vue";
import SearchInp from "@/components/SearchInp.vue";
import Footer from "@/components/Footer.vue";
const status = statusStore();
const push = usePush();
//
const welcomeText = import.meta.env.VITE_WELCOME_TEXT ?? "欢迎访问本站";
@ -43,10 +42,9 @@ const mainClick = () => {
//
const loadComplete = () => {
nextTick(() => {
push.info({
title: getGreeting(),
message: welcomeText,
duration: 2000,
$message.info(getGreeting() + "" + welcomeText, {
showIcon: false,
duration: 3000,
});
});
};

View File

@ -0,0 +1,158 @@
<!-- 自定义通知组件 -->
<template>
<Teleport to="body">
<Transition name="fade">
<div
v-show="notiShow"
class="notification"
:style="{ zIndex: notizIndex }"
>
<div class="notification-mask" @click="allNoti.close()" />
<Transition name="fadeDown">
<div v-if="notiShow" :class="['notification-content', notiType]">
<div class="header">
<div class="title" v-html="notiTitle" />
</div>
<div class="content" v-html="notiContent" />
<div class="actions">
<button class="btn" @click="notiCancel">取消</button>
<button class="btn" @click="notiVerify">确定</button>
</div>
</div>
</Transition>
</div>
</Transition>
</Teleport>
</template>
<script setup>
import { onMounted, ref } from "vue";
import { findMaxZIndex } from "@/utils/domTools";
//
const notiShow = ref(false);
const notiTitle = ref(null);
const notiContent = ref(null);
const notiType = ref("dialog");
const notizIndex = ref(2000);
const notiClickVerify = ref(null);
const notiClickCancel = ref(null);
//
const allNoti = {
dialog: (options) => {
if (
typeof options === "undefined" ||
options === null ||
(typeof options === "object" && Object.keys(options).length === 0)
) {
return console.error("Noti:请传入必要数据");
}
//
const { title, content, clickVerify, ClickCancel } = options;
if (!title || !content) return console.error("Noti:参数错误或不完整");
//
notiTitle.value = title;
notiContent.value = content;
notiClickVerify.value = clickVerify;
notiClickCancel.value = ClickCancel;
notizIndex.value = findMaxZIndex();
notiShow.value = true;
},
close: () => {
notiShow.value = false;
notiTitle.value = null;
notiContent.value = null;
notiType.value = null;
notiClickVerify.value = null;
notiClickCancel.value = null;
notizIndex.value = 2000;
},
};
//
const notiCancel = () => {
if (typeof notiClickCancel.value === "function") {
notiClickCancel.value();
}
allNoti.close();
};
//
const notiVerify = () => {
if (typeof notiClickVerify.value === "function") {
notiClickVerify.value();
}
allNoti.close();
};
onMounted(() => {
//
window.$noti = allNoti;
});
</script>
<style lang="scss" scoped>
.notification {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background-color: var(--main-notification-background-color);
backdrop-filter: blur(40px);
.notification-mask {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
}
.notification-content {
width: 60vw;
height: auto;
max-width: 700px;
min-width: min(24rem, 100vw);
border-radius: 8px;
color: var(--main-text-color);
background-color: var(--main-background-light-color);
z-index: 1;
.header {
padding: 20px;
font-weight: bold;
font-size: 20px;
}
.content {
padding: 0 20px;
}
.actions {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-end;
padding: 20px;
.btn {
cursor: pointer;
font-size: 14px;
padding: 9px 16px;
border-radius: 8px;
outline: none;
border: none;
background-color: var(--main-background-light-color);
color: var(--main-text-color);
transition: background-color 0.3s;
&:last-child {
margin-left: 12px;
}
&:hover {
background-color: var(--main-background-hover-color);
}
}
}
}
}
</style>

View File

@ -0,0 +1,59 @@
<template>
<!-- 全局配置组件 -->
<n-config-provider
:locale="zhCN"
:date-locale="dateZhCN"
:theme-overrides="themeOverrides"
abstract
inline-theme-disabled
>
<n-dialog-provider>
<n-notification-provider>
<n-message-provider :max="1">
<slot />
<NaiveProviderContent />
</n-message-provider>
</n-notification-provider>
</n-dialog-provider>
</n-config-provider>
</template>
<script setup>
import { defineComponent } from "vue";
import {
zhCN,
dateZhCN,
NConfigProvider,
NDialogProvider,
NNotificationProvider,
NMessageProvider,
useDialog,
useNotification,
useMessage,
} from "naive-ui";
//
const themeOverrides = {
common: {
fontFamily: "'HarmonyOS_Regular', sans-serif",
},
};
// Naive
const setupNaiveTools = () => {
//
window.$notification = useNotification();
//
window.$message = useMessage();
//
window.$dialog = useDialog();
};
// Naive
const NaiveProviderContent = defineComponent({
setup() {
setupNaiveTools();
},
render() {},
});
</script>

View File

@ -1,7 +1,7 @@
<template>
<Transition name="fadeDown" mode="out-in">
<div v-if="status.engineChangeStatus" class="engine-choose">
<perfect-scrollbar class="scrollbar">
<n-scrollbar style="max-height: 44.5vh">
<div class="all-engine">
<div
v-for="(item, key) in defaultEngine"
@ -12,13 +12,18 @@
<SvgIcon :iconName="`icon-${key}`" />
<span class="name">{{ item.name }}</span>
</div>
<div class="engine" @click="customEngine">
<SvgIcon iconName="icon-custom" />
<span class="name">自定义</span>
</div>
</div>
</perfect-scrollbar>
</n-scrollbar>
</div>
</Transition>
</template>
<script setup>
import { NScrollbar } from "naive-ui";
import { statusStore, setStore } from "@/stores";
import defaultEngine from "@/assets/defaultEngine.json";
@ -34,12 +39,17 @@ const changeSearchEngine = (key) => {
status.setEngineChangeStatus(false);
mainInput?.focus();
};
//
const customEngine = () => {
$message.info("即将支持");
};
</script>
<style lang="scss" scoped>
.engine-choose {
position: absolute;
top: 0;
top: -10px;
left: 0;
width: 100%;
color: var(--main-text-color);
@ -48,53 +58,49 @@ const changeSearchEngine = (key) => {
border-radius: 16px;
box-sizing: border-box;
z-index: 1;
overflow: hidden;
.scrollbar {
.all-engine {
padding: 10px;
max-height: 44vh;
.all-engine {
display: grid;
gap: 10px;
grid-template-columns: repeat(4, minmax(0px, 1fr));
.engine {
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
display: grid;
gap: 10px;
grid-template-columns: repeat(4, minmax(0px, 1fr));
.engine {
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 40px;
padding: 0 16px;
grid-column: span 1 / span 1;
border-radius: 10px;
box-sizing: border-box;
background-color: var(--main-background-light-color);
transition: background-color 0.3s, box-shadow 0.3s;
.i-icon {
margin-right: 12px;
}
.name {
width: 100%;
height: 40px;
padding: 0 16px;
grid-column: span 1 / span 1;
border-radius: 10px;
box-sizing: border-box;
background-color: var(--main-background-light-color);
transition: background-color 0.3s, box-shadow 0.3s;
.i-icon {
margin-right: 12px;
}
.name {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
&.choose {
background-color: var(--main-background-hover-color);
}
&:hover {
background-color: var(--main-background-hover-color);
box-shadow: 0 0 0px 2px var(--main-background-hover-color);
}
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
@media (max-width: 798px) {
grid-template-columns: repeat(3, minmax(0px, 1fr));
&.choose {
background-color: var(--main-background-hover-color);
}
@media (max-width: 580px) {
grid-template-columns: repeat(2, minmax(0px, 1fr));
&:hover {
background-color: var(--main-background-hover-color);
box-shadow: 0 0 0px 2px var(--main-background-hover-color);
}
&:active {
box-shadow: none;
}
}
:deep(.ps__rail-y) {
display: none;
@media (max-width: 798px) {
grid-template-columns: repeat(3, minmax(0px, 1fr));
}
@media (max-width: 580px) {
grid-template-columns: repeat(2, minmax(0px, 1fr));
}
}
}

View File

@ -51,7 +51,6 @@
<script setup>
import { ref } from "vue";
import { usePush } from "notivue";
import { statusStore, setStore } from "@/stores";
import SearchEngine from "@/components/SearchEngine.vue";
import Suggestions from "@/components/Suggestions.vue";
@ -59,7 +58,6 @@ import defaultEngine from "@/assets/defaultEngine.json";
const set = setStore();
const status = statusStore();
const push = usePush();
//
const inputTip = import.meta.env.VITE_INPUT_TIP ?? "想要搜点什么";
@ -130,7 +128,6 @@ const toSearch = (val, type = 1) => {
} else {
status.setSiteStatus("focus");
searchInputRef.value?.focus();
push.info({ message: "请输入搜索内容", duration: 1500 });
}
};
@ -192,7 +189,7 @@ const changeEngine = () => {
transition: transform 0.3s, background-color 0.3s;
z-index: 1;
&.focus {
transform: translateY(-50px);
transform: translateY(-60px);
background-color: var(--main-input-hover-color);
.input {
color: var(--main-text-hover-color);
@ -240,6 +237,9 @@ const changeEngine = () => {
&:hover {
background-color: var(--main-background-color);
}
@media (max-width: 520px) {
font-size: 18px;
}
}
}
}

View File

@ -10,7 +10,7 @@
class="suggestions"
:style="{ height: `${suggestionsHeights}px` }"
>
<perfect-scrollbar class="scrollbar">
<n-scrollbar style="max-height: 45vh">
<!-- 快捷操作 -->
<Transition
name="fade"
@ -61,11 +61,7 @@
@after-leave="changeSuggestionsHeights"
>
<div
v-if="
searchKeyword !== null &&
searchKeywordType === 'text' &&
searchSuggestionsData[0]
"
v-if="searchKeyword !== null && searchSuggestionsData[0]"
class="all-result"
ref="allResultsRef"
>
@ -80,12 +76,13 @@
</div>
</div>
</Transition>
</perfect-scrollbar>
</n-scrollbar>
</div>
</Transition>
</template>
<script setup>
import { NScrollbar } from "naive-ui";
import { nextTick, ref, watch } from "vue";
import { statusStore, setStore } from "@/stores";
import { getSearchSuggestions } from "@/api";
@ -129,7 +126,7 @@ const keywordsSearch = debounce((val) => {
//
searchKeyword.value = searchValue;
//
if (searchKeyword.value && searchKeywordType.value === "text") {
if (searchKeyword.value) {
console.log(val + "的搜索建议");
//
getSearchSuggestions(searchValue)
@ -233,52 +230,50 @@ defineExpose({ keyboardEvents });
<style lang="scss" scoped>
.suggestions {
position: absolute;
top: 0;
top: -10px;
left: 0;
width: 100%;
max-height: 45vh;
overflow: hidden;
color: var(--main-text-color);
background-color: var(--main-background-light-color);
backdrop-filter: blur(30px) saturate(1.25);
border-radius: 16px;
overflow: hidden;
transition: height 0.2s ease, opacity 0.3s ease, transform 0.3s ease;
z-index: 1;
.scrollbar {
max-height: 44vh;
.all-result,
.special-result {
.s-result {
cursor: pointer;
box-sizing: border-box;
display: flex;
flex-direction: row;
align-items: center;
padding: 6px 12px;
font-size: 14px;
transition: background-color 0.3s, padding-left 0.3s;
.i-icon {
opacity: 0.8;
margin-right: 8px;
}
.text {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
@media (min-width: 520px) {
&:hover,
&.focus {
background-color: var(--main-background-light-color);
padding-left: 18px;
}
}
&:active {
.all-result,
.special-result {
.s-result {
cursor: pointer;
box-sizing: border-box;
display: flex;
flex-direction: row;
align-items: center;
padding: 6px 12px;
font-size: 14px;
transition: background-color 0.3s, padding-left 0.3s;
.i-icon {
opacity: 0.8;
margin-right: 8px;
}
.text {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
@media (min-width: 520px) {
&:hover,
&.focus {
background-color: var(--main-background-light-color);
padding-left: 18px;
}
}
&:active {
background-color: var(--main-background-light-color);
padding-left: 18px;
}
}
}
}

View File

@ -61,7 +61,7 @@ const getWeatherData = () => {
data: {},
lastFetchTime: 0,
};
//
//
const timeDifference = currentTime - lastWeatherData.lastFetchTime;
// 2
if (timeDifference >= 2 * 60 * 1000) {
@ -81,6 +81,9 @@ const getWeatherData = () => {
})
.catch((error) => {
console.error("天气获取失败:" + error);
$message.warning("天气获取失败", {
duration: 1500,
});
weatherShow.value = false;
});
} else {
@ -115,7 +118,7 @@ onBeforeUnmount(() => {
transition: transform 0.3s;
z-index: 1;
&.focus {
transform: translateY(-170px);
transform: translateY(-180px);
}
.time {
cursor: pointer;

View File

@ -5,12 +5,8 @@ import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
// IconFont
import SvgIcon from "@/components/SvgIcon.vue";
import "@/utils/iconfont.js";
// Notivue
import { notivue } from "notivue";
import "notivue/notifications.css";
// PerfectScrollbar
import PerfectScrollbar from "vue3-perfect-scrollbar";
import "vue3-perfect-scrollbar/dist/vue3-perfect-scrollbar.css";
// Notification
import Notification from "@/components/Notification.vue";
// 主组件
import App from "@/App.vue";
@ -26,15 +22,6 @@ pinia.use(piniaPluginPersistedstate);
// 挂载
app.use(pinia);
app.use(notivue, {
pauseOnHover: false,
limit: 1,
animations: {
enter: "notivue-slide-in",
leave: "notivue-slide-out",
clearAll: "notivue-fade",
},
});
app.use(PerfectScrollbar);
app.component("Notification", Notification);
app.component("SvgIcon", SvgIcon);
app.mount("#app");

View File

@ -5,7 +5,7 @@ const useSetDataStore = defineStore("setData", {
return {
// 壁纸类别
// 0 本地 / 1 必应 / 2 随机风景 / 3 随机动漫 / 4 自定义
backgroundType: 0,
backgroundType: 2,
// 壁纸遮罩
showBackgroundGray: true,
// 搜索引擎

View File

@ -7,6 +7,7 @@
--main-background-light-color: #ffffff30;
--main-background-hover-color: #ffffff70;
--main-input-hover-color: #ffffff;
--main-notification-background-color: #00000030;
--main-text-shadow: 0px 0px 8px #00000066;
}
@ -30,6 +31,24 @@ body {
height: 100vh;
}
// NMessage
.n-message-container {
top: 20px !important;
.n-message-wrapper {
border-radius: 25px;
backdrop-filter: blur(20px);
.n-message {
padding: 12px 28px;
border-radius: 25px;
background-color: var(--main-background-light-color);
color: var(--main-text-color);
.n-message__icon > * {
color: var(--main-text-color);
}
}
}
}
// Transition 动画
.fade-enter-active,
.fade-leave-active {
@ -64,47 +83,7 @@ body {
.show-enter-from,
.show-leave-to {
opacity: 0;
transform: scale(0.6);
}
// Notivue
.notivue-slide-in {
animation: notivue-slide-in 0.7s ease-in-out both;
}
.notivue-slide-out {
animation: notivue-slide-out 0.3s ease-in-out both;
}
.Notivue__notification {
background-color: var(--main-background-light-color);
// backdrop-filter: blur(30px) saturate(1.25);
border-radius: 25px;
.Notivue__icon,
.Notivue__close {
display: none;
}
.Notivue__content {
padding: 0.8rem 0.5rem;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
.Notivue__content-title {
margin: 0;
margin-right: 6px;
line-height: inherit;
color: var(--main-text-grey-color);
}
.Notivue__content-message {
line-height: inherit;
color: var(--main-text-grey-color);
}
@media (max-width: 480px) {
flex-direction: column;
.Notivue__content-title {
margin-bottom: 6px;
}
}
}
transform: translateY(20px);
}
// 全局动画
@ -171,37 +150,6 @@ body {
}
}
@keyframes notivue-slide-in {
0% {
opacity: 0;
transform: translateY(-200px);
}
50% {
opacity: 1;
transform: translateY(10px);
}
70% {
transform: translateY(-5px);
}
100% {
transform: translateY(0);
}
}
@keyframes notivue-slide-out {
from {
transform: perspective(400px);
}
30% {
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
opacity: 1;
}
to {
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
opacity: 0;
}
}
// 文本选中
::selection {
color: var(--main-text-color);

17
src/utils/domTools.js Normal file
View File

@ -0,0 +1,17 @@
/**
* 查找页面中所有元素的最大 z-index 并返回新元素应该使用的合适 z-index
* @param {number} min - 可选参数新元素应该至少具有的最小 z-index
* @returns {number} 返回新元素应该使用的合适 z-index
*/
export const findMaxZIndex = (min) => {
const elements = document.getElementsByTagName("*");
let maxZIndex = 0;
for (let i = 0; i < elements.length; i++) {
const zIndex = parseInt(window.getComputedStyle(elements[i]).zIndex, 10);
if (zIndex && zIndex > maxZIndex) {
maxZIndex = zIndex;
}
}
// 返回新元素应该使用的合适 z-index 值。如果传入了最小值 min则使用 min否则使用 2000。
return Math.max(min ? min : 2000, maxZIndex + 1);
};

File diff suppressed because one or more lines are too long