diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 84348734d4..232fbdea61 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -13,19 +13,19 @@ "@codemirror/view": "^6.34.1", "@emoji-mart/data": "^1.2.1", "@emoji-mart/react": "^1.1.1", - "@gatsbyjs/reach-router": "1.3.9", - "@seafile/react-image-lightbox": "3.0.4", + "@gatsbyjs/reach-router": "2.0.1", + "@seafile/react-image-lightbox": "4.0.0", "@seafile/resumablejs": "1.1.16", "@seafile/sdoc-editor": "1.0.217", "@seafile/seafile-calendar": "0.0.28", - "@seafile/seafile-editor": "1.0.133", - "@seafile/sf-metadata-ui-component": "^0.0.68", - "@seafile/stldraw-editor": "0.1.5", + "@seafile/seafile-editor": "2.0.0", + "@seafile/sf-metadata-ui-component": "^0.0.64", + "@seafile/stldraw-editor": "1.0.0", "@uiw/codemirror-extensions-langs": "^4.19.4", "@uiw/codemirror-themes": "^4.23.5", "@uiw/react-codemirror": "^4.19.4", "axios": "^1.7.4", - "chart.js": "3.6.0", + "chart.js": "4.4.7", "classnames": "^2.2.6", "codemirror": "^6.0.1", "copy-to-clipboard": "^3.0.8", @@ -40,19 +40,19 @@ "MD5": "^1.3.0", "object-assign": "4.1.1", "prop-types": "^15.8.1", - "qrcode.react": "^1.0.1", - "react": "17.0.2", + "qrcode.react": "4.2.0", + "react": "18.3.1", "react-app-polyfill": "^2.0.0", - "react-chartjs-2": "4.0.0", + "react-chartjs-2": "5.3.0", "react-cookies": "^0.1.0", "react-dnd": "^2.6.0", "react-dnd-html5-backend": "^2.6.0", - "react-dom": "17.0.2", + "react-dom": "18.3.1", "react-i18next": "^10.12.2", - "react-responsive": "9.0.2", - "react-select": "5.7.0", + "react-responsive": "10.0.0", + "react-select": "5.9.0", "react-transition-group": "4.4.5", - "reactstrap": "8.9.0", + "reactstrap": "9.2.3", "socket.io-client": "^2.2.0", "svg-sprite-loader": "^6.0.11", "svgo-loader": "^3.0.1", @@ -2958,9 +2958,8 @@ }, "node_modules/@emotion/babel-plugin": { "version": "11.13.5", - "resolved": "https://registry.npmmirror.com/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", @@ -2977,24 +2976,21 @@ }, "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/@emotion/babel-plugin/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/@emotion/cache": { "version": "11.14.0", - "resolved": "https://registry.npmmirror.com/@emotion/cache/-/cache-11.14.0.tgz", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", - "license": "MIT", "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", @@ -3005,21 +3001,18 @@ }, "node_modules/@emotion/hash": { "version": "0.9.2", - "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz", - "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@emotion/memoize": { "version": "0.9.0", - "resolved": "https://registry.npmmirror.com/@emotion/memoize/-/memoize-0.9.0.tgz", - "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { "version": "11.14.0", - "resolved": "https://registry.npmmirror.com/@emotion/react/-/react-11.14.0.tgz", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -3041,24 +3034,21 @@ }, "node_modules/@emotion/react/node_modules/hoist-non-react-statics": { "version": "3.3.2", - "resolved": "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } }, "node_modules/@emotion/react/node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/@emotion/serialize": { "version": "1.3.3", - "resolved": "https://registry.npmmirror.com/@emotion/serialize/-/serialize-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", - "license": "MIT", "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", @@ -3069,36 +3059,31 @@ }, "node_modules/@emotion/sheet": { "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/@emotion/sheet/-/sheet-1.4.0.tgz", - "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "node_modules/@emotion/unitless": { "version": "0.10.0", - "resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", - "license": "MIT", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { "version": "1.4.2", - "resolved": "https://registry.npmmirror.com/@emotion/utils/-/utils-1.4.2.tgz", - "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==" }, "node_modules/@emotion/weak-memoize": { "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", @@ -3225,11 +3210,39 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", - "license": "MIT" + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" }, "node_modules/@formatjs/intl-unified-numberformat": { "version": "3.3.7", @@ -3249,18 +3262,16 @@ "license": "MIT" }, "node_modules/@gatsbyjs/reach-router": { - "version": "1.3.9", - "resolved": "https://registry.npmmirror.com/@gatsbyjs/reach-router/-/reach-router-1.3.9.tgz", - "integrity": "sha512-/354IaUSM54xb7K/TxpLBJB94iEAJ3P82JD38T8bLnIDWF+uw8+W/82DKnQ7y24FJcKxtVmG43aiDLG88KSuYQ==", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@gatsbyjs/reach-router/-/reach-router-2.0.1.tgz", + "integrity": "sha512-gmSZniS9/phwgEgpFARMpNg21PkYDZEpfgEzvkgpE/iku4uvXqCrxr86fXbTpI9mkrhKS1SCTYmLGe60VdHcdQ==", "dependencies": { - "invariant": "^2.2.3", - "prop-types": "^15.6.1", - "react-lifecycles-compat": "^3.0.4" + "invariant": "^2.2.4", + "prop-types": "^15.8.1" }, "peerDependencies": { - "react": "15.x || 16.x || 17.x || 18.x", - "react-dom": "15.x || 16.x || 17.x || 18.x" + "react": "18.x", + "react-dom": "18.x" } }, "node_modules/@humanwhocodes/config-array": { @@ -3303,9 +3314,8 @@ }, "node_modules/@hypnosphi/create-react-context": { "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "license": "MIT", "dependencies": { "gud": "^1.0.0", "warning": "^4.0.3" @@ -3317,9 +3327,8 @@ }, "node_modules/@hypnosphi/create-react-context/node_modules/warning": { "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -3997,6 +4006,11 @@ "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", "license": "Apache-2.0" }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==" + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", @@ -4326,573 +4340,734 @@ } } }, - "node_modules/@radix-ui/popper": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/popper/-/popper-0.1.0.tgz", - "integrity": "sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "csstype": "^3.0.4" + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" + }, "node_modules/@radix-ui/primitive": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz", - "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - } + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==" }, "node_modules/@radix-ui/react-alert-dialog": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-0.1.7.tgz", - "integrity": "sha512-b0+TWr0VRWMWM7QcXvvcwbMGNzpTmvPBSBpYcoaD+QnVo3jdJt0k0bghwbYBuywzdyuRNUFf33xwah/57w09QA==", - "license": "MIT", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.6.tgz", + "integrity": "sha512-p4XnPqgej8sZAAReCAKgz1REYZEBLR8hU9Pg27wFnCWIMc8g1ccCs0FjBcy05V15VTu8pAePw/VDYeOm/uZ6yQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-dialog": "0.1.7", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-slot": "0.1.2" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dialog": "1.1.6", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2" }, "peerDependencies": { - "react": ">=16.8", - "react-dom": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-arrow": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-0.1.4.tgz", - "integrity": "sha512-BB6XzAb7Ml7+wwpFdYVtZpK1BlMgqyafSQNGzhIpSZ4uXvXOHPlR5GP8M449JkeQzgQjv9Mp1AsJxFC0KuOtuA==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", + "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.4" + "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/@radix-ui/react-checkbox": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-0.1.5.tgz", - "integrity": "sha512-M8Y4dSXsKSbF+FryG5VvZKr/1MukMVG7swq9p5s7wYb8Rvn0UM0rQ5w8BWmSWSV4BL/gbJdhwVCznwXXlgZRZg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-label": "0.1.5", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-controllable-state": "0.1.0", - "@radix-ui/react-use-previous": "0.1.1", - "@radix-ui/react-use-size": "0.1.1" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "peerDependencies": { - "react": "^16.8 || ^17.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-collection": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-0.1.4.tgz", - "integrity": "sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz", + "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-slot": "0.1.2" + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-compose-refs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz", - "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-context": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz", - "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-context-menu": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-0.1.6.tgz", - "integrity": "sha512-0qa6ABaeqD+WYI+8iT0jH0QLLcV8Kv0xI+mZL4FFnG4ec9H0v+yngb5cfBBfs9e/KM8mDzFFpaeegqsQlLNqyQ==", - "license": "MIT", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.6.tgz", + "integrity": "sha512-aUP99QZ3VU84NPsHeaFt4cQUNgJqFsLLOt/RbbWXszZ6MP0DpDyjkFZORr4RpAEx3sUBk+Kc8h13yGtC5Qw8dg==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-menu": "0.1.6", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-callback-ref": "0.1.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-menu": "2.1.6", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-dialog": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-0.1.7.tgz", - "integrity": "sha512-jXt8srGhHBRvEr9jhEAiwwJzWCWZoGRJ030aC9ja/gkRJbZdy0iD3FwXf+Ff4RtsZyLUMHW7VUwFOlz3Ixe1Vw==", - "license": "MIT", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.6.tgz", + "integrity": "sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-dismissable-layer": "0.1.5", - "@radix-ui/react-focus-guards": "0.1.0", - "@radix-ui/react-focus-scope": "0.1.4", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-portal": "0.1.4", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-slot": "0.1.2", - "@radix-ui/react-use-controllable-state": "0.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.4.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-0.1.5.tgz", - "integrity": "sha512-J+fYWijkX4M4QKwf9dtu1oC0U6e6CEl8WhBp3Ad23yz2Hia0XCo6Pk/mp5CAFy4QBtQedTSkhW05AdtSOEoajQ==", - "license": "MIT", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", + "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-body-pointer-events": "0.1.1", - "@radix-ui/react-use-callback-ref": "0.1.0", - "@radix-ui/react-use-escape-keydown": "0.1.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-0.1.6.tgz", - "integrity": "sha512-RZhtzjWwJ4ZBN7D8ek4Zn+ilHzYuYta9yIxFnbC0pfqMnSi67IQNONo1tuuNqtFh9SRHacPKc65zo+kBBlxtdg==", - "license": "MIT", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.6.tgz", + "integrity": "sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-menu": "0.1.6", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-controllable-state": "0.1.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.6", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-focus-guards": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-0.1.0.tgz", - "integrity": "sha512-kRx/swAjEfBpQ3ns7J3H4uxpXuWCqN7MpALiSDOXiyo2vkWv0L9sxvbpZeTulINuE3CGMzicVMuNc/VWXjFKOg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-0.1.4.tgz", - "integrity": "sha512-fbA4ES3H4Wkxp+OeLhvN6SwL7mXNn/aBtUf7DRYxY9+Akrf7dRxl2ck4lgcpPsSg3zSDsEwLcY+h5cmj5yvlug==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", + "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-callback-ref": "0.1.0" + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/@radix-ui/react-icons": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz", - "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==", - "license": "MIT", - "peerDependencies": { - "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-id": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz", - "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "0.1.0" + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/@radix-ui/react-label": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-0.1.5.tgz", - "integrity": "sha512-Au9+n4/DhvjR0IHhvZ1LPdx/OW+3CGDie30ZyCkbSHIuLp4/CV4oPPGBwJ1vY99Jog3zyQhsGww9MXj8O9Aj/A==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-primitive": "0.1.4" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "peerDependencies": { - "react": "^16.8 || ^17.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-menu": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-0.1.6.tgz", - "integrity": "sha512-ho3+bhpr3oAFkOBJ8VkUb1BcGoiZBB3OmcWPqa6i5RTUKrzNX/d6rauochu2xDlWjiRtpVuiAcsTVOeIC4FbYQ==", - "license": "MIT", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.6.tgz", + "integrity": "sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-collection": "0.1.4", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-dismissable-layer": "0.1.5", - "@radix-ui/react-focus-guards": "0.1.0", - "@radix-ui/react-focus-scope": "0.1.4", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-popper": "0.1.4", - "@radix-ui/react-portal": "0.1.4", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-roving-focus": "0.1.5", - "@radix-ui/react-use-callback-ref": "0.1.0", - "@radix-ui/react-use-direction": "0.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.4.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.6.tgz", + "integrity": "sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg==", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-popper": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-0.1.4.tgz", - "integrity": "sha512-18gDYof97t8UQa7zwklG1Dr8jIdj3u+rVOQLzPi9f5i1YQak/pVGkaqw8aY+iDUknKKuZniTk/7jbAJUYlKyOw==", - "license": "MIT", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", + "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/popper": "0.1.0", - "@radix-ui/react-arrow": "0.1.4", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-rect": "0.1.1", - "@radix-ui/react-use-size": "0.1.1", - "@radix-ui/rect": "0.1.1" + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-portal": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.4.tgz", - "integrity": "sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==", - "license": "MIT", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", + "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-layout-effect": "0.1.0" + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-presence": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-0.1.2.tgz", - "integrity": "sha512-3BRlFZraooIUfRlyN+b/Xs5hq1lanOOo/+3h6Pwu2GMFjkGKKa4Rd51fcqGqnVlbr3jYg+WLuGyAV4KlgqwrQw==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-use-layout-effect": "0.1.0" + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "react": ">=16.8" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-primitive": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz", - "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==", - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "0.1.2" + "@radix-ui/react-slot": "1.1.2" }, "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/@radix-ui/react-radio-group": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-0.1.5.tgz", - "integrity": "sha512-ybgHsmh/V2crKvK6xZ56dpPul7b+vyxcq7obWqHbr5W6Ca11wdm0E7lS0i/Y6pgfIKYOWIARmZYDpRMEeRCPOw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-label": "0.1.5", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-roving-focus": "0.1.5", - "@radix-ui/react-use-controllable-state": "0.1.0", - "@radix-ui/react-use-previous": "0.1.1", - "@radix-ui/react-use-size": "0.1.1" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "peerDependencies": { - "react": "^16.8 || ^17.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-0.1.5.tgz", - "integrity": "sha512-ClwKPS5JZE+PaHCoW7eu1onvE61pDv4kO8W4t5Ra3qMFQiTJLZMdpBQUhksN//DaVygoLirz4Samdr5Y1x1FSA==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz", + "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-collection": "0.1.4", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-use-callback-ref": "0.1.0", - "@radix-ui/react-use-controllable-state": "0.1.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.2.3.tgz", + "integrity": "sha512-nNrLAWLjGESnhqBqcCNW4w2nn7LxudyMzeB6VgdyAnFLC6kfQgnAjSL2v6UkQTnDctJBlxrmxfplWS4iYjdUTw==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-slot": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz", - "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "0.1.0" + "@radix-ui/react-compose-refs": "1.1.1" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@radix-ui/react-tooltip": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-0.1.7.tgz", - "integrity": "sha512-eiBUsVOHenZ0JR16tl970bB0DafJBz6mFgSGfIGIVpflFj0LIsIDiLMsYyvYdx1KwwsIUDTEZtxcPm/sWjPzqA==", - "license": "MIT", + "node_modules/@radix-ui/react-toast": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.6.tgz", + "integrity": "sha512-gN4dpuIVKEgpLn1z5FhzT9mYRUitbfZq9XqN/7kkBMUgFTzTG8x/KszWJugJXHcwxckY8xcKDZPz7kG3o6DsUA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "0.1.0", - "@radix-ui/react-compose-refs": "0.1.0", - "@radix-ui/react-context": "0.1.1", - "@radix-ui/react-id": "0.1.5", - "@radix-ui/react-popper": "0.1.4", - "@radix-ui/react-portal": "0.1.4", - "@radix-ui/react-presence": "0.1.2", - "@radix-ui/react-primitive": "0.1.4", - "@radix-ui/react-slot": "0.1.2", - "@radix-ui/react-use-controllable-state": "0.1.0", - "@radix-ui/react-use-escape-keydown": "0.1.0", - "@radix-ui/react-use-previous": "0.1.1", - "@radix-ui/react-use-rect": "0.1.1", - "@radix-ui/react-visually-hidden": "0.1.4" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.2" }, "peerDependencies": { - "react": "^16.8 || ^17.0", - "react-dom": "^16.8 || ^17.0" - } - }, - "node_modules/@radix-ui/react-use-body-pointer-events": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-body-pointer-events/-/react-use-body-pointer-events-0.1.1.tgz", - "integrity": "sha512-R8leV2AWmJokTmERM8cMXFHWSiv/fzOLhG/JLmRBhLTAzOj37EQizssq4oW0Z29VcZy2tODMi9Pk/htxwb+xpA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "0.1.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "peerDependencies": { - "react": "^16.8 || ^17.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/react-use-callback-ref": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz", - "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-use-controllable-state": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz", - "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" - } - }, - "node_modules/@radix-ui/react-use-direction": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-direction/-/react-use-direction-0.1.0.tgz", - "integrity": "sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "peerDependencies": { - "react": "^16.8 || ^17.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz", - "integrity": "sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "0.1.0" + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-use-layout-effect": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz", - "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-use-previous": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-0.1.1.tgz", - "integrity": "sha512-O/ZgrDBr11dR8rhO59ED8s5zIXBRFi8MiS+CmFGfi7MJYdLbfqVOmQU90Ghf87aifEgWe6380LA69KBneaShAg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-use-rect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz", - "integrity": "sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/rect": "0.1.1" + "@radix-ui/rect": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-use-size": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-0.1.1.tgz", - "integrity": "sha512-pTgWM5qKBu6C7kfKxrKPoBI2zZYZmp2cSXzpUiGM3qEBQlMLtYhaY2JXdXUCxz+XmD1YEjc8oRwvyfsD4AG4WA==", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", "dependencies": { - "@babel/runtime": "^7.13.10" + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@radix-ui/react-visually-hidden": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-0.1.4.tgz", - "integrity": "sha512-K/q6AEEzqeeEq/T0NPChvBqnwlp8Tl4NnQdrI/y8IOY7BRR+Ug0PEsVk6g48HJ7cA1//COugdxXXVVK/m0X1mA==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.2.tgz", + "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "0.1.4" + "@radix-ui/react-primitive": "2.0.2" }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@radix-ui/rect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-0.1.1.tgz", - "integrity": "sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" }, "node_modules/@replit/codemirror-lang-csharp": { "version": "6.2.0", @@ -5060,17 +5235,16 @@ "license": "MIT" }, "node_modules/@seafile/react-image-lightbox": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/@seafile/react-image-lightbox/-/react-image-lightbox-3.0.4.tgz", - "integrity": "sha512-dhvFAyTT/pEANWq3iWmheze6IuIJyXAGcQHR1Jhy3Chq1hdmlPnGTEzeNaM2r7wCMn7tSDvev+8n4DiiliqRgg==", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@seafile/react-image-lightbox/-/react-image-lightbox-4.0.0.tgz", + "integrity": "sha512-5bnFeBSIwlcrDV4GObzyUv7B31rIs0IVYuzyhUONRuqO/9KZ0zFEp1YppGNJlo2NIAlbCa33+wBgHf7+MR1p7g==", "dependencies": { "prop-types": "^15.8.1", "react-modal": "^3.16.1" }, "peerDependencies": { - "react": "^16.x || ^17.x", - "react-dom": "^16.x || ^17.x" + "react": "^16.x || ^17.x || ^18.x", + "react-dom": "^16.x || ^17.x || ^18.x" } }, "node_modules/@seafile/resumablejs": { @@ -5171,6 +5345,14 @@ } } }, + "node_modules/@seafile/sdoc-editor/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, "node_modules/@seafile/sdoc-editor/node_modules/engine.io-client": { "version": "6.4.0", "resolved": "https://registry.npmmirror.com/engine.io-client/-/engine.io-client-6.4.0.tgz", @@ -5205,6 +5387,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@seafile/sdoc-editor/node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@seafile/sdoc-editor/node_modules/react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@seafile/sdoc-editor/node_modules/reactstrap": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-8.9.0.tgz", + "integrity": "sha512-pmf33YjpNZk1IfrjqpWCUMq9hk6GzSnMWBAofTBNIRJQB1zQ0Au2kzv3lPUAFsBYgWEuI9iYa/xKXHaboSiMkQ==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "classnames": "^2.2.3", + "prop-types": "^15.5.8", + "react-popper": "^1.3.6", + "react-transition-group": "^2.3.1" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/@seafile/sdoc-editor/node_modules/reactstrap/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, "node_modules/@seafile/sdoc-editor/node_modules/socket.io-client": { "version": "4.6.1", "resolved": "https://registry.npmmirror.com/socket.io-client/-/socket.io-client-4.6.1.tgz", @@ -5262,6 +5505,14 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@seafile/sdoc-editor/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/@seafile/sdoc-editor/node_modules/ws": { "version": "8.11.0", "resolved": "https://registry.npmmirror.com/ws/-/ws-8.11.0.tgz", @@ -5306,18 +5557,17 @@ } }, "node_modules/@seafile/seafile-editor": { - "version": "1.0.133", - "resolved": "https://registry.npmmirror.com/@seafile/seafile-editor/-/seafile-editor-1.0.133.tgz", - "integrity": "sha512-sYkepHmTgjhetnfg1unj6Pqn+51UtTWUPeUxUpwzkGNrM8dnHjsKvnkn246Q+LiplN2L7ppdVTqwK1OmqCsqgA==", - "license": "Apache-2.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@seafile/seafile-editor/-/seafile-editor-2.0.0.tgz", + "integrity": "sha512-5ADVcbw53xJdwdww/WZ12eeI7gm3R5Wio9nhqcIkBwmu0K+iofVACeosiCAuBEy13FNG0moqe5udCUgVWqRh0A==", "dependencies": { - "@seafile/react-image-lightbox": "3.0.4", + "@seafile/react-image-lightbox": "4.0.0", "classnames": "2.3.2", "deep-copy": "1.4.2", "deepmerge": "4.3.1", "is-url": "^1.2.4", "prismjs": "1.29.0", - "reactstrap": "8.9.0", + "reactstrap": "9.2.3", "rehype-format": "5.0.0", "rehype-mathjax": "5.0.0", "rehype-raw": "7.0.0", @@ -5352,9 +5602,8 @@ }, "node_modules/@seafile/seafile-editor/node_modules/classnames": { "version": "2.3.2", - "resolved": "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, "node_modules/@seafile/seafile-editor/node_modules/is-plain-obj": { "version": "4.1.0", @@ -5410,9 +5659,9 @@ } }, "node_modules/@seafile/sf-metadata-ui-component": { - "version": "0.0.68", - "resolved": "https://registry.npmjs.org/@seafile/sf-metadata-ui-component/-/sf-metadata-ui-component-0.0.68.tgz", - "integrity": "sha512-DTBEyPxj1TNSBNkv+VAidt9x2/KQwHVKF0wbxHGEFxXR/OxX3S7bbqMpf9/FtUVIeEPjk8xPTHs4jYEDN6MY3Q==", + "version": "0.0.64", + "resolved": "https://registry.npmjs.org/@seafile/sf-metadata-ui-component/-/sf-metadata-ui-component-0.0.64.tgz", + "integrity": "sha512-C4kLqsZCg+KutvOzsv65j58x7PQ6t8wPRJwXIBmEBSqB0/suZZnEV6uNhU5W83zN2CzHmGeRvg4+v+/Pj4pEiA==", "dependencies": { "@seafile/seafile-calendar": "0.0.28", "@seafile/seafile-editor": "^1.0.133", @@ -5436,12 +5685,268 @@ "react-dom": "17.0.2" } }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/@seafile/seafile-editor": { + "version": "1.0.133", + "resolved": "https://registry.npmjs.org/@seafile/seafile-editor/-/seafile-editor-1.0.133.tgz", + "integrity": "sha512-sYkepHmTgjhetnfg1unj6Pqn+51UtTWUPeUxUpwzkGNrM8dnHjsKvnkn246Q+LiplN2L7ppdVTqwK1OmqCsqgA==", + "dependencies": { + "@seafile/react-image-lightbox": "3.0.4", + "classnames": "2.3.2", + "deep-copy": "1.4.2", + "deepmerge": "4.3.1", + "is-url": "^1.2.4", + "prismjs": "1.29.0", + "reactstrap": "8.9.0", + "rehype-format": "5.0.0", + "rehype-mathjax": "5.0.0", + "rehype-raw": "7.0.0", + "rehype-sanitize": "6.0.0", + "rehype-slug": "6.0.0", + "rehype-stringify": "9.0.4", + "remark-breaks": "4.0.0", + "remark-gfm": "4.0.0", + "remark-math": "6.0.0", + "remark-parse": "11.0.0", + "remark-rehype": "11.0.0", + "remark-stringify": "11.0.0", + "slate": "0.94.1", + "slate-history": "0.93.0", + "slate-hyperscript": "^0.81.3", + "slate-react": "0.98.3", + "slugid": "4.0.0", + "type-of": "2.0.1", + "unified": "11.0.3", + "xtend": "4.0.2" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/@seafile/seafile-editor/node_modules/@seafile/react-image-lightbox": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@seafile/react-image-lightbox/-/react-image-lightbox-3.0.4.tgz", + "integrity": "sha512-dhvFAyTT/pEANWq3iWmheze6IuIJyXAGcQHR1Jhy3Chq1hdmlPnGTEzeNaM2r7wCMn7tSDvev+8n4DiiliqRgg==", + "dependencies": { + "prop-types": "^15.8.1", + "react-modal": "^3.16.1" + }, + "peerDependencies": { + "react": "^16.x || ^17.x", + "react-dom": "^16.x || ^17.x" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/@seafile/seafile-editor/node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/@seafile/seafile-editor/node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/@seafile/sf-metadata-ui-component/node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz", "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", "license": "MIT" }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/matchmediaquery": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", + "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", + "dependencies": { + "css-mediaquery": "^0.1.2" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/react-responsive": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-9.0.2.tgz", + "integrity": "sha512-+4CCab7z8G8glgJoRjAwocsgsv6VA2w7JPxFWHRc7kvz8mec1/K5LutNC2MG28Mn8mu6+bu04XZxHv5gyfT7xQ==", + "dependencies": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.3.0", + "prop-types": "^15.6.1", + "shallow-equal": "^1.2.1" + }, + "engines": { + "node": ">=0.10" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/react-select": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.0.tgz", + "integrity": "sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/reactstrap": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-8.9.0.tgz", + "integrity": "sha512-pmf33YjpNZk1IfrjqpWCUMq9hk6GzSnMWBAofTBNIRJQB1zQ0Au2kzv3lPUAFsBYgWEuI9iYa/xKXHaboSiMkQ==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "classnames": "^2.2.3", + "prop-types": "^15.5.8", + "react-popper": "^1.3.6", + "react-transition-group": "^2.3.1" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/reactstrap/node_modules/react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/reactstrap/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/slugid": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slugid/-/slugid-4.0.0.tgz", + "integrity": "sha512-NJ3Sd6NkVIoC8h3Tpn74Ez+SkvukgCror6jIqhSzJYMyK3nbhAmJFKKwOYu2ZulrfvRe1BJDE+CBm/N9t2dENg==", + "dependencies": { + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@seafile/sf-metadata-ui-component/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/@seafile/slate": { "version": "0.91.8", "resolved": "https://registry.npmmirror.com/@seafile/slate/-/slate-0.91.8.tgz", @@ -5480,9 +5985,8 @@ }, "node_modules/@seafile/slate-react": { "version": "0.92.7", - "resolved": "https://registry.npmmirror.com/@seafile/slate-react/-/slate-react-0.92.7.tgz", + "resolved": "https://registry.npmjs.org/@seafile/slate-react/-/slate-react-0.92.7.tgz", "integrity": "sha512-paPH6PiZHYhnEjee2XFZScRKZ/dpmy4N/SvR5YIOOGLpVyUHl/jqo2qf0Qnemvnkr91oujlcjRQpXvvwKH9dLA==", - "license": "MIT", "dependencies": { "@juggle/resize-observer": "^3.4.0", "@types/is-hotkey": "^0.1.1", @@ -5502,22 +6006,21 @@ }, "node_modules/@seafile/slate-react/node_modules/is-hotkey": { "version": "0.1.8", - "resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.1.8.tgz", - "integrity": "sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.1.8.tgz", + "integrity": "sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==" }, "node_modules/@seafile/stldraw-editor": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@seafile/stldraw-editor/-/stldraw-editor-0.1.5.tgz", - "integrity": "sha512-noUBJhcCsBvx+I0Ea1DRCDQvE0N4lzZFWwOlqtoU2DcsSoXVzpv/jjaZgQ/M2zNC8YY8d0t+isy8O3bVFdQDzw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@seafile/stldraw-editor/-/stldraw-editor-1.0.0.tgz", + "integrity": "sha512-0QW1GZfAMbcpFMgfsmlL3zddXwHjOeJigGodLyPqdgtWgB+sDlM7U9GhEH2K/yxhYePGzgkQoMWvM7mQ6mvUpA==", "dependencies": { - "@tldraw/tldraw": "1.6.1", "axios": "^1.7.4", "classnames": "2.3.2", "copy-to-clipboard": "^3.3.3", "deep-copy": "1.4.2", "is-hotkey": "0.2.0", - "is-url": "^1.2.4" + "is-url": "^1.2.4", + "tldraw": "3.7.2" } }, "node_modules/@seafile/stldraw-editor/node_modules/classnames": { @@ -5558,15 +6061,6 @@ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "license": "MIT" }, - "node_modules/@stitches/react": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz", - "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==", - "license": "MIT", - "peerDependencies": { - "react": ">= 16.3.0" - } - }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmmirror.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -5992,65 +6486,106 @@ "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@tldraw/core": { - "version": "1.23.2", - "resolved": "https://registry.npmjs.org/@tldraw/core/-/core-1.23.2.tgz", - "integrity": "sha512-cx+KfqemSHvVonNGwEolosMOsJt5cl3PGRBaXcZOOXQxnFALF22dnMtm6lbmlQQA71EfqNMP5e+qV3jCwuYaqA==", - "license": "MIT", + "node_modules/@tldraw/editor": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tldraw/editor/-/editor-3.7.2.tgz", + "integrity": "sha512-xXzW6z/mIVbkXIV6JTnODX9YCYB8CcBG5uP/CXDVumjk4uCEUVyikbZ/EBv4Z7sKGWkRQPsgOKqpdHiZIMgbmQ==", "dependencies": { - "@tldraw/intersect": "^1.9.2", - "@tldraw/vec": "^1.9.2", - "@use-gesture/react": "^10.2.19", - "perfect-freehand": "^1.1.0" + "@tldraw/state": "3.7.2", + "@tldraw/state-react": "3.7.2", + "@tldraw/store": "3.7.2", + "@tldraw/tlschema": "3.7.2", + "@tldraw/utils": "3.7.2", + "@tldraw/validate": "3.7.2", + "@types/core-js": "^2.5.5", + "@use-gesture/react": "^10.2.27", + "classnames": "^2.3.2", + "core-js": "^3.31.1", + "eventemitter3": "^4.0.7", + "idb": "^7.1.1", + "is-plain-object": "^5.0.0", + "lodash.isequal": "^4.5.0" }, "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "react": "^18.2.0", + "react-dom": "^18.2.0" } }, - "node_modules/@tldraw/intersect": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@tldraw/intersect/-/intersect-1.9.2.tgz", - "integrity": "sha512-teUQLy+p5YT4PIKOHaL+zM0NYD1779mPp02xabP+5LGLvv7tt9VaqJ9D899EYppQbBLN6be6CJUrmibrvLtnUQ==", - "license": "MIT", - "dependencies": { - "@tldraw/vec": "^1.9.2" + "node_modules/@tldraw/editor/node_modules/core-js": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/@tldraw/tldraw": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@tldraw/tldraw/-/tldraw-1.6.1.tgz", - "integrity": "sha512-asrrWMG7tPPvvsrocQzer4Qe6/clDYinmNVpmVb7E1ygacWoTe44Y/oqFurZO55XbdZECWnSYp3LJ+/hwXARsw==", - "license": "MIT", + "node_modules/@tldraw/state": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tldraw/state/-/state-3.7.2.tgz", + "integrity": "sha512-fuUFnYCrCwZUmLpbA72TelcSUjVJKKTYE1aopFJimdmc6oFpgiRhsfrnjoCWQDe1EKDNFPpXh7UD0nSDVjiOhA==", "dependencies": { - "@radix-ui/react-alert-dialog": "^0.1.5", - "@radix-ui/react-checkbox": "^0.1.4", - "@radix-ui/react-context-menu": "^0.1.4", - "@radix-ui/react-dropdown-menu": "^0.1.4", - "@radix-ui/react-icons": "^1.0.3", - "@radix-ui/react-radio-group": "^0.1.4", - "@radix-ui/react-tooltip": "^0.1.6", - "@stitches/react": "^1.2.6", - "@tldraw/core": "^1.6.1", - "@tldraw/intersect": "^1.6.1", - "@tldraw/vec": "^1.6.1", - "idb-keyval": "^6.1.0", - "perfect-freehand": "^1.0.16", - "react-hotkey-hook": "^1.0.2", - "react-hotkeys-hook": "^3.4.4", - "tslib": "^2.3.1", - "zustand": "^3.6.9" + "@tldraw/utils": "3.7.2" + } + }, + "node_modules/@tldraw/state-react": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tldraw/state-react/-/state-react-3.7.2.tgz", + "integrity": "sha512-qHY0/sTVE2xol8BwF0rVH95bJuHTKorvq2mnjJ2HKl+ei5c6uu/iYCxZWsCJxtQNdhAC8OICghju38VDpA1ixQ==", + "dependencies": { + "@tldraw/state": "3.7.2", + "@tldraw/utils": "3.7.2" }, "peerDependencies": { - "react": ">=16.8", - "react-dom": "^16.8 || ^17.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } }, - "node_modules/@tldraw/vec": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@tldraw/vec/-/vec-1.9.2.tgz", - "integrity": "sha512-k9vH52MRpJHjVcaahWu6VqvhLeE9h1qL5Z2gLobS9zTMpUJ59kBQPNo0VPzPlDYBpXdS4GxuB4jYQMnKvuPAZg==", - "license": "MIT" + "node_modules/@tldraw/store": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tldraw/store/-/store-3.7.2.tgz", + "integrity": "sha512-KyFkIPmEqv/ticrK6YBnrtzMAPFiEukpwmOaRGILIl9zs0Y+X6J8Qf1FDIhh6yyO7FU2yNdixicl6Dtlbf/p9Q==", + "dependencies": { + "@tldraw/state": "3.7.2", + "@tldraw/utils": "3.7.2", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@tldraw/tlschema": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tldraw/tlschema/-/tlschema-3.7.2.tgz", + "integrity": "sha512-xbbNhJZf2dpW1nyf/pYoesW8UAXvSASfd8LkGsRrHVHGHvEQ7HtiyfyLVN77b2y8QX+vVKNUP+cv7I11N14PqA==", + "dependencies": { + "@tldraw/state": "3.7.2", + "@tldraw/store": "3.7.2", + "@tldraw/utils": "3.7.2", + "@tldraw/validate": "3.7.2" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@tldraw/utils": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tldraw/utils/-/utils-3.7.2.tgz", + "integrity": "sha512-6WE1vTj+bERFmNbANZCa7E2sp/Ix3IbdRGM/ciARIjNzI8pgm4GFdESloNn0aQ/nQdu2PimwxMo+jpnCpRG2aw==", + "dependencies": { + "fractional-indexing-jittered": "^0.9.1", + "lodash.throttle": "^4.1.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@tldraw/validate": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tldraw/validate/-/validate-3.7.2.tgz", + "integrity": "sha512-ysgmDL+pUHIGsq8QXiMTcloju1gQUvqsrDx2cL3W42mk8AL7QCzoogzUBUhAVH7+AP8V6YtzNj3ZHmL/USUUUA==", + "dependencies": { + "@tldraw/utils": "3.7.2" + } }, "node_modules/@tootallnate/once": { "version": "1.1.2", @@ -6166,6 +6701,11 @@ "@types/node": "*" } }, + "node_modules/@types/core-js": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-2.5.8.tgz", + "integrity": "sha512-VgnAj6tIAhJhZdJ8/IpxdatM8G4OD3VWGlp6xIxUGENZlpbob9Ty4VVdC1FIEp0aK6DBscDDjyzy5FB60TuNqg==" + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.12.tgz", @@ -6498,9 +7038,8 @@ }, "node_modules/@types/react-transition-group": { "version": "4.4.12", - "resolved": "https://registry.npmmirror.com/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", - "license": "MIT", "peerDependencies": { "@types/react": "*" } @@ -7065,14 +7604,12 @@ "node_modules/@use-gesture/core": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz", - "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==", - "license": "MIT" + "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==" }, "node_modules/@use-gesture/react": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz", "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==", - "license": "MIT", "dependencies": { "@use-gesture/core": "10.3.1" }, @@ -7687,7 +8224,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -9064,6 +9600,11 @@ ], "license": "CC-BY-4.0" }, + "node_modules/canvas-size": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/canvas-size/-/canvas-size-1.2.6.tgz", + "integrity": "sha512-x2iVHOrZ5x9V0Hwx6kBz+Yxf/VCAII+jrD6WLjJbytJLozHq/oDJjEva432Os0eHxWMFR0vYlLJwTr6QxyxQqw==" + }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", @@ -9151,10 +9692,15 @@ } }, "node_modules/chart.js": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-3.6.0.tgz", - "integrity": "sha512-iOzzDKePL+bj+ccIsVAgWQehCXv8xOKGbaU2fO/myivH736zcx535PGJzQGanvcSGVOqX6yuLZsN3ygcQ35UgQ==", - "license": "MIT" + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.7.tgz", + "integrity": "sha512-pwkcKfdzTMAU/+jNosKhNL2bHtJc/sSmYgVbuGTEDhzkrhmyihmP7vUc/5ZK9WopidMDHNe3Wm7jOd/WhuHWuw==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } }, "node_modules/check-types": { "version": "11.2.3", @@ -10068,9 +10614,8 @@ }, "node_modules/css-mediaquery": { "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/css-mediaquery/-/css-mediaquery-0.1.2.tgz", - "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==", - "license": "BSD" + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" }, "node_modules/css-minimizer-webpack-plugin": { "version": "3.4.1", @@ -10527,9 +11072,8 @@ }, "node_modules/deep-equal": { "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "license": "MIT", "dependencies": { "is-arguments": "^1.1.1", "is-date-object": "^1.0.5", @@ -10700,8 +11244,7 @@ "node_modules/detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, "node_modules/detect-port-alt": { "version": "1.1.6", @@ -10889,9 +11432,8 @@ }, "node_modules/dom-helpers": { "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/dom-helpers/-/dom-helpers-5.2.1.tgz", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -11052,9 +11594,8 @@ }, "node_modules/dtable-ui-component/node_modules/@seafile/react-image-lightbox": { "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/@seafile/react-image-lightbox/-/react-image-lightbox-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/@seafile/react-image-lightbox/-/react-image-lightbox-3.0.1.tgz", "integrity": "sha512-GbofvFRYcdprxstC/kwJCnInFxS5lrs6CEYQ+8ecg/aOJfeIZpYFKzI2r4FB6avtrcdSz3QCwY5J1xjtBJ3BZw==", - "license": "MIT", "dependencies": { "prop-types": "^15.8.1", "react-modal": "^3.16.1" @@ -11078,12 +11619,265 @@ "react-lifecycles-compat": "^3.0.4" } }, + "node_modules/dtable-ui-component/node_modules/@seafile/seafile-editor": { + "version": "1.0.133", + "resolved": "https://registry.npmjs.org/@seafile/seafile-editor/-/seafile-editor-1.0.133.tgz", + "integrity": "sha512-sYkepHmTgjhetnfg1unj6Pqn+51UtTWUPeUxUpwzkGNrM8dnHjsKvnkn246Q+LiplN2L7ppdVTqwK1OmqCsqgA==", + "dependencies": { + "@seafile/react-image-lightbox": "3.0.4", + "classnames": "2.3.2", + "deep-copy": "1.4.2", + "deepmerge": "4.3.1", + "is-url": "^1.2.4", + "prismjs": "1.29.0", + "reactstrap": "8.9.0", + "rehype-format": "5.0.0", + "rehype-mathjax": "5.0.0", + "rehype-raw": "7.0.0", + "rehype-sanitize": "6.0.0", + "rehype-slug": "6.0.0", + "rehype-stringify": "9.0.4", + "remark-breaks": "4.0.0", + "remark-gfm": "4.0.0", + "remark-math": "6.0.0", + "remark-parse": "11.0.0", + "remark-rehype": "11.0.0", + "remark-stringify": "11.0.0", + "slate": "0.94.1", + "slate-history": "0.93.0", + "slate-hyperscript": "^0.81.3", + "slate-react": "0.98.3", + "slugid": "4.0.0", + "type-of": "2.0.1", + "unified": "11.0.3", + "xtend": "4.0.2" + } + }, + "node_modules/dtable-ui-component/node_modules/@seafile/seafile-editor/node_modules/@seafile/react-image-lightbox": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@seafile/react-image-lightbox/-/react-image-lightbox-3.0.4.tgz", + "integrity": "sha512-dhvFAyTT/pEANWq3iWmheze6IuIJyXAGcQHR1Jhy3Chq1hdmlPnGTEzeNaM2r7wCMn7tSDvev+8n4DiiliqRgg==", + "dependencies": { + "prop-types": "^15.8.1", + "react-modal": "^3.16.1" + }, + "peerDependencies": { + "react": "^16.x || ^17.x", + "react-dom": "^16.x || ^17.x" + } + }, + "node_modules/dtable-ui-component/node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dtable-ui-component/node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz", "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", "license": "MIT" }, + "node_modules/dtable-ui-component/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/dtable-ui-component/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dtable-ui-component/node_modules/matchmediaquery": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", + "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", + "dependencies": { + "css-mediaquery": "^0.1.2" + } + }, + "node_modules/dtable-ui-component/node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dtable-ui-component/node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/dtable-ui-component/node_modules/react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/dtable-ui-component/node_modules/react-responsive": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-9.0.2.tgz", + "integrity": "sha512-+4CCab7z8G8glgJoRjAwocsgsv6VA2w7JPxFWHRc7kvz8mec1/K5LutNC2MG28Mn8mu6+bu04XZxHv5gyfT7xQ==", + "dependencies": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.3.0", + "prop-types": "^15.6.1", + "shallow-equal": "^1.2.1" + }, + "engines": { + "node": ">=0.10" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/dtable-ui-component/node_modules/react-select": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.0.tgz", + "integrity": "sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/dtable-ui-component/node_modules/reactstrap": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-8.9.0.tgz", + "integrity": "sha512-pmf33YjpNZk1IfrjqpWCUMq9hk6GzSnMWBAofTBNIRJQB1zQ0Au2kzv3lPUAFsBYgWEuI9iYa/xKXHaboSiMkQ==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "classnames": "^2.2.3", + "prop-types": "^15.5.8", + "react-popper": "^1.3.6", + "react-transition-group": "^2.3.1" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/dtable-ui-component/node_modules/reactstrap/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/dtable-ui-component/node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/dtable-ui-component/node_modules/shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "node_modules/dtable-ui-component/node_modules/slugid": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slugid/-/slugid-4.0.0.tgz", + "integrity": "sha512-NJ3Sd6NkVIoC8h3Tpn74Ez+SkvukgCror6jIqhSzJYMyK3nbhAmJFKKwOYu2ZulrfvRe1BJDE+CBm/N9t2dENg==", + "dependencies": { + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/dtable-ui-component/node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dtable-ui-component/node_modules/unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/dtable-ui-component/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/dtable-utils": { "version": "5.0.11", "resolved": "https://registry.npmmirror.com/dtable-utils/-/dtable-utils-5.0.11.tgz", @@ -12267,7 +13061,6 @@ "version": "4.0.7", "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true, "license": "MIT" }, "node_modules/events": { @@ -12866,9 +13659,8 @@ }, "node_modules/find-root": { "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, "node_modules/find-up": { "version": "4.1.0", @@ -13127,6 +13919,11 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/fractional-indexing-jittered": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/fractional-indexing-jittered/-/fractional-indexing-jittered-0.9.1.tgz", + "integrity": "sha512-qyzDZ7JXWf/yZT2rQDpQwFBbIaZS2o+zb0s740vqreXQ6bFQPd8tAy4D1gGN0CUeIcnNHjuvb0EaLnqHhGV/PA==" + }, "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -13279,7 +14076,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", "engines": { "node": ">=6" } @@ -13540,9 +14336,8 @@ }, "node_modules/gud": { "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" }, "node_modules/gzip-size": { "version": "6.0.0", @@ -14386,10 +15181,12 @@ } }, "node_modules/hotkeys-js": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.9.4.tgz", - "integrity": "sha512-2zuLt85Ta+gIyvs4N88pCYskNrxf1TFv3LR9t5mdAZIX8BcgQQ48F2opUptvHa6m8zsy5v/a0i9mWzTrlNWU0Q==", - "license": "MIT" + "version": "3.13.9", + "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.13.9.tgz", + "integrity": "sha512-3TRCj9u9KUH6cKo25w4KIdBfdBfNRjfUwrljCLDC2XhmPDG0SjAZFcFZekpUZFmXzfYoGhFDcdx2gX/vUVtztQ==", + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } }, "node_modules/hpack.js": { "version": "2.1.6", @@ -14774,15 +15571,8 @@ "version": "7.1.1", "resolved": "https://registry.npmmirror.com/idb/-/idb-7.1.1.tgz", "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "dev": true, "license": "ISC" }, - "node_modules/idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", - "license": "Apache-2.0" - }, "node_modules/identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", @@ -17802,7 +18592,6 @@ "version": "4.5.0", "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, "license": "MIT" }, "node_modules/longest-streak": { @@ -17851,7 +18640,6 @@ "version": "1.5.0", "resolved": "https://registry.npmmirror.com/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, "license": "MIT", "bin": { "lz-string": "bin/bin.js" @@ -17936,10 +18724,9 @@ } }, "node_modules/matchmediaquery": { - "version": "0.3.1", - "resolved": "https://registry.npmmirror.com/matchmediaquery/-/matchmediaquery-0.3.1.tgz", - "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", - "license": "MIT", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz", + "integrity": "sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==", "dependencies": { "css-mediaquery": "^0.1.2" } @@ -18284,9 +19071,8 @@ }, "node_modules/memoize-one": { "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, "node_modules/merge-descriptors": { "version": "1.0.3", @@ -20150,12 +20936,6 @@ "node": ">=0.12" } }, - "node_modules/perfect-freehand": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.2.tgz", - "integrity": "sha512-eh31l019WICQ03pkF3FSzHxB8n07ItqIQ++G5UV8JX0zVOXzgTGCqnRR0jJ2h9U8/2uW4W4mtGJELt9kEV0CFQ==", - "license": "MIT" - }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz", @@ -20291,10 +21071,9 @@ }, "node_modules/popper.js": { "version": "1.16.1", - "resolved": "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -22120,24 +22899,12 @@ "teleport": ">=0.2.0" } }, - "node_modules/qr.js": { - "version": "0.0.0", - "resolved": "https://registry.npmmirror.com/qr.js/-/qr.js-0.0.0.tgz", - "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==", - "license": "MIT" - }, "node_modules/qrcode.react": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/qrcode.react/-/qrcode.react-1.0.1.tgz", - "integrity": "sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg==", - "license": "ISC", - "dependencies": { - "loose-envify": "^1.4.0", - "prop-types": "^15.6.0", - "qr.js": "0.0.0" - }, + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-4.2.0.tgz", + "integrity": "sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==", "peerDependencies": { - "react": "^15.5.3 || ^16.0.0 || ^17.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/qs": { @@ -22410,13 +23177,11 @@ "license": "MIT" }, "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmmirror.com/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "license": "MIT", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" @@ -22466,13 +23231,12 @@ "license": "MIT" }, "node_modules/react-chartjs-2": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/react-chartjs-2/-/react-chartjs-2-4.0.0.tgz", - "integrity": "sha512-0kx41EVO6wIoeU6zvdwovX9kKcdrs7O62DGTSNmwAXZeLGJ3U+n4XijO1kxcMmAi4I6PQJWGD5oRwxVixHSp6g==", - "license": "MIT", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.3.0.tgz", + "integrity": "sha512-UfZZFnDsERI3c3CZGxzvNJd02SHjaSJ8kgW1djn65H1KK8rehwTjyrRKOG3VTMG8wtHZ5rgAO5oTHtHi9GCCmw==", "peerDependencies": { - "chart.js": "^3.5.0", - "react": "^16.8.0 || ^17.0.0" + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-color": { @@ -22641,17 +23405,15 @@ } }, "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "license": "MIT", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "17.0.2" + "react": "^18.3.1" } }, "node_modules/react-error-overlay": { @@ -22661,24 +23423,10 @@ "dev": true, "license": "MIT" }, - "node_modules/react-hotkey-hook": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/react-hotkey-hook/-/react-hotkey-hook-1.0.3.tgz", - "integrity": "sha512-l2y1yYyAwAlmlnjkVccJJzaDckOAvZwK3WQ+MacUS7l+hoR9qiWT4UJtzf37BlF4GOY7bdeSApJ1jHMYFw3AFA==", - "license": "MIT" - }, - "node_modules/react-hotkeys-hook": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.4.7.tgz", - "integrity": "sha512-+bbPmhPAl6ns9VkXkNNyxlmCAIyDAcWbB76O4I0ntr3uWCRuIQf/aRLartUahe9chVMPj+OEzzfk3CQSjclUEQ==", - "license": "MIT", - "dependencies": { - "hotkeys-js": "3.9.4" - }, - "peerDependencies": { - "react": ">=16.8.1", - "react-dom": ">=16.8.1" - } + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" }, "node_modules/react-i18next": { "version": "10.13.2", @@ -22709,9 +23457,8 @@ }, "node_modules/react-modal": { "version": "3.16.3", - "resolved": "https://registry.npmmirror.com/react-modal/-/react-modal-3.16.3.tgz", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.3.tgz", "integrity": "sha512-yCYRJB5YkeQDQlTt17WGAgFJ7jr2QYcWa1SHqZ3PluDmnKJ/7+tVU+E6uKyZ0nODaeEj+xCpK4LcSnKXLMC0Nw==", - "license": "MIT", "dependencies": { "exenv": "^1.2.0", "prop-types": "^15.7.2", @@ -22725,9 +23472,8 @@ }, "node_modules/react-modal/node_modules/warning": { "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -22745,28 +23491,23 @@ } }, "node_modules/react-popper": { - "version": "1.3.11", - "resolved": "https://registry.npmmirror.com/react-popper/-/react-popper-1.3.11.tgz", - "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", - "license": "MIT", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", "dependencies": { - "@babel/runtime": "^7.1.2", - "@hypnosphi/create-react-context": "^0.3.1", - "deep-equal": "^1.1.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.7", + "react-fast-compare": "^3.0.1", "warning": "^4.0.2" }, "peerDependencies": { - "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" } }, "node_modules/react-popper/node_modules/warning": { "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -22782,16 +23523,15 @@ } }, "node_modules/react-remove-scroll": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.2.tgz", - "integrity": "sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==", - "license": "MIT", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", + "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", "dependencies": { "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.1", + "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.2" + "use-sidecar": "^1.1.3" }, "engines": { "node": ">=10" @@ -22810,7 +23550,6 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", - "license": "MIT", "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" @@ -22829,28 +23568,26 @@ } }, "node_modules/react-responsive": { - "version": "9.0.2", - "resolved": "https://registry.npmmirror.com/react-responsive/-/react-responsive-9.0.2.tgz", - "integrity": "sha512-+4CCab7z8G8glgJoRjAwocsgsv6VA2w7JPxFWHRc7kvz8mec1/K5LutNC2MG28Mn8mu6+bu04XZxHv5gyfT7xQ==", - "license": "MIT", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-10.0.0.tgz", + "integrity": "sha512-N6/UiRLGQyGUqrarhBZmrSmHi2FXSD++N5VbSKsBBvWfG0ZV7asvUBluSv5lSzdMyEVjzZ6Y8DL4OHABiztDOg==", "dependencies": { "hyphenate-style-name": "^1.0.0", - "matchmediaquery": "^0.3.0", + "matchmediaquery": "^0.4.2", "prop-types": "^15.6.1", - "shallow-equal": "^1.2.1" + "shallow-equal": "^3.1.0" }, "engines": { - "node": ">=0.10" + "node": ">=14" }, "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/react-select": { - "version": "5.7.0", - "resolved": "https://registry.npmmirror.com/react-select/-/react-select-5.7.0.tgz", - "integrity": "sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ==", - "license": "MIT", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.9.0.tgz", + "integrity": "sha512-nwRKGanVHGjdccsnzhFte/PULziueZxGD8LL2WojON78Mvnq7LdAMEtu2frrwld1fr3geixg3iiMBIc/LLAZpw==", "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -22860,37 +23597,17 @@ "memoize-one": "^6.0.0", "prop-types": "^15.6.0", "react-transition-group": "^4.3.0", - "use-isomorphic-layout-effect": "^1.1.2" + "use-isomorphic-layout-effect": "^1.2.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-select/node_modules/@floating-ui/core": { - "version": "1.6.8", - "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.8.tgz", - "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.8" - } - }, - "node_modules/react-select/node_modules/@floating-ui/dom": { - "version": "1.6.12", - "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.12.tgz", - "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-style-singleton": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", - "license": "MIT", "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" @@ -22910,9 +23627,8 @@ }, "node_modules/react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-4.4.5.tgz", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "license": "BSD-3-Clause", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -22944,45 +23660,20 @@ } }, "node_modules/reactstrap": { - "version": "8.9.0", - "resolved": "https://registry.npmmirror.com/reactstrap/-/reactstrap-8.9.0.tgz", - "integrity": "sha512-pmf33YjpNZk1IfrjqpWCUMq9hk6GzSnMWBAofTBNIRJQB1zQ0Au2kzv3lPUAFsBYgWEuI9iYa/xKXHaboSiMkQ==", - "license": "MIT", + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-9.2.3.tgz", + "integrity": "sha512-1nXy7FIBIoOgXr3AIHOpgzcZXdj6rZE5YvNSPd1hYgwv8X64m6TAJsU0ExlieJdlRXhaRfTYRSZoTWa127b0gw==", "dependencies": { "@babel/runtime": "^7.12.5", + "@popperjs/core": "^2.6.0", "classnames": "^2.2.3", "prop-types": "^15.5.8", - "react-popper": "^1.3.6", - "react-transition-group": "^2.3.1" + "react-popper": "^2.2.4", + "react-transition-group": "^4.4.2" }, "peerDependencies": { - "react": ">=16.3.0", - "react-dom": ">=16.3.0" - } - }, - "node_modules/reactstrap/node_modules/dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmmirror.com/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.1.2" - } - }, - "node_modules/reactstrap/node_modules/react-transition-group": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-2.9.0.tgz", - "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", - "license": "BSD-3-Clause", - "dependencies": { - "dom-helpers": "^3.4.0", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2", - "react-lifecycles-compat": "^3.0.4" - }, - "peerDependencies": { - "react": ">=15.0.0", - "react-dom": ">=15.0.0" + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, "node_modules/read-cache": { @@ -24883,13 +25574,11 @@ } }, "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "license": "MIT", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { @@ -25240,10 +25929,9 @@ } }, "node_modules/shallow-equal": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz", - "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==", - "license": "MIT" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz", + "integrity": "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==" }, "node_modules/shallowequal": { "version": "1.1.0", @@ -25420,9 +26108,8 @@ }, "node_modules/slate-react": { "version": "0.98.3", - "resolved": "https://registry.npmmirror.com/slate-react/-/slate-react-0.98.3.tgz", + "resolved": "https://registry.npmjs.org/slate-react/-/slate-react-0.98.3.tgz", "integrity": "sha512-p1BnF9eRyRM0i5hkgOb11KgmpWLQm9Zyp6jVkOAj5fPdIGheKhg48Z7aWKrayeJ4nmRyi/NjRZz/io5hQcphmw==", - "license": "MIT", "dependencies": { "@juggle/resize-observer": "^3.4.0", "@types/is-hotkey": "^0.1.1", @@ -25442,9 +26129,8 @@ }, "node_modules/slate-react/node_modules/is-hotkey": { "version": "0.1.8", - "resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.1.8.tgz", - "integrity": "sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.1.8.tgz", + "integrity": "sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==" }, "node_modules/slugid": { "version": "3.2.0", @@ -26496,9 +27182,8 @@ }, "node_modules/stylis": { "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/sucrase": { "version": "3.35.0", @@ -27509,6 +28194,31 @@ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", "license": "MIT" }, + "node_modules/tldraw": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/tldraw/-/tldraw-3.7.2.tgz", + "integrity": "sha512-Mp+uKYCOZony5kH9OaWhKoMncmbBvGUARZZeit+Jrr0MmpT5I9moRTD1pwmZmlAwNF4Cs9eYCSFAuG+i6c9x2g==", + "dependencies": { + "@radix-ui/react-alert-dialog": "^1.0.5", + "@radix-ui/react-context-menu": "^2.1.5", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-slider": "^1.1.0", + "@radix-ui/react-toast": "^1.1.1", + "@tldraw/editor": "3.7.2", + "@tldraw/store": "3.7.2", + "canvas-size": "^1.2.6", + "classnames": "^2.3.2", + "hotkeys-js": "^3.11.2", + "idb": "^7.1.1", + "lz-string": "^1.4.4" + }, + "peerDependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz", @@ -27958,9 +28668,8 @@ }, "node_modules/typed-styles": { "version": "0.0.7", - "resolved": "https://registry.npmmirror.com/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", @@ -28541,7 +29250,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -28560,9 +29268,8 @@ }, "node_modules/use-isomorphic-layout-effect": { "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", - "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -28576,7 +29283,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -29901,23 +30607,6 @@ "babel-runtime": "6.x" } }, - "node_modules/zustand": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", - "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", - "license": "MIT", - "engines": { - "node": ">=12.7.0" - }, - "peerDependencies": { - "react": ">=16.8" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - } - } - }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.4.tgz", diff --git a/frontend/package.json b/frontend/package.json index cf5b22ac69..65c36d26f5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,19 +8,19 @@ "@codemirror/view": "^6.34.1", "@emoji-mart/data": "^1.2.1", "@emoji-mart/react": "^1.1.1", - "@gatsbyjs/reach-router": "1.3.9", - "@seafile/react-image-lightbox": "3.0.4", + "@gatsbyjs/reach-router": "2.0.1", + "@seafile/react-image-lightbox": "4.0.0", "@seafile/resumablejs": "1.1.16", "@seafile/sdoc-editor": "1.0.217", "@seafile/seafile-calendar": "0.0.28", - "@seafile/seafile-editor": "1.0.133", - "@seafile/sf-metadata-ui-component": "^0.0.68", - "@seafile/stldraw-editor": "0.1.5", + "@seafile/seafile-editor": "2.0.0", + "@seafile/sf-metadata-ui-component": "^0.0.64", + "@seafile/stldraw-editor": "1.0.0", "@uiw/codemirror-extensions-langs": "^4.19.4", "@uiw/codemirror-themes": "^4.23.5", "@uiw/react-codemirror": "^4.19.4", "axios": "^1.7.4", - "chart.js": "3.6.0", + "chart.js": "4.4.7", "classnames": "^2.2.6", "codemirror": "^6.0.1", "copy-to-clipboard": "^3.0.8", @@ -35,19 +35,19 @@ "MD5": "^1.3.0", "object-assign": "4.1.1", "prop-types": "^15.8.1", - "qrcode.react": "^1.0.1", - "react": "17.0.2", + "qrcode.react": "4.2.0", + "react": "18.3.1", "react-app-polyfill": "^2.0.0", - "react-chartjs-2": "4.0.0", + "react-chartjs-2": "5.3.0", "react-cookies": "^0.1.0", "react-dnd": "^2.6.0", "react-dnd-html5-backend": "^2.6.0", - "react-dom": "17.0.2", + "react-dom": "18.3.1", "react-i18next": "^10.12.2", - "react-responsive": "9.0.2", - "react-select": "5.7.0", + "react-responsive": "10.0.0", + "react-select": "5.9.0", "react-transition-group": "4.4.5", - "reactstrap": "8.9.0", + "reactstrap": "9.2.3", "socket.io-client": "^2.2.0", "svg-sprite-loader": "^6.0.11", "svgo-loader": "^3.0.1", @@ -63,7 +63,7 @@ "start": "node scripts/start.js", "build": "node scripts/build.js", "test": "node scripts/test.js --env=jsdom", - "dev": "export NODE_ENV=development && node config/server.js" + "dev": "export NODE_ENV=development && node --max-old-space-size=4096 config/server.js" }, "browserslist": { "production": [ diff --git a/frontend/src/app.js b/frontend/src/app.js index 3ae3ee9f2b..4799f72070 100644 --- a/frontend/src/app.js +++ b/frontend/src/app.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; -import ReactDom from 'react-dom'; -import { Router, navigate } from '@gatsbyjs/reach-router'; +import { createRoot } from 'react-dom/client'; +import { Router, navigate, LocationProvider, globalHistory } from '@gatsbyjs/reach-router'; import MediaQuery from 'react-responsive'; import { Modal } from 'reactstrap'; import { siteRoot, siteTitle, mediaUrl, faviconPath } from './utils/constants'; @@ -374,4 +374,9 @@ class App extends Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render( + + + +); diff --git a/frontend/src/components/btn-qr-code.js b/frontend/src/components/btn-qr-code.js index 1c0c4d402e..7761db1867 100644 --- a/frontend/src/components/btn-qr-code.js +++ b/frontend/src/components/btn-qr-code.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import QRCode from 'qrcode.react'; +import { QRCodeSVG } from 'qrcode.react'; import { Button, Popover, PopoverBody } from 'reactstrap'; import { gettext } from '../utils/constants'; @@ -34,7 +34,7 @@ class ButtonQR extends React.Component { - +

{gettext('Scan the QR code to view the shared content directly')}

diff --git a/frontend/src/components/common/account.js b/frontend/src/components/common/account.js index 13ab2f413a..84e5300068 100644 --- a/frontend/src/components/common/account.js +++ b/frontend/src/components/common/account.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; -import ReactDOM from 'react-dom'; +import { findDOMNode } from 'react-dom'; import { Utils } from '../../utils/utils'; import { seafileAPI } from '../../utils/seafile-api'; import { siteRoot, isPro, gettext, appAvatarURL, enableSSOToThirdpartWebsite } from '../../utils/constants'; @@ -36,7 +36,7 @@ class Account extends Component { } getContainer = () => { - return ReactDOM.findDOMNode(this); + return findDOMNode(this); }; handleProps = () => { diff --git a/frontend/src/components/context-menu/context-menu.js b/frontend/src/components/context-menu/context-menu.js index 6f2be29d51..c757f8aca7 100644 --- a/frontend/src/components/context-menu/context-menu.js +++ b/frontend/src/components/context-menu/context-menu.js @@ -228,7 +228,7 @@ class ContextMenu extends React.Component { onMouseMove={(e) => {e.stopPropagation();}} > diff --git a/frontend/src/components/cur-dir-path/dir-tool.js b/frontend/src/components/cur-dir-path/dir-tool.js index df7240f0d5..f498b3f1b3 100644 --- a/frontend/src/components/cur-dir-path/dir-tool.js +++ b/frontend/src/components/cur-dir-path/dir-tool.js @@ -144,7 +144,7 @@ class DirTool extends React.Component { aria-expanded={isDropdownMenuOpen} > - + {menuItems.map((menuItem, index) => { if (menuItem === 'Divider') { return ; diff --git a/frontend/src/components/dialog/generate-upload-link.js b/frontend/src/components/dialog/generate-upload-link.js index 85286f2339..a95e3c4bd6 100644 --- a/frontend/src/components/dialog/generate-upload-link.js +++ b/frontend/src/components/dialog/generate-upload-link.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import copy from 'copy-to-clipboard'; import dayjs from 'dayjs'; -import { Button, Form, FormGroup, Label, Input, InputGroup, InputGroupAddon, Alert } from 'reactstrap'; +import { Button, Form, FormGroup, Label, Input, InputGroup, Alert } from 'reactstrap'; import { gettext, shareLinkForceUsePassword, shareLinkPasswordMinLength, shareLinkPasswordStrengthLevel, canSendShareLinkEmail, uploadLinkExpireDaysMin, uploadLinkExpireDaysMax, uploadLinkExpireDaysDefault } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import { Utils } from '../../utils/utils'; @@ -300,14 +300,12 @@ class GenerateUploadLink extends React.Component { : } - - - + @@ -338,15 +336,13 @@ class GenerateUploadLink extends React.Component { ) : ( - - - + )} @@ -389,14 +385,12 @@ class GenerateUploadLink extends React.Component { {passwordLengthTip} - - - - + + diff --git a/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js index b7a0ab3dca..49eae7c78d 100644 --- a/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js @@ -1,6 +1,6 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; -import { Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { Button, Input, InputGroup } from 'reactstrap'; import { gettext, isPro, siteRoot } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import { Utils } from '../../utils/utils'; @@ -328,7 +328,7 @@ class LibSubFolderSetGroupPermissionDialog extends React.Component { - + } diff --git a/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js index b41a2dd33e..2b1d49ca81 100644 --- a/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js @@ -1,7 +1,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { gettext, isPro, siteRoot } from '../../utils/constants'; -import { Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { Button, Input, InputGroup } from 'reactstrap'; import { seafileAPI } from '../../utils/seafile-api'; import { Utils } from '../../utils/utils'; import UserSelect from '../user-select'; @@ -288,7 +288,7 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { - + } diff --git a/frontend/src/components/dialog/org-add-user-dialog.js b/frontend/src/components/dialog/org-add-user-dialog.js index d01d2abcf6..20ade6b1f9 100644 --- a/frontend/src/components/dialog/org-add-user-dialog.js +++ b/frontend/src/components/dialog/org-add-user-dialog.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Button, Modal, Input, ModalBody, ModalFooter, Label, Form, InputGroup, InputGroupAddon, FormGroup } from 'reactstrap'; +import { Button, Modal, Input, ModalBody, ModalFooter, Label, Form, InputGroup, FormGroup } from 'reactstrap'; import { gettext } from '../../utils/constants'; import SeahubModalHeader from '@/components/common/seahub-modal-header'; @@ -146,14 +146,12 @@ class AddOrgUserDialog extends React.Component { {this.passwdInput = input;}} value={this.state.password || ''} onChange={this.inputPassword} /> - - - - + + diff --git a/frontend/src/components/dialog/org-set-group-quota-dialog.js b/frontend/src/components/dialog/org-set-group-quota-dialog.js index 4e55c66fa7..d4890b43d9 100644 --- a/frontend/src/components/dialog/org-set-group-quota-dialog.js +++ b/frontend/src/components/dialog/org-set-group-quota-dialog.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Button, Modal, ModalBody, ModalFooter, Input, InputGroupAddon, InputGroup } from 'reactstrap'; +import { Button, Modal, ModalBody, ModalFooter, Input, InputGroup, InputGroupText } from 'reactstrap'; import { gettext, orgID } from '../../utils/constants'; import SeahubModalHeader from '@/components/common/seahub-modal-header'; import { orgAdminAPI } from '../../utils/org-admin-api'; @@ -66,7 +66,7 @@ class SetGroupQuotaDialog extends React.Component { onChange={this.handleChange} autoFocus={true} /> - {'MB'} + {'MB'}


{gettext('An integer that is greater than 0 or equal to -2.')}
diff --git a/frontend/src/components/dialog/reset-webdav-password.js b/frontend/src/components/dialog/reset-webdav-password.js index 067c153c07..3e4b189e9c 100644 --- a/frontend/src/components/dialog/reset-webdav-password.js +++ b/frontend/src/components/dialog/reset-webdav-password.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; -import { Modal, ModalBody, ModalFooter, Alert, Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { Modal, ModalBody, ModalFooter, Alert, Button, Input, InputGroup } from 'reactstrap'; import { gettext } from '../../utils/constants'; import { Utils } from '../../utils/utils'; import SeahubModalHeader from '@/components/common/seahub-modal-header'; @@ -74,14 +74,12 @@ class ResetWebdavPassword extends Component { - - - - + +

{passwordTip}

{this.state.errMsg && {gettext(this.state.errMsg)}} diff --git a/frontend/src/components/dialog/set-org-user-default-quota.js b/frontend/src/components/dialog/set-org-user-default-quota.js index 20d46f2f1b..6acb61b2b9 100644 --- a/frontend/src/components/dialog/set-org-user-default-quota.js +++ b/frontend/src/components/dialog/set-org-user-default-quota.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Modal, ModalBody, ModalFooter, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap'; +import { Modal, ModalBody, ModalFooter, InputGroup, InputGroupText } from 'reactstrap'; import { gettext } from '../../utils/constants'; import { orgAdminAPI } from '../../utils/org-admin-api'; import { Utils } from '../../utils/utils'; @@ -66,9 +66,7 @@ class SetOrgUserDefaultQuota extends React.Component { - - MB - + MB

{gettext('Tip: 0 means default limit')}

{formErrorMsg &&

{formErrorMsg}

} diff --git a/frontend/src/components/dialog/set-org-user-quota.js b/frontend/src/components/dialog/set-org-user-quota.js index 9f0e9490c0..eeaffebffc 100644 --- a/frontend/src/components/dialog/set-org-user-quota.js +++ b/frontend/src/components/dialog/set-org-user-quota.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Modal, ModalBody, ModalFooter, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap'; +import { Modal, ModalBody, ModalFooter, InputGroup, InputGroupText } from 'reactstrap'; import { gettext } from '../../utils/constants'; import { orgAdminAPI } from '../../utils/org-admin-api'; import { Utils } from '../../utils/utils'; @@ -68,9 +68,7 @@ class SetOrgUserQuota extends React.Component { - - MB - + MB

{gettext('Tip: 0 means default limit')}

{formErrorMsg &&

{formErrorMsg}

} diff --git a/frontend/src/components/dialog/set-webdav-password.js b/frontend/src/components/dialog/set-webdav-password.js index 5e111c2c36..09cb29be89 100644 --- a/frontend/src/components/dialog/set-webdav-password.js +++ b/frontend/src/components/dialog/set-webdav-password.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; -import { Modal, ModalBody, ModalFooter, Alert, Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { Modal, ModalBody, ModalFooter, Alert, Button, Input, InputGroup } from 'reactstrap'; import { gettext } from '../../utils/constants'; import { Utils } from '../../utils/utils'; import SeahubModalHeader from '@/components/common/seahub-modal-header'; @@ -74,14 +74,12 @@ class SetWebdavPassword extends Component { - - - - + +

{passwordTip}

{this.state.errMsg && {gettext(this.state.errMsg)}} diff --git a/frontend/src/components/dialog/sysadmin-dialog/set-quota.js b/frontend/src/components/dialog/sysadmin-dialog/set-quota.js index 5ccba64b1e..c8bff4b7ed 100644 --- a/frontend/src/components/dialog/sysadmin-dialog/set-quota.js +++ b/frontend/src/components/dialog/sysadmin-dialog/set-quota.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Modal, ModalBody, ModalFooter, Button, Form, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap'; +import { Modal, ModalBody, ModalFooter, Button, Form, FormGroup, Input, InputGroup, InputGroupText } from 'reactstrap'; import { gettext } from '../../../utils/constants'; import SeahubModalHeader from '@/components/common/seahub-modal-header'; @@ -59,9 +59,7 @@ class SetQuotaDialog extends React.Component { onKeyDown={this.handleKeyDown} onChange={this.handleQuotaChange} /> - - MB - + MB

{gettext('An integer that is greater than or equal to 0.')} diff --git a/frontend/src/components/dialog/sysadmin-dialog/set-upload-download-rate-limit.js b/frontend/src/components/dialog/sysadmin-dialog/set-upload-download-rate-limit.js index 77c41bc174..dd176e3c83 100644 --- a/frontend/src/components/dialog/sysadmin-dialog/set-upload-download-rate-limit.js +++ b/frontend/src/components/dialog/sysadmin-dialog/set-upload-download-rate-limit.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Modal, ModalBody, ModalFooter, Button, Form, FormGroup, Input, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap'; +import { Modal, ModalBody, ModalFooter, Button, Form, FormGroup, Input, InputGroup, InputGroupText } from 'reactstrap'; import { gettext } from '../../../utils/constants'; import SeahubModalHeader from '@/components/common/seahub-modal-header'; @@ -60,9 +60,7 @@ class SysAdminSetUploadDownloadRateLimitDialog extends React.Component { onKeyDown={this.handleKeyDown} onChange={this.handleRateLimitChange} /> - - kB/s - + kB/s

{gettext('An integer that is greater than or equal to 0.')} diff --git a/frontend/src/components/dialog/sysadmin-dialog/sysadmin-add-user-dialog.js b/frontend/src/components/dialog/sysadmin-dialog/sysadmin-add-user-dialog.js index 46a2e3cd95..89edcfb2bc 100644 --- a/frontend/src/components/dialog/sysadmin-dialog/sysadmin-add-user-dialog.js +++ b/frontend/src/components/dialog/sysadmin-dialog/sysadmin-add-user-dialog.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Alert, Modal, ModalBody, ModalFooter, Button, Form, FormGroup, Label, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { Alert, Modal, ModalBody, ModalFooter, Button, Form, FormGroup, Label, Input, InputGroup } from 'reactstrap'; import { gettext } from '../../../utils/constants'; import { Utils } from '../../../utils/utils'; import SysAdminUserRoleEditor from '../../../components/select-editor/sysadmin-user-role-editor'; @@ -154,14 +154,12 @@ class SysAdminAddUserDialog extends React.Component { - - - - + + diff --git a/frontend/src/components/dialog/sysadmin-dialog/sysadmin-set-group-quota-dialog.js b/frontend/src/components/dialog/sysadmin-dialog/sysadmin-set-group-quota-dialog.js index b4ce175b03..a2d6088753 100644 --- a/frontend/src/components/dialog/sysadmin-dialog/sysadmin-set-group-quota-dialog.js +++ b/frontend/src/components/dialog/sysadmin-dialog/sysadmin-set-group-quota-dialog.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Button, Modal, ModalBody, ModalFooter, Input, InputGroupAddon, InputGroup } from 'reactstrap'; +import { Button, Modal, ModalBody, ModalFooter, Input, InputGroup, InputGroupText } from 'reactstrap'; import { gettext } from '../../../utils/constants'; import { systemAdminAPI } from '../../../utils/system-admin-api'; import { Utils } from '../../../utils/utils'; @@ -66,7 +66,7 @@ class SetGroupQuotaDialog extends React.Component { onChange={this.handleChange} autoFocus={true} /> - {'MB'} + {'MB'}


{gettext('An integer that is greater than 0 or equal to -2.')}
diff --git a/frontend/src/components/dialog/user-password-widgets/password-input.js b/frontend/src/components/dialog/user-password-widgets/password-input.js index 2a54454a38..c45020eb6e 100644 --- a/frontend/src/components/dialog/user-password-widgets/password-input.js +++ b/frontend/src/components/dialog/user-password-widgets/password-input.js @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import PropTypes from 'prop-types'; -import { FormGroup, Label, InputGroup, Input, InputGroupAddon, Button } from 'reactstrap'; +import { FormGroup, Label, InputGroup, Input, Button } from 'reactstrap'; import classnames from 'classnames'; import PasswordStrengthChecker from './password-strength-checker'; import { isMobile } from '../../../utils/utils'; @@ -53,11 +53,9 @@ const PasswordInput = ({ value, labelValue, enableCheckStrength, onChangeValue } passwordValue={passwordValue} /> )} - - - + ); diff --git a/frontend/src/components/dropdown-menu/item-dropdown-menu.js b/frontend/src/components/dropdown-menu/item-dropdown-menu.js index bf45e64b4a..f6be822893 100644 --- a/frontend/src/components/dropdown-menu/item-dropdown-menu.js +++ b/frontend/src/components/dropdown-menu/item-dropdown-menu.js @@ -154,6 +154,7 @@ class ItemDropdownMenu extends React.Component { return ( + {menuList.map((menuItem, index) => { if (menuItem === 'Divider') { @@ -215,7 +216,7 @@ class ItemDropdownMenu extends React.Component { onMouseMove={(e) => {e.stopPropagation();}} > @@ -225,7 +226,7 @@ class ItemDropdownMenu extends React.Component { {menuItem.subOpListHeader && {menuItem.subOpListHeader}} {menuItem.subOpList.map((item, index) => { diff --git a/frontend/src/components/file-view/file-toolbar.js b/frontend/src/components/file-view/file-toolbar.js index 97e9831354..9267a5ecd6 100644 --- a/frontend/src/components/file-view/file-toolbar.js +++ b/frontend/src/components/file-view/file-toolbar.js @@ -211,11 +211,11 @@ class FileToolbar extends React.Component { className="file-toolbar-btn" aria-label={gettext('More operations')} title={gettext('More operations')} - tag="div" + tag="span" > - + {filePerm == 'rw' && ( {gettext('History')} @@ -249,11 +249,10 @@ class FileToolbar extends React.Component { ))} - - + - + {gettext('Open parent folder')} diff --git a/frontend/src/components/file-view/onlyoffice-file-toolbar.js b/frontend/src/components/file-view/onlyoffice-file-toolbar.js index f8b3006fd8..d9c8900c97 100644 --- a/frontend/src/components/file-view/onlyoffice-file-toolbar.js +++ b/frontend/src/components/file-view/onlyoffice-file-toolbar.js @@ -50,14 +50,14 @@ class OnlyofficeFileToolbar extends React.Component { /> - + {gettext('Open parent folder')} @@ -72,10 +72,10 @@ class OnlyofficeFileToolbar extends React.Component { - + - + {gettext('Fold')} {gettext('Details')} diff --git a/frontend/src/components/modal-portal.js b/frontend/src/components/modal-portal.js index a37c3f076e..30cb47125a 100644 --- a/frontend/src/components/modal-portal.js +++ b/frontend/src/components/modal-portal.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import { createPortal } from 'react-dom'; import PropTypes from 'prop-types'; const propTypes = { @@ -23,7 +23,7 @@ class ModalPortal extends React.Component { } render() { - return ReactDOM.createPortal( + return createPortal( this.props.children, this.el, ); diff --git a/frontend/src/components/paginator.js b/frontend/src/components/paginator.js index 893955c10f..2e9fe7bf41 100644 --- a/frontend/src/components/paginator.js +++ b/frontend/src/components/paginator.js @@ -102,6 +102,7 @@ class Paginator extends Component { - - {gettext('days')} - + {gettext('days')} {!this.isExpireDaysNoLimit && ( {this.expirationLimitTip} diff --git a/frontend/src/components/sf-table/editors/editor-portal.js b/frontend/src/components/sf-table/editors/editor-portal.js index 5d4cb260b2..2c113baef7 100644 --- a/frontend/src/components/sf-table/editors/editor-portal.js +++ b/frontend/src/components/sf-table/editors/editor-portal.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import { createPortal } from 'react-dom'; import PropTypes from 'prop-types'; class EditorPortal extends React.Component { @@ -32,7 +32,7 @@ class EditorPortal extends React.Component { return null; } - return ReactDOM.createPortal( + return createPortal( this.props.children, this.el, ); diff --git a/frontend/src/components/sf-table/masks/cell-mask.js b/frontend/src/components/sf-table/masks/cell-mask.js index 22a90a0328..c52252c105 100644 --- a/frontend/src/components/sf-table/masks/cell-mask.js +++ b/frontend/src/components/sf-table/masks/cell-mask.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import { findDOMNode } from 'react-dom'; import PropTypes from 'prop-types'; class CellMask extends React.PureComponent { @@ -7,7 +7,7 @@ class CellMask extends React.PureComponent { componentDidUpdate() { // Scrolling left and right causes the interface to re-render, // and the style of CellMask is reset and needs to be fixed - const dom = ReactDOM.findDOMNode(this); + const dom = findDOMNode(this); if (dom.style.position === 'fixed') { dom.style.transform = 'none'; } diff --git a/frontend/src/components/sf-table/table-main/records-header/dropdown-menu/index.js b/frontend/src/components/sf-table/table-main/records-header/dropdown-menu/index.js index 2be2d2f7ba..0e2428ce15 100644 --- a/frontend/src/components/sf-table/table-main/records-header/dropdown-menu/index.js +++ b/frontend/src/components/sf-table/table-main/records-header/dropdown-menu/index.js @@ -23,7 +23,7 @@ const HeaderDropdownMenu = ({ column, ColumnDropdownMenu, customProps }) => { {cloneElement(ColumnDropdownMenu, { column, ...customProps })} diff --git a/frontend/src/components/share-link-panel/link-creation.js b/frontend/src/components/share-link-panel/link-creation.js index 73bdc80650..65c4be071a 100644 --- a/frontend/src/components/share-link-panel/link-creation.js +++ b/frontend/src/components/share-link-panel/link-creation.js @@ -1,7 +1,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import dayjs from 'dayjs'; -import { Button, Form, FormGroup, Label, Input, InputGroup, InputGroupAddon, Alert } from 'reactstrap'; +import { Button, Form, FormGroup, Label, Input, InputGroup, Alert } from 'reactstrap'; import { gettext, shareLinkExpireDaysMin, shareLinkExpireDaysMax, shareLinkExpireDaysDefault, shareLinkForceUsePassword, shareLinkPasswordMinLength, shareLinkPasswordStrengthLevel, isEmailConfigured } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import { shareLinkAPI } from '../../utils/share-link-api'; @@ -314,14 +314,12 @@ class LinkCreation extends React.Component { {gettext('(at least {passwordMinLength} characters and includes {passwordStrengthLevel} of the following: number, upper letter, lower letter and other symbols)').replace('{passwordMinLength}', shareLinkPasswordMinLength).replace('{passwordStrengthLevel}', shareLinkPasswordStrengthLevel)} - - - - + + diff --git a/frontend/src/components/share-link-panel/link-details.js b/frontend/src/components/share-link-panel/link-details.js index 22ad548f42..00cbff4ccd 100644 --- a/frontend/src/components/share-link-panel/link-details.js +++ b/frontend/src/components/share-link-panel/link-details.js @@ -2,7 +2,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import dayjs from 'dayjs'; import copy from 'copy-to-clipboard'; -import { Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { Button, Input, InputGroup } from 'reactstrap'; import { gettext, shareLinkExpireDaysMin, shareLinkExpireDaysMax, shareLinkExpireDaysDefault, canSendShareLinkEmail } from '../../utils/constants'; import CommonOperationConfirmationDialog from '../../components/dialog/common-operation-confirmation-dialog'; import { seafileAPI } from '../../utils/seafile-api'; @@ -198,14 +198,12 @@ class LinkDetails extends React.Component { : } - - - + @@ -235,15 +233,13 @@ class LinkDetails extends React.Component { ) : ( - - - + )} diff --git a/frontend/src/components/shared-link.js b/frontend/src/components/shared-link.js index 2fb185eea6..9f518dc780 100644 --- a/frontend/src/components/shared-link.js +++ b/frontend/src/components/shared-link.js @@ -1,6 +1,6 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; -import { Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { Button, Input, InputGroup } from 'reactstrap'; import { gettext } from '../utils/constants'; import ButtonQR from './btn-qr-code'; @@ -20,9 +20,7 @@ class SharedLink extends React.Component {

- - - +
diff --git a/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js b/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js index a3bb9d7ad0..5975b1569e 100644 --- a/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js +++ b/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js @@ -530,6 +530,7 @@ class SharedRepoListItem extends React.Component { onMouseMove={(e) => {e.stopPropagation();}} > diff --git a/frontend/src/components/sort-menu.js b/frontend/src/components/sort-menu.js index 5a061372c0..4817fa2867 100644 --- a/frontend/src/components/sort-menu.js +++ b/frontend/src/components/sort-menu.js @@ -47,7 +47,7 @@ class SortMenu extends React.Component { toggle={this.toggleDropdownMenu} > - + {sortOptions.map((item, index) => { return ( diff --git a/frontend/src/components/subscription.js b/frontend/src/components/subscription.js index 56b073b00e..3438384119 100644 --- a/frontend/src/components/subscription.js +++ b/frontend/src/components/subscription.js @@ -1,7 +1,7 @@ import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; import toaster from './toast'; -import { Modal, ModalBody, ModalFooter, InputGroup, InputGroupAddon, InputGroupText, Input, Button } from 'reactstrap'; +import { Modal, ModalBody, ModalFooter, InputGroup, InputGroupText, Input, Button } from 'reactstrap'; import { gettext, serviceURL } from '../utils/constants'; import { Utils } from '../utils/utils'; import { subscriptionAPI } from '../utils/subscription-api'; @@ -184,9 +184,7 @@ class Plans extends Component { {'¥ '}{currentPlan.price}{' ' + currentPlan.description} - - {operationIntro} - + {operationIntro} {currentPlan.asset_quota_price}{' ' + currentPlan.asset_quota_description} - - {operationIntro} - + {operationIntro} - - {' x ' + currentPlan.asset_quota_unit + 'GB'} - + {' x ' + currentPlan.asset_quota_unit + 'GB'} {'总价 ¥ ' + totalAmount} diff --git a/frontend/src/components/toast/toaster.js b/frontend/src/components/toast/toaster.js index 9fffdb5a48..16cb8a505b 100644 --- a/frontend/src/components/toast/toaster.js +++ b/frontend/src/components/toast/toaster.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import { createRoot } from 'react-dom/client'; import ToastManager from './toastManager'; import './toaster.css'; @@ -18,14 +18,15 @@ export default class Toaster { container.setAttribute('data-evergreen-toaster-container', ''); document.body.appendChild(container); - ReactDOM.render( + const root = createRoot(container); + root.render( , - container + /> ); + } _bindNotify = handler => { diff --git a/frontend/src/components/toolbar/dir-operation-toolbar.js b/frontend/src/components/toolbar/dir-operation-toolbar.js index f70350f304..7a5dbb968e 100644 --- a/frontend/src/components/toolbar/dir-operation-toolbar.js +++ b/frontend/src/components/toolbar/dir-operation-toolbar.js @@ -285,7 +285,7 @@ class DirOperationToolbar extends React.Component { {e.stopPropagation();}} > @@ -346,7 +346,7 @@ class DirOperationToolbar extends React.Component { content = ( diff --git a/frontend/src/components/toolbar/view-file-toolbar.js b/frontend/src/components/toolbar/view-file-toolbar.js index 6806cf9c0f..c7747c678e 100644 --- a/frontend/src/components/toolbar/view-file-toolbar.js +++ b/frontend/src/components/toolbar/view-file-toolbar.js @@ -149,7 +149,7 @@ class ViewFileToolbar extends React.Component { {opList.length > 0 && {e.stopPropagation();}} > diff --git a/frontend/src/components/view-modes.js b/frontend/src/components/view-modes.js index 951e67c72d..4f258695f7 100644 --- a/frontend/src/components/view-modes.js +++ b/frontend/src/components/view-modes.js @@ -60,7 +60,7 @@ class ViewModes extends React.Component { id="cur-view-change-mode-dropdown" > - + {options.map((item, index) => { return ( diff --git a/frontend/src/components/wiki-card-view/wiki-card-item.js b/frontend/src/components/wiki-card-view/wiki-card-item.js index 32bdb24d6b..4526f4d75b 100644 --- a/frontend/src/components/wiki-card-view/wiki-card-item.js +++ b/frontend/src/components/wiki-card-view/wiki-card-item.js @@ -235,7 +235,7 @@ class WikiCardItem extends Component { aria-haspopup={true} style={{ 'minWidth': '0' }} /> - + {showRename && {gettext('Rename')}} {showPublish && canPublishWiki && diff --git a/frontend/src/draft.js b/frontend/src/draft.js index 09ec7fe6b0..5ab7f80da3 100644 --- a/frontend/src/draft.js +++ b/frontend/src/draft.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import './css/draft.css'; @@ -12,4 +12,5 @@ export default function Draft() { ); } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/file-history-old.js b/frontend/src/file-history-old.js index f5d9b3e73b..f3ca872c34 100644 --- a/frontend/src/file-history-old.js +++ b/frontend/src/file-history-old.js @@ -1,5 +1,5 @@ import React, { Fragment } from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { Button } from 'reactstrap'; import { Utils } from './utils/utils'; import { seafileAPI } from './utils/seafile-api'; @@ -275,4 +275,5 @@ class FileHistory extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(,); diff --git a/frontend/src/file-history.js b/frontend/src/file-history.js index 5a49e9bf56..db0f179f2b 100644 --- a/frontend/src/file-history.js +++ b/frontend/src/file-history.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import axios from 'axios'; import { fileName, historyRepoID } from './utils/constants'; import SidePanel from './pages/file-history/side-panel'; @@ -69,4 +69,5 @@ class FileHistory extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/file-view.js b/frontend/src/file-view.js index 0780e05fa3..fd75eab0fd 100644 --- a/frontend/src/file-view.js +++ b/frontend/src/file-view.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import FileView from './components/file-view/file-view'; import FileViewTip from './components/file-view/file-view-tip'; import Image from './components/file-content-view/image'; @@ -88,4 +88,5 @@ class InnerFileView extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/history-trash-file-view.js b/frontend/src/history-trash-file-view.js index 7ef7f90202..fe9730fbf7 100644 --- a/frontend/src/history-trash-file-view.js +++ b/frontend/src/history-trash-file-view.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import FileView from './components/history-trash-file-view/file-view'; import FileViewTip from './components/history-trash-file-view/file-view-tip'; import Image from './components/file-content-view/image'; @@ -60,4 +60,5 @@ class HistoryTrashFileView extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/index.js b/frontend/src/index.js index d84f9133e7..a8827052b8 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -1,6 +1,6 @@ // Import React! import React, { Suspense } from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { I18nextProvider } from 'react-i18next'; import i18n from './_i18n/i18n-seafile-editor'; import MarkdownEditor from './pages/markdown-editor'; @@ -12,7 +12,8 @@ import './index.css'; const { repoID, repoEncrypted, filePerm } = window.app.pageOptions; -ReactDom.render( +const root = createRoot(document.getElementById('root')); +root.render( }> @@ -21,6 +22,5 @@ ReactDom.render( - , - document.getElementById('root') + ); diff --git a/frontend/src/metadata/components/cell-editors/editor-portal.js b/frontend/src/metadata/components/cell-editors/editor-portal.js index 5d4cb260b2..2c113baef7 100644 --- a/frontend/src/metadata/components/cell-editors/editor-portal.js +++ b/frontend/src/metadata/components/cell-editors/editor-portal.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import { createPortal } from 'react-dom'; import PropTypes from 'prop-types'; class EditorPortal extends React.Component { @@ -32,7 +32,7 @@ class EditorPortal extends React.Component { return null; } - return ReactDOM.createPortal( + return createPortal( this.props.children, this.el, ); diff --git a/frontend/src/metadata/components/cell-editors/number-editor.js b/frontend/src/metadata/components/cell-editors/number-editor.js index deab082f67..e9bc6191a0 100644 --- a/frontend/src/metadata/components/cell-editors/number-editor.js +++ b/frontend/src/metadata/components/cell-editors/number-editor.js @@ -1,5 +1,4 @@ import React, { forwardRef, useMemo, useImperativeHandle, useCallback, useState, useRef, useEffect } from 'react'; -import ReactDOM from 'react-dom'; import PropTypes from 'prop-types'; import { Utils } from '../../../utils/utils'; import { getNumberDisplayString, replaceNumberNotAllowInput, formatStringToNumber } from '../../utils/cell'; @@ -72,7 +71,7 @@ const NumberEditor = forwardRef(({ return { [key]: formatStringToNumber(value, data) }; }, getInputNode: () => { - const domNode = ReactDOM.findDOMNode(inputRef.current); + const domNode = inputRef.current; if (domNode.tagName === 'INPUT') return domNode; return domNode.querySelector('input:not([type=hidden])'); }, diff --git a/frontend/src/metadata/components/cell-editors/rate-editor/rate-item.js b/frontend/src/metadata/components/cell-editors/rate-editor/rate-item.js index 84e6ed3b50..7355b91e85 100644 --- a/frontend/src/metadata/components/cell-editors/rate-editor/rate-item.js +++ b/frontend/src/metadata/components/cell-editors/rate-editor/rate-item.js @@ -54,7 +54,7 @@ const RateItem = ({ {enterIndex !== -1 && ( - + {enterIndex} )} diff --git a/frontend/src/metadata/components/cell-editors/text-editor/index.js b/frontend/src/metadata/components/cell-editors/text-editor/index.js index 70fadd6312..e3f872093a 100644 --- a/frontend/src/metadata/components/cell-editors/text-editor/index.js +++ b/frontend/src/metadata/components/cell-editors/text-editor/index.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; -import ReactDOM from 'react-dom'; +import { findDOMNode } from 'react-dom'; import classnames from 'classnames'; import { KeyCodes } from '../../../../constants'; import { CellValueType } from './constants'; @@ -105,7 +105,7 @@ class SimpleTextEditor extends Component { }; getInputNode = () => { - const domNode = ReactDOM.findDOMNode(this.input); + const domNode = findDOMNode(this.input); if (domNode.tagName === 'INPUT') { return domNode; } @@ -118,11 +118,6 @@ class SimpleTextEditor extends Component { return this.input; }; - onSaveQRCodeValue = (value) => { - this.setState({ value }); - this.props.onCommit(); - }; - render() { const { column, readOnly, className, placeholder } = this.props; const { value } = this.state; diff --git a/frontend/src/metadata/components/metadata-details/ai/index.js b/frontend/src/metadata/components/metadata-details/ai/index.js index cc28677a81..95afb1c730 100644 --- a/frontend/src/metadata/components/metadata-details/ai/index.js +++ b/frontend/src/metadata/components/metadata-details/ai/index.js @@ -157,7 +157,7 @@ const AI = () => { {isMenuShow && (
- + {options.map(op => ( handelOperation(op)}>{op.label}))}
diff --git a/frontend/src/metadata/components/popover/column-popover/data/rate-data/index.js b/frontend/src/metadata/components/popover/column-popover/data/rate-data/index.js index 81796dd85f..210bafbfc0 100644 --- a/frontend/src/metadata/components/popover/column-popover/data/rate-data/index.js +++ b/frontend/src/metadata/components/popover/column-popover/data/rate-data/index.js @@ -65,7 +65,7 @@ const RateData = ({ value, onChange, updatePopoverState }) => { className="sf-metadata-rate-column-data-style-setting-popover" hide={closeStylePopover} hideWithEsc={closeStylePopover} - modifiers={{ preventOverflow: { boundariesElement: document.body } }} + modifiers={[{ name: 'preventOverflow', options: { boundary: document.body } }]} >
{RATE_COLORS.map(color => { diff --git a/frontend/src/metadata/components/popover/kanban-add-category-popover/index.js b/frontend/src/metadata/components/popover/kanban-add-category-popover/index.js index 1a951d1d8a..483eaa9f8d 100644 --- a/frontend/src/metadata/components/popover/kanban-add-category-popover/index.js +++ b/frontend/src/metadata/components/popover/kanban-add-category-popover/index.js @@ -48,7 +48,7 @@ const KanbanAddCategoryPopover = ({ target, options, onCancel, onSubmit }) => { className="sf-metadata-kanban-add-board-popover" hide={onCancel} hideWithEsc={onCancel} - modifiers={{ preventOverflow: { boundariesElement: document.body } }} + modifiers={[[{ name: 'preventOverflow', options: { boundary: document.body } }]]} >
diff --git a/frontend/src/metadata/views/table/masks/cell-mask.js b/frontend/src/metadata/views/table/masks/cell-mask.js index 22a90a0328..c52252c105 100644 --- a/frontend/src/metadata/views/table/masks/cell-mask.js +++ b/frontend/src/metadata/views/table/masks/cell-mask.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import { findDOMNode } from 'react-dom'; import PropTypes from 'prop-types'; class CellMask extends React.PureComponent { @@ -7,7 +7,7 @@ class CellMask extends React.PureComponent { componentDidUpdate() { // Scrolling left and right causes the interface to re-render, // and the style of CellMask is reset and needs to be fixed - const dom = ReactDOM.findDOMNode(this); + const dom = findDOMNode(this); if (dom.style.position === 'fixed') { dom.style.transform = 'none'; } diff --git a/frontend/src/metadata/views/table/table-main/records/record/cell/operation-btn/file-name-operation-btn/index.js b/frontend/src/metadata/views/table/table-main/records/record/cell/operation-btn/file-name-operation-btn/index.js new file mode 100644 index 0000000000..d423895e04 --- /dev/null +++ b/frontend/src/metadata/views/table/table-main/records/record/cell/operation-btn/file-name-operation-btn/index.js @@ -0,0 +1,55 @@ +import React, { useMemo } from 'react'; +import PropTypes from 'prop-types'; +import { UncontrolledTooltip } from 'reactstrap'; +import { IconBtn } from '@seafile/sf-metadata-ui-component'; +import { gettext } from '../../../../../../../../../utils/constants'; +import { EVENT_BUS_TYPE as METADATA_EVENT_BUS_TYPE, EDITOR_TYPE } from '../../../../../../../../constants'; +import { checkIsDir } from '../../../../../../../../utils/row'; +import { openFile } from '../../../../../../../../utils/file'; + +import './index.css'; + +const FileNameOperationBtn = ({ column, record, ...props }) => { + + const fileName = useMemo(() => { + const { key } = column; + return record[key]; + }, [column, record]); + + const isDir = useMemo(() => checkIsDir(record), [record]); + + const handelClick = (event) => { + event.stopPropagation(); + event.nativeEvent.stopImmediatePropagation(); + const repoID = window.sfMetadataContext.getSetting('repoID'); + openFile(repoID, record, () => { + window.sfMetadataContext.eventBus.dispatch(METADATA_EVENT_BUS_TYPE.OPEN_EDITOR, EDITOR_TYPE.PREVIEWER); + }); + }; + + if (!fileName) return null; + + return ( + <> + + + {isDir ? gettext('Open folder') : gettext('Open file')} + + + ); +}; + +FileNameOperationBtn.propTypes = { + column: PropTypes.object, + record: PropTypes.object, +}; + +export default FileNameOperationBtn; diff --git a/frontend/src/pages/file-history-old/history-item.js b/frontend/src/pages/file-history-old/history-item.js index ac683f625f..acc92d1923 100644 --- a/frontend/src/pages/file-history-old/history-item.js +++ b/frontend/src/pages/file-history-old/history-item.js @@ -122,7 +122,7 @@ class MoreMenu extends React.PureComponent { aria-expanded={this.state.dropdownOpen} > - + {index !== 0 && {gettext('Restore')}} {canDownload && {gettext('Download')}} {gettext('View')} diff --git a/frontend/src/pages/institution-admin/index.js b/frontend/src/pages/institution-admin/index.js index 863de069f1..91f70aec1b 100644 --- a/frontend/src/pages/institution-admin/index.js +++ b/frontend/src/pages/institution-admin/index.js @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import MediaQuery from 'react-responsive'; import { Modal } from 'reactstrap'; import SidePanel from './side-panel'; @@ -29,4 +29,5 @@ export default function Institutions() { ); } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/pages/markdown-editor/header-toolbar/collab-users-button.js b/frontend/src/pages/markdown-editor/header-toolbar/collab-users-button.js index bb0a3bf3ab..8b5693bf1b 100644 --- a/frontend/src/pages/markdown-editor/header-toolbar/collab-users-button.js +++ b/frontend/src/pages/markdown-editor/header-toolbar/collab-users-button.js @@ -18,7 +18,7 @@ class CollabUsersButton extends React.PureComponent { render() { return ( - + {this.props.users.length} diff --git a/frontend/src/pages/markdown-editor/header-toolbar/more-menu.js b/frontend/src/pages/markdown-editor/header-toolbar/more-menu.js index 173735304d..5a47a43a60 100644 --- a/frontend/src/pages/markdown-editor/header-toolbar/more-menu.js +++ b/frontend/src/pages/markdown-editor/header-toolbar/more-menu.js @@ -51,12 +51,12 @@ class MoreMenu extends React.PureComponent { const isSmall = this.props.isSmallScreen; return ( - + {gettext('More')} - + {(!this.props.readOnly && editorMode === 'rich') && {gettext('Switch to plain text editor')}} {(!this.props.readOnly && editorMode === 'plain') && diff --git a/frontend/src/pages/my-libs/mylib-repo-menu.js b/frontend/src/pages/my-libs/mylib-repo-menu.js index c2b275b74f..8aef7d0fa9 100644 --- a/frontend/src/pages/my-libs/mylib-repo-menu.js +++ b/frontend/src/pages/my-libs/mylib-repo-menu.js @@ -221,6 +221,7 @@ class MylibRepoMenu extends React.Component { onMouseMove={(e) => {e.stopPropagation();}} > diff --git a/frontend/src/pages/org-admin/departments/departments-node-dropdown-menu.js b/frontend/src/pages/org-admin/departments/departments-node-dropdown-menu.js index 00a886c8fa..e83779342d 100644 --- a/frontend/src/pages/org-admin/departments/departments-node-dropdown-menu.js +++ b/frontend/src/pages/org-admin/departments/departments-node-dropdown-menu.js @@ -6,7 +6,7 @@ import { gettext } from '../../../utils/constants'; function DepartmentNodeMenu({ node, toggleDelete, toggleRename, toggleAddMembers, toggleAddDepartment, toggleAddLibrary }) { return ( toggleAddDepartment(node)}> diff --git a/frontend/src/pages/org-admin/departments/member-item.js b/frontend/src/pages/org-admin/departments/member-item.js index 096a023307..e5a38a9744 100644 --- a/frontend/src/pages/org-admin/departments/member-item.js +++ b/frontend/src/pages/org-admin/departments/member-item.js @@ -118,7 +118,7 @@ class DepartmentsV2MembersItem extends React.Component { aria-label={gettext('More operations')} data-toggle="dropdown" /> - + {gettext('Delete')} diff --git a/frontend/src/pages/org-admin/index.js b/frontend/src/pages/org-admin/index.js index c2bb95df1e..d633c10558 100644 --- a/frontend/src/pages/org-admin/index.js +++ b/frontend/src/pages/org-admin/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { Router } from '@gatsbyjs/reach-router'; import { siteRoot, enableMultiADFS } from '../../utils/constants'; import SidePanel from './side-panel'; @@ -135,4 +135,5 @@ class Org extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/pages/org-admin/input-item.js b/frontend/src/pages/org-admin/input-item.js index d490281d87..a63fad8905 100644 --- a/frontend/src/pages/org-admin/input-item.js +++ b/frontend/src/pages/org-admin/input-item.js @@ -1,5 +1,5 @@ import React, { Component, Fragment } from 'react'; -import { Input, InputGroup, InputGroupAddon, Button, Row, Col, Label } from 'reactstrap'; +import { Input, InputGroup, Button, Row, Col, Label } from 'reactstrap'; import PropTypes from 'prop-types'; import { gettext } from '../../utils/constants'; @@ -67,11 +67,9 @@ class OrgSamlConfigInput extends Component { - {this.props.domainVerified && - - - - } + {this.props.domainVerified && ( + + )} {this.props.isCertificate &&

diff --git a/frontend/src/pages/org-admin/org-saml-config.js b/frontend/src/pages/org-admin/org-saml-config.js index a23afb3d6a..04a507f0db 100644 --- a/frontend/src/pages/org-admin/org-saml-config.js +++ b/frontend/src/pages/org-admin/org-saml-config.js @@ -1,5 +1,5 @@ import React, { Fragment, Component } from 'react'; -import { Row, Col, Label, Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { Row, Col, Label, Button, Input, InputGroup } from 'reactstrap'; import copy from 'copy-to-clipboard'; import MainPanelTopbar from './main-panel-topbar'; import toaster from '../../components/toast'; @@ -114,9 +114,7 @@ class OrgSAMLConfig extends Component { - - - + @@ -128,9 +126,7 @@ class OrgSAMLConfig extends Component { - - - + @@ -142,9 +138,7 @@ class OrgSAMLConfig extends Component { - - - + @@ -156,9 +150,7 @@ class OrgSAMLConfig extends Component { - - - + @@ -204,9 +196,7 @@ class OrgSAMLConfig extends Component { {(dnsTxt && !domainVerified) && - - - + } {(dnsTxt && !domainVerified) && diff --git a/frontend/src/pages/org-admin/web-settings/web-settings.js b/frontend/src/pages/org-admin/web-settings/web-settings.js index d7bcc1cf7d..aeee03f216 100644 --- a/frontend/src/pages/org-admin/web-settings/web-settings.js +++ b/frontend/src/pages/org-admin/web-settings/web-settings.js @@ -8,7 +8,7 @@ import MainPanelTopbar from '../main-panel-topbar'; import Section from './section'; import InputItem from './input-item'; import FileItem from './file-item'; -import { InputGroupAddon, InputGroupText } from 'reactstrap'; +import { InputGroupText } from 'reactstrap'; import '../../../css/system-admin-web-settings.css'; import CheckboxItem from '../../sys-admin/web-settings/checkbox-item'; @@ -192,9 +192,7 @@ class OrgWebSettings extends Component { value={user_default_quota} helpTip={gettext('Tip: 0 means default limit, the unit is MB')} inputAddon={ - - MB - + MB } valueFixed={1} /> diff --git a/frontend/src/pages/plain-markdown-editor/index.js b/frontend/src/pages/plain-markdown-editor/index.js index 7a76e94a55..eb0b3fb73c 100644 --- a/frontend/src/pages/plain-markdown-editor/index.js +++ b/frontend/src/pages/plain-markdown-editor/index.js @@ -1,5 +1,5 @@ import React, { useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import isHotkey from 'is-hotkey'; import PropTypes from 'prop-types'; import { processor } from '@seafile/seafile-editor'; @@ -262,4 +262,5 @@ PlainMarkdownEditor.propTypes = propTypes; export default PlainMarkdownEditor; -ReactDom.render(, document.getElementById('root')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/pages/repo-wiki-mode/side-panel.js b/frontend/src/pages/repo-wiki-mode/side-panel.js index c14f140d16..1670363a9a 100644 --- a/frontend/src/pages/repo-wiki-mode/side-panel.js +++ b/frontend/src/pages/repo-wiki-mode/side-panel.js @@ -171,7 +171,7 @@ class SidePanel extends Component { aria-expanded={this.state.isHeaderMenuShow} onClick={this.onDropdownToggleClick} /> - + {gettext('New Folder')} {gettext('New File')} diff --git a/frontend/src/pages/sdoc-revision/index.js b/frontend/src/pages/sdoc-revision/index.js index 088c0f24d1..d840df317b 100644 --- a/frontend/src/pages/sdoc-revision/index.js +++ b/frontend/src/pages/sdoc-revision/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { Button } from 'reactstrap'; import { DiffViewer } from '@seafile/sdoc-editor'; import { gettext } from '../../utils/constants'; @@ -133,4 +133,5 @@ class SdocRevision extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/pages/sdoc/sdoc-file-history/index.js b/frontend/src/pages/sdoc/sdoc-file-history/index.js index f744d06b0f..248d0234dd 100644 --- a/frontend/src/pages/sdoc/sdoc-file-history/index.js +++ b/frontend/src/pages/sdoc/sdoc-file-history/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { I18nextProvider } from 'react-i18next'; import i18n from '../../../_i18n/i18n-sdoc-editor'; import { UncontrolledTooltip } from 'reactstrap'; @@ -436,8 +436,9 @@ class SdocFileHistory extends React.Component { } } -ReactDom.render( +const root = createRoot(document.getElementById('wrapper')); +root.render( - , - document.getElementById('wrapper')); + +); diff --git a/frontend/src/pages/sdoc/sdoc-published-revision/index.js b/frontend/src/pages/sdoc/sdoc-published-revision/index.js index 1137de0dfa..1ddce08947 100644 --- a/frontend/src/pages/sdoc/sdoc-published-revision/index.js +++ b/frontend/src/pages/sdoc/sdoc-published-revision/index.js @@ -1,5 +1,5 @@ import React, { Suspense } from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { I18nextProvider } from 'react-i18next'; import { PublishedRevisionViewer } from '@seafile/sdoc-editor'; import i18n from '../../../_i18n/i18n-sdoc-editor'; @@ -45,11 +45,11 @@ window.seafile = { revisionId, }; -ReactDom.render( +const root = createRoot(document.getElementById('wrapper')); +root.render( }> - , - document.getElementById('wrapper') + ); diff --git a/frontend/src/pages/sys-admin/departments/departments-node-dropdown-menu.js b/frontend/src/pages/sys-admin/departments/departments-node-dropdown-menu.js index 00a886c8fa..e83779342d 100644 --- a/frontend/src/pages/sys-admin/departments/departments-node-dropdown-menu.js +++ b/frontend/src/pages/sys-admin/departments/departments-node-dropdown-menu.js @@ -6,7 +6,7 @@ import { gettext } from '../../../utils/constants'; function DepartmentNodeMenu({ node, toggleDelete, toggleRename, toggleAddMembers, toggleAddDepartment, toggleAddLibrary }) { return ( toggleAddDepartment(node)}> diff --git a/frontend/src/pages/sys-admin/departments/member-item.js b/frontend/src/pages/sys-admin/departments/member-item.js index 9fd5aff40c..7395262fb1 100644 --- a/frontend/src/pages/sys-admin/departments/member-item.js +++ b/frontend/src/pages/sys-admin/departments/member-item.js @@ -119,7 +119,7 @@ class MemberItem extends React.Component { aria-label={gettext('More operations')} data-toggle="dropdown" /> - + {gettext('Delete')} diff --git a/frontend/src/pages/sys-admin/dingtalk/dingtalk-departments-tree-node.js b/frontend/src/pages/sys-admin/dingtalk/dingtalk-departments-tree-node.js index 32b4bd087c..a320d781b9 100644 --- a/frontend/src/pages/sys-admin/dingtalk/dingtalk-departments-tree-node.js +++ b/frontend/src/pages/sys-admin/dingtalk/dingtalk-departments-tree-node.js @@ -123,7 +123,7 @@ class DingtalkDepartmentsTreeNode extends Component { aria-expanded={this.state.dropdownOpen} > - + - - , - document.getElementById('wrapper') + + + + ); diff --git a/frontend/src/pages/sys-admin/users/users-filter-bar.js b/frontend/src/pages/sys-admin/users/users-filter-bar.js index 5787864f7c..64e2634c7c 100644 --- a/frontend/src/pages/sys-admin/users/users-filter-bar.js +++ b/frontend/src/pages/sys-admin/users/users-filter-bar.js @@ -56,7 +56,7 @@ class UsersFilterBar extends Component {

- + , document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/pages/upload-link/upload-progress-dialog.js b/frontend/src/pages/upload-link/upload-progress-dialog.js index adf21df7ca..375534c289 100644 --- a/frontend/src/pages/upload-link/upload-progress-dialog.js +++ b/frontend/src/pages/upload-link/upload-progress-dialog.js @@ -63,7 +63,7 @@ class UploadProgressDialog extends React.Component {
- {gettext('Upload')} + {gettext('Upload')} {gettext('Upload Files')} {gettext('Upload Folder')} diff --git a/frontend/src/pages/wiki2/wiki-nav/pages/page-dropdownmenu.js b/frontend/src/pages/wiki2/wiki-nav/pages/page-dropdownmenu.js index cbc01a924a..98981d3adc 100644 --- a/frontend/src/pages/wiki2/wiki-nav/pages/page-dropdownmenu.js +++ b/frontend/src/pages/wiki2/wiki-nav/pages/page-dropdownmenu.js @@ -97,7 +97,7 @@ export default class PageDropdownMenu extends Component { diff --git a/frontend/src/repo-folder-trash.js b/frontend/src/repo-folder-trash.js index 5c3540da95..3bbf90903e 100644 --- a/frontend/src/repo-folder-trash.js +++ b/frontend/src/repo-folder-trash.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import PropTypes from 'prop-types'; import { navigate } from '@gatsbyjs/reach-router'; import dayjs from 'dayjs'; @@ -442,4 +442,6 @@ FolderItem.propTypes = { renderFolder: PropTypes.func.isRequired, }; -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); + diff --git a/frontend/src/repo-history.js b/frontend/src/repo-history.js index 43f0fe149f..7ac1c5f3b4 100644 --- a/frontend/src/repo-history.js +++ b/frontend/src/repo-history.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import PropTypes from 'prop-types'; import { navigate } from '@gatsbyjs/reach-router'; import dayjs from 'dayjs'; @@ -345,4 +345,5 @@ Item.propTypes = { item: PropTypes.object.isRequired, }; -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/repo-snapshot.js b/frontend/src/repo-snapshot.js index 6c866e2c0a..5ed747abb2 100644 --- a/frontend/src/repo-snapshot.js +++ b/frontend/src/repo-snapshot.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import PropTypes from 'prop-types'; import { navigate } from '@gatsbyjs/reach-router'; import { Utils } from './utils/utils'; @@ -319,4 +319,5 @@ FolderItem.propTypes = { renderFolder: PropTypes.func.isRequired, }; -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/settings.js b/frontend/src/settings.js index 58eeca18a8..6d16147d99 100644 --- a/frontend/src/settings.js +++ b/frontend/src/settings.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import MediaQuery from 'react-responsive'; import { Modal } from 'reactstrap'; import { Utils } from './utils/utils'; @@ -210,4 +210,5 @@ class Settings extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-dir-view.js b/frontend/src/shared-dir-view.js index 3e04455616..5328ec4e93 100644 --- a/frontend/src/shared-dir-view.js +++ b/frontend/src/shared-dir-view.js @@ -1,7 +1,7 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import MD5 from 'MD5'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { Button, Dropdown, DropdownToggle, DropdownItem, UncontrolledTooltip } from 'reactstrap'; import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; @@ -1015,4 +1015,5 @@ GridItem.propTypes = { showImagePopup: PropTypes.func, }; -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-audio.js b/frontend/src/shared-file-view-audio.js index c6dcc41b1a..35709e50b4 100644 --- a/frontend/src/shared-file-view-audio.js +++ b/frontend/src/shared-file-view-audio.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import SharedFileView from './components/shared-file-view/shared-file-view'; import SharedFileViewTip from './components/shared-file-view/shared-file-view-tip'; import AudioPlayer from './components/audio-player'; @@ -38,4 +38,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-document.js b/frontend/src/shared-file-view-document.js index 04979b0ba7..d636d46d56 100644 --- a/frontend/src/shared-file-view-document.js +++ b/frontend/src/shared-file-view-document.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { seafileAPI } from './utils/seafile-api'; import { gettext, mediaUrl } from './utils/constants'; import SharedFileView from './components/shared-file-view/shared-file-view'; @@ -103,4 +103,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-image.js b/frontend/src/shared-file-view-image.js index 22f6dc433a..727655911c 100644 --- a/frontend/src/shared-file-view-image.js +++ b/frontend/src/shared-file-view-image.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import SharedFileView from './components/shared-file-view/shared-file-view'; import SharedFileViewTip from './components/shared-file-view/shared-file-view-tip'; import { gettext } from './utils/constants'; @@ -51,4 +51,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-markdown.js b/frontend/src/shared-file-view-markdown.js index 9b2f73d6ca..84d09b1224 100644 --- a/frontend/src/shared-file-view-markdown.js +++ b/frontend/src/shared-file-view-markdown.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { MarkdownViewer } from '@seafile/seafile-editor'; import { seafileAPI } from './utils/seafile-api'; import { Utils } from './utils/utils'; @@ -87,4 +87,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-pdf.js b/frontend/src/shared-file-view-pdf.js index 6ec24fb97f..d81f793dc3 100644 --- a/frontend/src/shared-file-view-pdf.js +++ b/frontend/src/shared-file-view-pdf.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import SharedFileView from './components/shared-file-view/shared-file-view'; import SharedFileViewTip from './components/shared-file-view/shared-file-view-tip'; import PDFViewer from './components/pdf-viewer'; @@ -28,4 +28,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-sdoc.js b/frontend/src/shared-file-view-sdoc.js index 913f14693c..9de59780cb 100644 --- a/frontend/src/shared-file-view-sdoc.js +++ b/frontend/src/shared-file-view-sdoc.js @@ -1,5 +1,5 @@ import React, { Suspense } from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { SimpleViewer } from '@seafile/sdoc-editor'; import { I18nextProvider } from 'react-i18next'; import i18n from './_i18n/i18n-sdoc-editor'; @@ -44,11 +44,12 @@ window.seafile = { document.getElementById('favicon').href = fileIcon; })(); -ReactDom.render( + +const root = createRoot(document.getElementById('wrapper')); +root.render( }> - , - document.getElementById('wrapper') + ); diff --git a/frontend/src/shared-file-view-spreadsheet.js b/frontend/src/shared-file-view-spreadsheet.js index dc0ffb3cf1..cd4437cc04 100644 --- a/frontend/src/shared-file-view-spreadsheet.js +++ b/frontend/src/shared-file-view-spreadsheet.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { seafileAPI } from './utils/seafile-api'; import { siteRoot, gettext } from './utils/constants'; import SharedFileView from './components/shared-file-view/shared-file-view'; @@ -105,4 +105,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-svg.js b/frontend/src/shared-file-view-svg.js index 3fe77bcd8c..8f6f51fc4f 100644 --- a/frontend/src/shared-file-view-svg.js +++ b/frontend/src/shared-file-view-svg.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import SharedFileView from './components/shared-file-view/shared-file-view'; import SharedFileViewTip from './components/shared-file-view/shared-file-view-tip'; @@ -29,4 +29,6 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); + diff --git a/frontend/src/shared-file-view-text.js b/frontend/src/shared-file-view-text.js index 2663b62025..f77bcca134 100644 --- a/frontend/src/shared-file-view-text.js +++ b/frontend/src/shared-file-view-text.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import SharedFileView from './components/shared-file-view/shared-file-view'; import SharedFileViewTip from './components/shared-file-view/shared-file-view-tip'; import SeafileCodeMirror from './components/seafile-codemirror'; @@ -27,4 +27,5 @@ class SharedFileViewText extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-unknown.js b/frontend/src/shared-file-view-unknown.js index 55adfd997b..4fa7f4f1a0 100644 --- a/frontend/src/shared-file-view-unknown.js +++ b/frontend/src/shared-file-view-unknown.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import SharedFileView from './components/shared-file-view/shared-file-view'; import SharedFileViewTip from './components/shared-file-view/shared-file-view-tip'; @@ -19,4 +19,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/shared-file-view-video.js b/frontend/src/shared-file-view-video.js index 73414aa1ed..285cf5a42c 100644 --- a/frontend/src/shared-file-view-video.js +++ b/frontend/src/shared-file-view-video.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import SharedFileView from './components/shared-file-view/shared-file-view'; import SharedFileViewTip from './components/shared-file-view/shared-file-view-tip'; import VideoPlayer from './components/video-player'; @@ -40,4 +40,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/subscription.js b/frontend/src/subscription.js index 8c5177163d..7aa1f8c044 100644 --- a/frontend/src/subscription.js +++ b/frontend/src/subscription.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { siteRoot, mediaUrl, logoPath, logoWidth, logoHeight, siteTitle } from './utils/constants'; import SideNav from './components/user-settings/side-nav'; import Account from './components/common/account'; @@ -66,7 +66,5 @@ class UserSubscription extends React.Component { } } -ReactDOM.render( - , - document.getElementById('wrapper') -); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/tag/components/tag-view-name/all-tags-operation-toolbar.js b/frontend/src/tag/components/tag-view-name/all-tags-operation-toolbar.js index 34f50300f4..188f0fa149 100644 --- a/frontend/src/tag/components/tag-view-name/all-tags-operation-toolbar.js +++ b/frontend/src/tag/components/tag-view-name/all-tags-operation-toolbar.js @@ -44,7 +44,7 @@ const AllTagsOperationToolbar = ({ children }) => {
, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/tc-view.js b/frontend/src/tc-view.js index a7f75d4778..553400ef5f 100644 --- a/frontend/src/tc-view.js +++ b/frontend/src/tc-view.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import Logo from './components/logo'; import Account from './components/common/account'; import TermsPreviewWidget from './components/terms-preview-widget'; @@ -33,4 +33,5 @@ class TCView extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/tldrawEditor.js b/frontend/src/tldrawEditor.js index df249891b6..781cdb961e 100644 --- a/frontend/src/tldrawEditor.js +++ b/frontend/src/tldrawEditor.js @@ -1,11 +1,11 @@ import React, { Suspense } from 'react'; -import ReactDOM from 'react-dom'; +import { createRoot } from 'react-dom/client'; import TldrawEditor from './pages/tldraw-editor'; import Loading from './components/loading'; -ReactDOM.render( +const root = createRoot(document.getElementById('wrapper')); +root.render( }> - , - document.getElementById('wrapper') + ); diff --git a/frontend/src/user-notifications.js b/frontend/src/user-notifications.js index f7ed6525ae..6d264400be 100644 --- a/frontend/src/user-notifications.js +++ b/frontend/src/user-notifications.js @@ -116,7 +116,7 @@ class UserNotificationsDialog extends React.Component { - + {gettext('Mark all read')} {gettext('Clear')} diff --git a/frontend/src/view-file-collabora-online.js b/frontend/src/view-file-collabora-online.js index 2297b0ceb7..f9db8ca204 100644 --- a/frontend/src/view-file-collabora-online.js +++ b/frontend/src/view-file-collabora-online.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import FileView from './components/file-view/file-view'; import FileViewTip from './components/file-view/file-view-tip'; @@ -45,4 +45,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/view-file-document.js b/frontend/src/view-file-document.js index e7b12a1724..71afb558d7 100644 --- a/frontend/src/view-file-document.js +++ b/frontend/src/view-file-document.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { seafileAPI } from './utils/seafile-api'; import { gettext, mediaUrl } from './utils/constants'; import FileView from './components/file-view/file-view'; @@ -106,4 +106,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/view-file-onlyoffice.js b/frontend/src/view-file-onlyoffice.js index 76ea6a2ad6..968127f6dd 100644 --- a/frontend/src/view-file-onlyoffice.js +++ b/frontend/src/view-file-onlyoffice.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import FileView from './components/file-view/file-view'; import FileViewTip from './components/file-view/file-view-tip'; @@ -30,4 +30,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/view-file-sdoc.js b/frontend/src/view-file-sdoc.js index dcd5772db9..9ea99790f1 100644 --- a/frontend/src/view-file-sdoc.js +++ b/frontend/src/view-file-sdoc.js @@ -1,5 +1,5 @@ import React, { Suspense } from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { I18nextProvider } from 'react-i18next'; import i18n from './_i18n/i18n-sdoc-editor'; import { Utils } from './utils/utils'; @@ -59,7 +59,8 @@ window.seafile = { const repoInfo = { encrypted: repoEncrypted, permission: filePerm, is_admin: isRepoAdmin }; -ReactDom.render( +const root = createRoot(document.getElementById('wrapper')); +root.render( }> @@ -70,6 +71,5 @@ ReactDom.render( - , - document.getElementById('wrapper') + ); diff --git a/frontend/src/view-file-spreadsheet.js b/frontend/src/view-file-spreadsheet.js index a307ccc737..25c19bc91a 100644 --- a/frontend/src/view-file-spreadsheet.js +++ b/frontend/src/view-file-spreadsheet.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { seafileAPI } from './utils/seafile-api'; import { siteRoot, gettext } from './utils/constants'; import FileView from './components/file-view/file-view'; @@ -105,4 +105,5 @@ class FileContent extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/view-file-text.js b/frontend/src/view-file-text.js index 3678d64fac..a195ae47d8 100644 --- a/frontend/src/view-file-text.js +++ b/frontend/src/view-file-text.js @@ -1,5 +1,5 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import PropTypes from 'prop-types'; import toaster from './components/toast'; import { gettext } from './utils/constants'; @@ -151,4 +151,5 @@ class ViewFileText extends React.Component { } } -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/wiki.js b/frontend/src/wiki.js index a229ac4695..b51a23fa11 100644 --- a/frontend/src/wiki.js +++ b/frontend/src/wiki.js @@ -1,5 +1,6 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import Wiki from './pages/wiki'; -ReactDom.render(, document.getElementById('wrapper')); +const root = createRoot(document.getElementById('wrapper')); +root.render(); diff --git a/frontend/src/wiki2.js b/frontend/src/wiki2.js index 4b159f8923..77df955489 100644 --- a/frontend/src/wiki2.js +++ b/frontend/src/wiki2.js @@ -1,15 +1,15 @@ import React, { Suspense } from 'react'; -import ReactDom from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { I18nextProvider } from 'react-i18next'; import Wiki from './pages/wiki2'; import i18n from './_i18n/i18n-sdoc-editor'; import Loading from './components/loading'; -ReactDom.render( +const root = createRoot(document.getElementById('wrapper')); +root.render( }> - , - document.getElementById('wrapper') + ); diff --git a/media/css/seahub_react.css b/media/css/seahub_react.css index 7eb01e6a25..9acce05e87 100644 --- a/media/css/seahub_react.css +++ b/media/css/seahub_react.css @@ -34,14 +34,15 @@ /****** sf2-icon-xx ********/ @font-face { font-family: 'seafile-font2'; - src:url('sf_font2/seafile-font2.eot'); - src:url('sf_font2/seafile-font2.eot?#iefix') format('embedded-opentype'), + src: url('sf_font2/seafile-font2.eot'); + src: url('sf_font2/seafile-font2.eot?#iefix') format('embedded-opentype'), url('sf_font2/seafile-font2.woff') format('woff'), url('sf_font2/seafile-font2.ttf') format('truetype'), url('sf_font2/seafile-font2.svg#seafile-font2') format('svg'); font-weight: normal; font-style: normal; } + [class^="sf2-icon-"], [class*=" sf2-icon-"] { font-family: 'seafile-font2'; @@ -53,81 +54,268 @@ -webkit-font-smoothing: antialiased; } -.sf2-icon-histogram:before { content:"\e000"; } -.sf2-icon-wrench:before { content:"\e001"; } -.sf2-icon-clock:before { content:"\e002"; } -.sf2-icon-bell:before { content:"\e003"; } -.sf2-icon-delete:before { content:"\e006"; } -.sf2-icon-monitor:before { content:"\e007"; } -.sf2-icon-download:before { content:"\e008"; } -.sf2-icon-msgs:before { content:"\e00b"; } -.sf2-icon-group:before { content:"\e00c"; } -.sf2-icon-link:before { content:"\e00e"; } -.sf2-icon-user:before { content:"\e00f"; } -.sf2-icon-organization:before { content:"\e010"; } -.sf2-icon-share:before { content:"\e011"; } -.sf2-icon-star:before { content:"\e012"; } -.sf2-icon-wiki:before { content:"\e013"; } -.sf2-icon-wiki-view:before { content:"\e013"; } -.sf2-icon-history:before { content:"\e014"; } -.sf2-icon-cog1:before { content:"\e015"; } -.sf2-icon-trash:before { content:"\e016"; } -.sf2-icon-security:before { content:"\e017"; } -.sf2-icon-tick:before { content:"\e01e"; } -.sf2-icon-x2:before { content:"\e01f"; } -.sf2-icon-edit:before { content:"\e018"; } -.sf2-icon-caret-down:before { content:"\e01a"; } -.sf2-icon-cog2:before { content:"\e01b"; } -.sf2-icon-x1:before { content:"\e01d"; } -.sf2-icon-minus:before {content:"\e01c"} -.sf2-icon-confirm:before {content:"\e01e"} -.sf2-icon-cancel:before {content:"\e01f"} -.sf2-icon-user2:before { content:"\e020"; } -.sf2-icon-grid-view:before { content:"\e025"; } -.sf2-icon-list-view:before { content:"\e026"; } -.sf2-icon-plus:before { content: "\e027"; } -.sf2-icon-copy:before {content:"\e028"} -.sf2-icon-move:before {content:"\e029"} -.sf2-icon-reply:before { content:"\e02a"; } -.sf2-icon-admin-log:before { content:"\e02e"; } -.sf2-icon-info:before { content:"\e02f"; } -.sf2-icon-menu:before { content: "\e031"; } -.sf2-icon-more:before { content: "\e032"; } -.sf2-icon-x3:before {content:"\e035";} -.sf2-icon-close:before { content:"\e035"; } -.sf2-icon-two-columns:before { content:"\e036"; } -.sf2-icon-tag:before {content:"\e037"} -.sf2-icon-review:before {content:"\e038"} -.sf2-icon-readme:before {content:"\e039"} -.sf2-icon-drafts:before {content:"\e03a"} -.sf2-icon-recycle:before {content:"\e03b"} -.sf2-icon-library:before { content:"\e00d"; } -.sf2-icon-invite:before { content: "\e02b"; } +.sf2-icon-histogram:before { + content: "\e000"; +} + +.sf2-icon-wrench:before { + content: "\e001"; +} + +.sf2-icon-clock:before { + content: "\e002"; +} + +.sf2-icon-bell:before { + content: "\e003"; +} + +.sf2-icon-delete:before { + content: "\e006"; +} + +.sf2-icon-monitor:before { + content: "\e007"; +} + +.sf2-icon-download:before { + content: "\e008"; +} + +.sf2-icon-msgs:before { + content: "\e00b"; +} + +.sf2-icon-group:before { + content: "\e00c"; +} + +.sf2-icon-link:before { + content: "\e00e"; +} + +.sf2-icon-user:before { + content: "\e00f"; +} + +.sf2-icon-organization:before { + content: "\e010"; +} + +.sf2-icon-share:before { + content: "\e011"; +} + +.sf2-icon-star:before { + content: "\e012"; +} + +.sf2-icon-wiki:before { + content: "\e013"; +} + +.sf2-icon-wiki-view:before { + content: "\e013"; +} + +.sf2-icon-history:before { + content: "\e014"; +} + +.sf2-icon-cog1:before { + content: "\e015"; +} + +.sf2-icon-trash:before { + content: "\e016"; +} + +.sf2-icon-security:before { + content: "\e017"; +} + +.sf2-icon-tick:before { + content: "\e01e"; +} + +.sf2-icon-x2:before { + content: "\e01f"; +} + +.sf2-icon-edit:before { + content: "\e018"; +} + +.sf2-icon-caret-down:before { + content: "\e01a"; +} + +.sf2-icon-cog2:before { + content: "\e01b"; +} + +.sf2-icon-x1:before { + content: "\e01d"; +} + +.sf2-icon-minus:before { + content: "\e01c" +} + +.sf2-icon-confirm:before { + content: "\e01e" +} + +.sf2-icon-cancel:before { + content: "\e01f" +} + +.sf2-icon-user2:before { + content: "\e020"; +} + +.sf2-icon-grid-view:before { + content: "\e025"; +} + +.sf2-icon-list-view:before { + content: "\e026"; +} + +.sf2-icon-plus:before { + content: "\e027"; +} + +.sf2-icon-copy:before { + content: "\e028" +} + +.sf2-icon-move:before { + content: "\e029" +} + +.sf2-icon-reply:before { + content: "\e02a"; +} + +.sf2-icon-admin-log:before { + content: "\e02e"; +} + +.sf2-icon-info:before { + content: "\e02f"; +} + +.sf2-icon-menu:before { + content: "\e031"; +} + +.sf2-icon-more:before { + content: "\e032"; +} + +.sf2-icon-x3:before { + content: "\e035"; +} + +.sf2-icon-close:before { + content: "\e035"; +} + +.sf2-icon-two-columns:before { + content: "\e036"; +} + +.sf2-icon-tag:before { + content: "\e037" +} + +.sf2-icon-review:before { + content: "\e038" +} + +.sf2-icon-readme:before { + content: "\e039" +} + +.sf2-icon-drafts:before { + content: "\e03a" +} + +.sf2-icon-recycle:before { + content: "\e03b" +} + +.sf2-icon-library:before { + content: "\e00d"; +} + +.sf2-icon-invite:before { + content: "\e02b"; +} /* common class and element style*/ -body { overflow-y: auto; } -ul,ol,li { - padding:0; - margin:0; +body { + overflow-y: auto; } -dl { margin:1.5em 0; } -dt { color:#666; margin:24px 0 2px; font-weight:normal; } -dd { margin-bottom:.8em; color:#222; } + +ul, ol, li { + padding: 0; + margin: 0; +} + +dl { + margin: 1.5em 0; +} + +dt { + color: #666; + margin: 24px 0 2px; + font-weight: normal; +} + +dd { + margin-bottom: .8em; + color: #222; +} + input::placeholder, textarea::placeholder { color: #999; } -a, a:hover { color: #ec8000; } -.vam { vertical-align:middle; } -.flex-auto { flex:auto; } -.flex-1 { flex:1; } -.flex-none { flex: none; } -.hide { display:none; } -.error { color:red; } + +a, a:hover { + color: #ec8000; +} + +.vam { + vertical-align: middle; +} + +.flex-auto { + flex: auto; +} + +.flex-1 { + flex: 1; +} + +.flex-none { + flex: none; +} + +.hide { + display: none; +} + +.error { + color: red; +} + .no-deco, .no-deco:hover, .no-deco:focus { - text-decoration:none; + text-decoration: none; } .ellipsis { @@ -188,7 +376,8 @@ a, a:hover { color: #ec8000; } cursor: pointer; } -.tr-drag-effect { /* just for drag&drop item */ +.tr-drag-effect { + /* just for drag&drop item */ background-image: url('../img/grippy_large.png'); background-repeat: no-repeat; background-position: 0px; @@ -214,14 +403,15 @@ a, a:hover { color: #ec8000; } } .user-select-none { - -moz-user-select:none; - -webkit-user-select:none; - -ms-user-select:none; - -khtml-user-select:none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + -khtml-user-select: none; user-select: none; } -.dialog-list-container { /* for dialog containing list */ +.dialog-list-container { + /* for dialog containing list */ min-height: 20rem; max-height: 25rem; overflow: auto; @@ -247,10 +437,11 @@ a, a:hover { color: #ec8000; } color: #fff; } -.side-nav-toggle { /* just for control side-panel */ - margin-right:0.9375rem; - font-size:1.5rem; - color:#999; +.side-nav-toggle { + /* just for control side-panel */ + margin-right: 0.9375rem; + font-size: 1.5rem; + color: #999; cursor: pointer; } @@ -263,11 +454,13 @@ a, a:hover { color: #ec8000; } padding: 0 0.5rem; min-width: 55px; } + /* for 'extra small' */ @media (max-width: 575px) { .w-xs-200 { width: 200%; } + .w-xs-250 { width: 250%; } @@ -278,36 +471,38 @@ a, a:hover { color: #ec8000; } /**** caret ****/ .outer-caret, .inner-caret { - height:0; - width:0; - border-width:14px 14px 0; /* default: arrow to the bottom */ - border-style:dashed solid; /* 'dashed' for firefox */ - border-color:#CBCBCB transparent; - z-index:100; - margin:0 auto; + height: 0; + width: 0; + border-width: 14px 14px 0; + /* default: arrow to the bottom */ + border-style: dashed solid; + /* 'dashed' for firefox */ + border-color: #CBCBCB transparent; + z-index: 100; + margin: 0 auto; } .inner-caret { - border-top-color:#fff; - position:relative; - top:-15px; - left:-14px; + border-top-color: #fff; + position: relative; + top: -15px; + left: -14px; } .up-outer-caret, .up-outer-caret .inner-caret { - border-width:0 10px 10px; + border-width: 0 10px 10px; } .up-outer-caret .inner-caret { - border-bottom-color:#fff; - top:1px; - left:-10px; + border-bottom-color: #fff; + top: 1px; + left: -10px; } .up-outer-caret { - position:absolute; - top:-11px; + position: absolute; + top: -11px; } /** loading **/ @@ -316,6 +511,7 @@ a, a:hover { color: #ec8000; } -moz-transform: rotate(0deg); transform: rotate(0deg); } + 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); @@ -327,6 +523,7 @@ a, a:hover { color: #ec8000; } -webkit-transform: rotate(0deg); transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); @@ -340,6 +537,7 @@ a, a:hover { color: #ec8000; } -webkit-transform: rotate(0deg); transform: rotate(0deg); } + 100% { -moz-transform: rotate(360deg); -ms-transform: rotate(360deg); @@ -349,20 +547,20 @@ a, a:hover { color: #ec8000; } } .loading-icon { - display:inline-block; - width:26px; - height:26px; - border:2px solid #eee; - border-left-color:#aaa; - border-radius:50%; - -moz-animation:loading 0.9s infinite linear; - -webkit-animation:loading 0.9s infinite linear; - animation:loading 0.9s infinite linear; + display: inline-block; + width: 26px; + height: 26px; + border: 2px solid #eee; + border-left-color: #aaa; + border-radius: 50%; + -moz-animation: loading 0.9s infinite linear; + -webkit-animation: loading 0.9s infinite linear; + animation: loading 0.9s infinite linear; } .loading-tip { - display:block; - margin:1em auto; + display: block; + margin: 1em auto; } /** op-icon **/ @@ -390,7 +588,7 @@ a, a:hover { color: #ec8000; } .action-icon, .attr-action-icon { - color:#666 !important; + color: #666 !important; } .action-icon:focus, @@ -417,13 +615,13 @@ a, a:hover { color: #ec8000; } /** Account info **/ #account { - position:relative; + position: relative; } #my-info { - display:inline-block; + display: inline-block; color: #bdbdbd; - cursor:pointer; + cursor: pointer; } #my-info:hover { @@ -437,22 +635,23 @@ a, a:hover { color: #ec8000; } @media (max-width:767px) { #account { - margin:5px 0 0 10px; + margin: 5px 0 0 10px; } + .account-toggle { - font-size:22px; - line-height:1; - color:#999; - margin-top:8px; + font-size: 22px; + line-height: 1; + color: #999; + margin-top: 8px; } } .account-popup .avatar { - float:left; + float: left; } .account-popup .txt { - margin-left:45px; + margin-left: 45px; line-height: 36px; white-space: nowrap; overflow: hidden; @@ -460,64 +659,65 @@ a, a:hover { color: #ec8000; } } .account-popup { - right:0; - top:43px; - font-size:13px; + right: 0; + top: 43px; + font-size: 13px; } .account-popup .outer-caret { - top:-10px; - right:8px; + top: -10px; + right: 8px; } .account-popup .sf-popover-con { - padding:0; + padding: 0; } .account-popup .item { - display:block; - padding:8px 18px; - border-bottom:1px solid #ddd; + display: block; + padding: 8px 18px; + border-bottom: 1px solid #ddd; } .account-popup a.item { - color:#212529; - font-weight:normal; + color: #212529; + font-weight: normal; } .account-popup a.item:hover { - background:#fafafa; - text-decoration:none; + background: #fafafa; + text-decoration: none; } #account .manage { - position:absolute; - left:60px; - top:-16px; + position: absolute; + left: 60px; + top: -16px; } #account .manage .a:hover { - text-decoration:none; + text-decoration: none; } /** quota in account popover **/ #quota-bar { - display:block; - height:1em; - border:1px solid #ddd; - margin:5px 0; - border-radius:2px; - overflow:hidden;/* for usage > 100% */ + display: block; + height: 1em; + border: 1px solid #ddd; + margin: 5px 0; + border-radius: 2px; + overflow: hidden; + /* for usage > 100% */ } #quota-bar .usage { - display:inline-block; - height:100%; - vertical-align:top; + display: inline-block; + height: 100%; + vertical-align: top; } #quota-usage { - background:#ddd; + background: #ddd; } .department-usage-container { @@ -546,10 +746,10 @@ a, a:hover { color: #ec8000; } @media (max-width:767px) { .cur-view-toolbar .mobile-icon { - color:#999; - line-height:1.63; - font-size:22px; - margin-right:8px; + color: #999; + line-height: 1.63; + font-size: 22px; + margin-right: 8px; } } @@ -598,22 +798,25 @@ a, a:hover { color: #ec8000; } } .cur-view-path.tab-nav-container .nav .nav-item .nav-link { - justify-content: center; /* make short word like 'All' in the center */ + justify-content: center; + /* make short word like 'All' in the center */ margin: 0 0.75rem; } /* side-panel */ .side-panel { user-select: none; - height:100%; + height: 100%; } .side-nav { flex: auto; display: flex; flex-direction: column; - justify-content: space-between; /* make .side-nav-footer on the bottom */ - overflow:hidden; /* for ff */ + justify-content: space-between; + /* make .side-nav-footer on the bottom */ + overflow: hidden; + /* for ff */ } .side-nav:hover { @@ -663,7 +866,7 @@ a, a:hover { color: #ec8000; } /* for folded 'side nav' */ .side-panel-folded .nav { - margin: 0!important; + margin: 0 !important; } .side-panel-folded .nav .nav-item { @@ -673,7 +876,7 @@ a, a:hover { color: #ec8000; } .side-panel-folded .heading, .side-panel-folded .nav-item#share-admin-nav, .side-panel-folded .nav-item .toggle-icon { - display: none!important; + display: none !important; } .side-nav-bottom-toolbar { @@ -684,14 +887,15 @@ a, a:hover { color: #ec8000; } .side-nav-bottom-toolbar:hover { background: #f0f0f0; } + /* folded 'side nav' ends */ .side-nav-footer { - display:flex; - flex-shrink:0; - padding:12px 20px 16px; - background:#f8f8f8; - border-top:1px solid #eee; + display: flex; + flex-shrink: 0; + padding: 12px 20px 16px; + background: #f8f8f8; + border-top: 1px solid #eee; font-size: 13px; } @@ -706,7 +910,7 @@ a, a:hover { color: #ec8000; } } .side-nav-footer .last-item { - margin-left:auto; + margin-left: auto; } .side-nav-con .heading { @@ -734,7 +938,7 @@ a, a:hover { color: #ec8000; } font-weight: bold; } -.side-nav-con .active .seafile-multicolor-icon, +.side-nav-con .active .seafile-multicolor-icon, .side-nav-con .active [class^="sf2-icon-"], .side-nav-con .active [class^="sf3-font-"], .side-nav-con .active .nav-icon, @@ -782,7 +986,7 @@ a, a:hover { color: #ec8000; } display: flex; align-items: center; justify-content: center; - border-radius:50%; + border-radius: 50%; min-width: 1.3rem; min-height: 1.3rem; padding: 0 2px; @@ -850,40 +1054,41 @@ a, a:hover { color: #ec8000; } text-align: center; } -/**** sf-popover ****/ /* e.g. top notice popup, group members popup */ +/**** sf-popover ****/ +/* e.g. top notice popup, group members popup */ .sf-popover-container { - position:relative; + position: relative; } .sf-popover { - width:240px; - background:#fff; - border:1px solid #c9c9c9; - border-radius:3px; - box-shadow:0 0 4px #ccc; - position:absolute; + width: 240px; + background: #fff; + border: 1px solid #c9c9c9; + border-radius: 3px; + box-shadow: 0 0 4px #ccc; + position: absolute; z-index: 20; } .sf-popover-hd { - padding:5px 0 3px; + padding: 5px 0 3px; margin: 10px; } .sf-popover-title { - text-align:center; + text-align: center; } .sf-popover-close { - font-size:16px; - color:#b9b9b9; - margin:4px 0 0; - float:right; + font-size: 16px; + color: #b9b9b9; + margin: 4px 0 0; + float: right; } .sf-popover-con { - padding:0 10px; - overflow:auto; + padding: 0 10px; + overflow: auto; } .sf-popover-list { @@ -894,11 +1099,11 @@ a, a:hover { color: #ec8000; } } a.sf-popover-item { - display:block; - color:#444; - font-weight:normal; - line-height:31px; - text-decoration:none; + display: block; + color: #444; + font-weight: normal; + line-height: 31px; + text-decoration: none; padding: 5px 10px; margin: 0px -10px; } @@ -913,15 +1118,15 @@ a.sf-popover-item:hover { } .side-panel-close { - margin:10px 0 0 auto; + margin: 10px 0 0 auto; } .panel-top { - padding:.5rem 1rem; - background:#f4f4f7; + padding: .5rem 1rem; + background: #f4f4f7; border-bottom: 1px solid #e8e8e8; - display:flex; - flex-shrink:0; + display: flex; + flex-shrink: 0; min-height: 49px; } @@ -933,7 +1138,8 @@ a.sf-popover-item:hover { } /* path navigation */ -.path-container { /* for the real path */ +.path-container { + /* for the real path */ font-size: 1rem; word-break: break-all; } @@ -991,7 +1197,8 @@ table td { border: 0; } -.table-thead-hidden thead th { /* hide table th */ +.table-thead-hidden thead th { + /* hide table th */ padding: 0; border: 0; font-size: 0; @@ -1178,6 +1385,7 @@ a.table-sort-op:hover { .select-module { font-size: 1rem; } + .select-module.select-module-icon { width: 1.5rem; height: 1.5rem; @@ -1194,6 +1402,7 @@ a.table-sort-op:hover { } @media (max-width: 767px) { + /* mobile menu */ .item-meta-info { display: inline-block; @@ -1211,7 +1420,7 @@ a.table-sort-op:hover { color: #fff; font-size: 0.75rem; } - + .mobile-operation-menu-bg-layer { position: fixed; left: 0; @@ -1222,7 +1431,7 @@ a.table-sort-op:hover { opacity: 0.4; z-index: 103; } - + .mobile-operation-menu { position: fixed; left: 0; @@ -1246,7 +1455,7 @@ a.table-sort-op:hover { line-height: 2rem; font-size: 0.875rem; } - + } .file-view-tip { @@ -1327,7 +1536,7 @@ a.table-sort-op:hover { .seafile-md-viewer-content { background: #fff; padding: 70px 75px; - border:1px solid #e6e6dd; + border: 1px solid #e6e6dd; min-height: calc(100% - 60px); } @@ -1335,11 +1544,11 @@ a.table-sort-op:hover { .seafile-md-viewer-outline-heading3 { margin-left: .75rem; line-height: 2.5; - color:#666; + color: #666; white-space: nowrap; - overflow:hidden; - text-overflow:ellipsis; - cursor:pointer; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; } .seafile-md-viewer-outline-heading3 { @@ -1370,7 +1579,7 @@ a.table-sort-op:hover { border-left: 1px solid #eb8205; } -.seafile-markdown-outline .outline-h2, +.seafile-markdown-outline .outline-h2, .seafile-markdown-outline .outline-h3 { height: 30px; margin-left: 0; @@ -1396,7 +1605,7 @@ a.table-sort-op:hover { } #wiki-file-content .seafile-markdown-outline .outline-h2.active, -#wiki-file-content .seafile-markdown-outline .outline-h3.active { +#wiki-file-content .seafile-markdown-outline .outline-h3.active { color: #eb8205; } @@ -1460,7 +1669,7 @@ a.table-sort-op:hover { font-weight: normal; } -.side-panel .side-nav-con .active .seafile-multicolor-icon, +.side-panel .side-nav-con .active .seafile-multicolor-icon, .side-panel .side-nav-con .active [class^="sf2-icon-"], .side-panel .side-nav-con .active [class^="sf3-font-"], .side-panel .side-nav-con .active .nav-icon, @@ -1517,3 +1726,7 @@ a.table-sort-op:hover { .sf3-font-down { font-size: 12px !important; } + +.visually-hidden { + display: none !important; +}