feat: better window size

main
imspace 2023-03-07 04:27:48 +08:00
parent 27729dacc6
commit 90aeaefae7
10 changed files with 379 additions and 32 deletions

View File

@ -20,7 +20,8 @@
"react-dom": "^18.2.0",
"react-i18next": "^12.2.0",
"react-icons": "^4.8.0",
"react-router-dom": "^6.8.2"
"react-router-dom": "^6.8.2",
"react-use": "^17.4.0"
},
"devDependencies": {
"@tauri-apps/cli": "^1.2.3",

View File

@ -22,6 +22,7 @@ specifiers:
react-i18next: ^12.2.0
react-icons: ^4.8.0
react-router-dom: ^6.8.2
react-use: ^17.4.0
tailwindcss: ^3.2.7
typescript: ^4.9.5
vite: ^4.1.4
@ -39,6 +40,7 @@ dependencies:
react-i18next: 12.2.0_3yopsigl4h4eb2nqrqfsy65uwi
react-icons: 4.8.0_react@18.2.0
react-router-dom: 6.8.2_biqbaboplfbrettd7655fr4n2y
react-use: registry.npmmirror.com/react-use/17.4.0_biqbaboplfbrettd7655fr4n2y
devDependencies:
'@tauri-apps/cli': 1.2.3
@ -1379,7 +1381,8 @@ packages:
resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.13.11
regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.11
dev: false
/@babel/template/7.20.7:
resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
@ -1804,7 +1807,7 @@ packages:
/ajv/6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
fast-deep-equal: 3.1.3
fast-deep-equal: registry.npmmirror.com/fast-deep-equal/3.1.3
fast-json-stable-stringify: 2.1.0
json-schema-traverse: 0.4.1
uri-js: 4.4.1
@ -1934,7 +1937,7 @@ packages:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
dependencies:
'@babel/runtime': 7.21.0
'@babel/runtime': registry.npmmirror.com/@babel/runtime/7.21.0
cosmiconfig: 7.1.0
resolve: 1.22.1
dev: true
@ -1996,7 +1999,7 @@ packages:
'@babel/preset-env': 7.20.2_@babel+core@7.21.0
'@babel/preset-react': 7.18.6_@babel+core@7.21.0
'@babel/preset-typescript': 7.21.0_@babel+core@7.21.0
'@babel/runtime': 7.21.0
'@babel/runtime': registry.npmmirror.com/@babel/runtime/7.21.0
babel-plugin-macros: 3.1.0
babel-plugin-transform-react-remove-prop-types: 0.4.24
transitivePeerDependencies:
@ -2574,7 +2577,7 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
'@babel/runtime': 7.21.0
'@babel/runtime': registry.npmmirror.com/@babel/runtime/7.21.0
aria-query: 5.1.3
array-includes: 3.1.6
array.prototype.flatmap: 1.3.1
@ -3729,13 +3732,10 @@ packages:
resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
dev: true
/regenerator-runtime/0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
/regenerator-transform/0.15.1:
resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==}
dependencies:
'@babel/runtime': 7.21.0
'@babel/runtime': registry.npmmirror.com/@babel/runtime/7.21.0
dev: true
/regexp.prototype.flags/1.4.3:
@ -4030,17 +4030,13 @@ packages:
strip-bom: 3.0.0
dev: true
/tslib/1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true
/tsutils/3.21.0_typescript@4.9.5:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
tslib: registry.npmmirror.com/tslib/1.14.1
typescript: 4.9.5
dev: true
@ -4253,6 +4249,14 @@ packages:
engines: {node: '>=10'}
dev: true
registry.npmmirror.com/@babel/runtime/7.21.0:
resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.0.tgz}
name: '@babel/runtime'
version: 7.21.0
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.11
registry.npmmirror.com/@esbuild/android-arm/0.16.17:
resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz}
name: '@esbuild/android-arm'
@ -4598,12 +4602,87 @@ packages:
dev: true
optional: true
registry.npmmirror.com/@types/js-cookie/2.2.7:
resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/js-cookie/-/js-cookie-2.2.7.tgz}
name: '@types/js-cookie'
version: 2.2.7
dev: false
registry.npmmirror.com/@xobotyi/scrollbar-width/1.9.5:
resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz}
name: '@xobotyi/scrollbar-width'
version: 1.9.5
dev: false
registry.npmmirror.com/classnames/2.3.2:
resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz}
name: classnames
version: 2.3.2
dev: false
registry.npmmirror.com/copy-to-clipboard/3.3.3:
resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz}
name: copy-to-clipboard
version: 3.3.3
dependencies:
toggle-selection: registry.npmmirror.com/toggle-selection/1.0.6
dev: false
registry.npmmirror.com/css-in-js-utils/3.1.0:
resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz}
name: css-in-js-utils
version: 3.1.0
dependencies:
hyphenate-style-name: registry.npmmirror.com/hyphenate-style-name/1.0.4
dev: false
registry.npmmirror.com/css-tree/1.1.3:
resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz}
name: css-tree
version: 1.1.3
engines: {node: '>=8.0.0'}
dependencies:
mdn-data: registry.npmmirror.com/mdn-data/2.0.14
source-map: registry.npmmirror.com/source-map/0.6.1
dev: false
registry.npmmirror.com/csstype/3.1.1:
resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/csstype/-/csstype-3.1.1.tgz}
name: csstype
version: 3.1.1
dev: false
registry.npmmirror.com/error-stack-parser/2.1.4:
resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz}
name: error-stack-parser
version: 2.1.4
dependencies:
stackframe: registry.npmmirror.com/stackframe/1.3.4
dev: false
registry.npmmirror.com/fast-deep-equal/3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz}
name: fast-deep-equal
version: 3.1.3
registry.npmmirror.com/fast-loops/1.1.3:
resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-loops/-/fast-loops-1.1.3.tgz}
name: fast-loops
version: 1.1.3
dev: false
registry.npmmirror.com/fast-shallow-equal/1.0.0:
resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz}
name: fast-shallow-equal
version: 1.0.0
dev: false
registry.npmmirror.com/fastest-stable-stringify/2.0.2:
resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz}
name: fastest-stable-stringify
version: 2.0.2
dev: false
registry.npmmirror.com/fsevents/2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
name: fsevents
@ -4613,6 +4692,54 @@ packages:
requiresBuild: true
optional: true
registry.npmmirror.com/hyphenate-style-name/1.0.4:
resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz}
name: hyphenate-style-name
version: 1.0.4
dev: false
registry.npmmirror.com/inline-style-prefixer/6.0.4:
resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz}
name: inline-style-prefixer
version: 6.0.4
dependencies:
css-in-js-utils: registry.npmmirror.com/css-in-js-utils/3.1.0
fast-loops: registry.npmmirror.com/fast-loops/1.1.3
dev: false
registry.npmmirror.com/js-cookie/2.2.1:
resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/js-cookie/-/js-cookie-2.2.1.tgz}
name: js-cookie
version: 2.2.1
dev: false
registry.npmmirror.com/mdn-data/2.0.14:
resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz}
name: mdn-data
version: 2.0.14
dev: false
registry.npmmirror.com/nano-css/5.3.5_biqbaboplfbrettd7655fr4n2y:
resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nano-css/-/nano-css-5.3.5.tgz}
id: registry.npmmirror.com/nano-css/5.3.5
name: nano-css
version: 5.3.5
peerDependencies:
react: '*'
react-dom: '*'
dependencies:
css-tree: registry.npmmirror.com/css-tree/1.1.3
csstype: registry.npmmirror.com/csstype/3.1.1
fastest-stable-stringify: registry.npmmirror.com/fastest-stable-stringify/2.0.2
inline-style-prefixer: registry.npmmirror.com/inline-style-prefixer/6.0.4
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
rtl-css-js: registry.npmmirror.com/rtl-css-js/1.16.1
sourcemap-codec: registry.npmmirror.com/sourcemap-codec/1.4.8
stacktrace-js: registry.npmmirror.com/stacktrace-js/2.0.2
stylis: registry.npmmirror.com/stylis/4.1.3
dev: false
registry.npmmirror.com/nanoid/3.3.4:
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz}
name: nanoid
@ -4635,8 +4762,172 @@ packages:
picocolors: registry.npmmirror.com/picocolors/1.0.0
source-map-js: registry.npmmirror.com/source-map-js/1.0.2
registry.npmmirror.com/react-universal-interface/0.6.2_react@18.2.0+tslib@2.5.0:
resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz}
id: registry.npmmirror.com/react-universal-interface/0.6.2
name: react-universal-interface
version: 0.6.2
peerDependencies:
react: '*'
tslib: '*'
dependencies:
react: 18.2.0
tslib: registry.npmmirror.com/tslib/2.5.0
dev: false
registry.npmmirror.com/react-use/17.4.0_biqbaboplfbrettd7655fr4n2y:
resolution: {integrity: sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-use/-/react-use-17.4.0.tgz}
id: registry.npmmirror.com/react-use/17.4.0
name: react-use
version: 17.4.0
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
'@types/js-cookie': registry.npmmirror.com/@types/js-cookie/2.2.7
'@xobotyi/scrollbar-width': registry.npmmirror.com/@xobotyi/scrollbar-width/1.9.5
copy-to-clipboard: registry.npmmirror.com/copy-to-clipboard/3.3.3
fast-deep-equal: registry.npmmirror.com/fast-deep-equal/3.1.3
fast-shallow-equal: registry.npmmirror.com/fast-shallow-equal/1.0.0
js-cookie: registry.npmmirror.com/js-cookie/2.2.1
nano-css: registry.npmmirror.com/nano-css/5.3.5_biqbaboplfbrettd7655fr4n2y
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
react-universal-interface: registry.npmmirror.com/react-universal-interface/0.6.2_react@18.2.0+tslib@2.5.0
resize-observer-polyfill: registry.npmmirror.com/resize-observer-polyfill/1.5.1
screenfull: registry.npmmirror.com/screenfull/5.2.0
set-harmonic-interval: registry.npmmirror.com/set-harmonic-interval/1.0.1
throttle-debounce: registry.npmmirror.com/throttle-debounce/3.0.1
ts-easing: registry.npmmirror.com/ts-easing/0.2.0
tslib: registry.npmmirror.com/tslib/2.5.0
dev: false
registry.npmmirror.com/regenerator-runtime/0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz}
name: regenerator-runtime
version: 0.13.11
registry.npmmirror.com/resize-observer-polyfill/1.5.1:
resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz}
name: resize-observer-polyfill
version: 1.5.1
dev: false
registry.npmmirror.com/rtl-css-js/1.16.1:
resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz}
name: rtl-css-js
version: 1.16.1
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime/7.21.0
dev: false
registry.npmmirror.com/screenfull/5.2.0:
resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/screenfull/-/screenfull-5.2.0.tgz}
name: screenfull
version: 5.2.0
engines: {node: '>=0.10.0'}
dev: false
registry.npmmirror.com/set-harmonic-interval/1.0.1:
resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz}
name: set-harmonic-interval
version: 1.0.1
engines: {node: '>=6.9'}
dev: false
registry.npmmirror.com/source-map-js/1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz}
name: source-map-js
version: 1.0.2
engines: {node: '>=0.10.0'}
registry.npmmirror.com/source-map/0.5.6:
resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.5.6.tgz}
name: source-map
version: 0.5.6
engines: {node: '>=0.10.0'}
dev: false
registry.npmmirror.com/source-map/0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz}
name: source-map
version: 0.6.1
engines: {node: '>=0.10.0'}
dev: false
registry.npmmirror.com/sourcemap-codec/1.4.8:
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz}
name: sourcemap-codec
version: 1.4.8
deprecated: Please use @jridgewell/sourcemap-codec instead
dev: false
registry.npmmirror.com/stack-generator/2.0.10:
resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stack-generator/-/stack-generator-2.0.10.tgz}
name: stack-generator
version: 2.0.10
dependencies:
stackframe: registry.npmmirror.com/stackframe/1.3.4
dev: false
registry.npmmirror.com/stackframe/1.3.4:
resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz}
name: stackframe
version: 1.3.4
dev: false
registry.npmmirror.com/stacktrace-gps/3.1.2:
resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz}
name: stacktrace-gps
version: 3.1.2
dependencies:
source-map: registry.npmmirror.com/source-map/0.5.6
stackframe: registry.npmmirror.com/stackframe/1.3.4
dev: false
registry.npmmirror.com/stacktrace-js/2.0.2:
resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz}
name: stacktrace-js
version: 2.0.2
dependencies:
error-stack-parser: registry.npmmirror.com/error-stack-parser/2.1.4
stack-generator: registry.npmmirror.com/stack-generator/2.0.10
stacktrace-gps: registry.npmmirror.com/stacktrace-gps/3.1.2
dev: false
registry.npmmirror.com/stylis/4.1.3:
resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stylis/-/stylis-4.1.3.tgz}
name: stylis
version: 4.1.3
dev: false
registry.npmmirror.com/throttle-debounce/3.0.1:
resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz}
name: throttle-debounce
version: 3.0.1
engines: {node: '>=10'}
dev: false
registry.npmmirror.com/toggle-selection/1.0.6:
resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz}
name: toggle-selection
version: 1.0.6
dev: false
registry.npmmirror.com/ts-easing/0.2.0:
resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ts-easing/-/ts-easing-0.2.0.tgz}
name: ts-easing
version: 0.2.0
dev: false
registry.npmmirror.com/tslib/1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz}
name: tslib
version: 1.14.1
dev: true
registry.npmmirror.com/tslib/2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.5.0.tgz}
name: tslib
version: 2.5.0
dev: false

View File

@ -2006,6 +2006,7 @@ dependencies = [
"tauri",
"tauri-build",
"tokio",
"urlencoding",
]
[[package]]
@ -2835,6 +2836,12 @@ dependencies = [
"serde",
]
[[package]]
name = "urlencoding"
version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9"
[[package]]
name = "utf-8"
version = "0.7.6"

View File

@ -17,6 +17,7 @@ tauri = { version = "1.2", features = ["fs-all", "path-all", "shell-execute", "s
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tokio = { version = "1.0", features = ["time"] }
urlencoding = "2.1.2"
[features]
# this feature is used for production builds or when `devPath` points to the filesystem

View File

@ -38,8 +38,15 @@ detectAndInject();
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
#[tauri::command]
async fn open_login_window(app: tauri::AppHandle, url: String) -> Option<String> {
let window = WindowBuilder::new(&app, "login", tauri::WindowUrl::App("/".into()))
let encoded = urlencoding::encode(&url);
let window = WindowBuilder::new(
&app,
"login",
tauri::WindowUrl::App(format!("/redirect?url={encoded}").into()),
)
.title("Login")
.center()
.inner_size(1040.0, 960.0)
.initialization_script(INIT_SCRIPT)
.build()
.ok()?;
@ -59,9 +66,6 @@ async fn open_login_window(app: tauri::AppHandle, url: String) -> Option<String>
}
}
});
window
.eval(&format!("window.location.href = '{}'", url))
.ok()?;
loop {
sleep(Duration::from_millis(100)).await;

View File

@ -77,6 +77,8 @@
"title": "s3si.ts",
"width": 400,
"height": 300,
"minWidth": 320,
"minHeight": 300,
"visible": false
}
]

View File

@ -1,26 +1,21 @@
import 'i18n/config';
import { useEffect } from "react";
import { getCurrent } from "@tauri-apps/api/window";
import { Routes, Route } from "react-router-dom";
import { Layout } from "components/Layout";
import { Home } from "pages/Home";
import { Settings } from "pages/Settings";
import { Guide } from 'pages/Guide';
import { RedirectLogin } from 'pages/RedirectLogin';
import { useShowWindow } from 'hooks/useShowWindow';
function App() {
useEffect(() => {
try {
getCurrent().show().catch(e => console.error(e))
} catch (e) {
console.error(e)
}
}, [])
useShowWindow();
return (
<Routes>
<Route path='/' element={<Layout />}>
<Route index element={<Home />} />
<Route path='/settings' element={<Settings />} />
<Route path='/guide' element={<Guide />} />
<Route path='/redirect' element={<RedirectLogin />} />
</Route>
</Routes>
);

View File

@ -0,0 +1,20 @@
import { useCallback, useEffect } from "react";
import { getCurrent } from "@tauri-apps/api/window";
export const useShowWindow = () => {
const show = useCallback(() => {
if (window.location.pathname === '/hide') {
return;
}
try {
getCurrent().show().catch(e => console.error(e))
} catch (e) {
console.error(e)
}
}, [])
useEffect(() => {
show();
}, [show])
return show;
}

View File

@ -0,0 +1,25 @@
import { Loading } from 'components/Loading';
import React, { useEffect } from 'react'
import { useTranslation } from 'react-i18next';
import { useLocation } from 'react-use';
export const RedirectLogin: React.FC = () => {
const { t } = useTranslation();
const state = useLocation();
useEffect(() => {
const search = state.search ?? '';
const index = search.indexOf('url=');
if (index === -1) {
return;
}
const url = decodeURIComponent(search.substring(index + 4));
window.location.href = url;
}, [state])
return <div className='h-full flex justify-center items-center'>
<span className='flex justify-center items-center gap-1'><Loading className='align-middle' />{t('正在跳转到登录页面...')}</span>
</div>
}

View File

@ -71,6 +71,7 @@ const Form: React.FC<{
loading: loginState.loading,
})}
onClick={onLogin}
disabled={loginState.loading}
>{t('网页登录')}</button></span>
</label>
<input