diff --git a/package-lock.json b/package-lock.json index 440738addc..3828e35225 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@types/ini": "4.1.0", "@types/react-transition-group": "4.4.11", "@types/wicg-file-system-access": "2023.10.5", + "@wordpress/dataviews": "4.4.0", "ajv": "8.12.0", "axios": "1.6.1", "classnames": "^2.3.2", @@ -31,11 +32,13 @@ "octokit-plugin-create-pull-request": "5.1.1", "react": "^18.2.25", "react-dom": "^18.2.25", + "react-hook-form": "7.53.0", "react-modal": "^3.16.1", "react-redux": "8.1.3", "react-transition-group": "4.4.5", "unzipper": "0.10.11", "vite-plugin-api": "1.0.4", + "wouter": "3.3.5", "xterm": "5.3.0", "xterm-addon-fit": "0.8.0", "yargs": "17.7.2" @@ -365,7 +368,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", - "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -378,7 +380,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -390,7 +391,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -404,7 +404,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -413,7 +412,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -422,7 +420,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -672,7 +669,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -794,7 +790,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -803,7 +798,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -849,7 +843,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -863,7 +856,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -875,7 +867,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -889,7 +880,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -898,7 +888,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -907,7 +896,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -2452,7 +2440,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", - "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -3951,7 +3938,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", @@ -3971,7 +3957,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", @@ -3987,7 +3972,6 @@ "version": "11.13.1", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", - "dev": true, "license": "MIT", "dependencies": { "@emotion/memoize": "^0.9.0", @@ -4001,7 +3985,6 @@ "version": "11.13.0", "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.13.0.tgz", "integrity": "sha512-BUk99ylT+YHl+W/HN7nv1RCTkDYmKKqa1qbvM/qLSQEg61gipuBF5Hptk/2/ERmX2DCv0ccuFGhz9i0KSZOqPg==", - "dev": true, "license": "MIT", "dependencies": { "@emotion/babel-plugin": "^11.12.0", @@ -4015,14 +3998,12 @@ "version": "0.9.2", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", - "dev": true, "license": "MIT" }, "node_modules/@emotion/is-prop-valid": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz", "integrity": "sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==", - "dev": true, "license": "MIT", "dependencies": { "@emotion/memoize": "^0.9.0" @@ -4032,14 +4013,12 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", - "dev": true, "license": "MIT" }, "node_modules/@emotion/react": { "version": "11.13.0", "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz", "integrity": "sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -4064,7 +4043,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.0.tgz", "integrity": "sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==", - "dev": true, "license": "MIT", "dependencies": { "@emotion/hash": "^0.9.2", @@ -4078,14 +4056,12 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", - "dev": true, "license": "MIT" }, "node_modules/@emotion/styled": { "version": "11.13.0", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -4109,14 +4085,12 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.9.0.tgz", "integrity": "sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==", - "dev": true, "license": "MIT" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", - "dev": true, "license": "MIT", "peerDependencies": { "react": ">=16.8.0" @@ -4126,14 +4100,12 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==", - "dev": true, "license": "MIT" }, "node_modules/@emotion/weak-memoize": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", - "dev": true, "license": "MIT" }, "node_modules/@endiliey/react-ideal-image": { @@ -4641,7 +4613,6 @@ "version": "1.6.5", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.5.tgz", "integrity": "sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==", - "dev": true, "license": "MIT", "dependencies": { "@floating-ui/utils": "^0.2.5" @@ -4651,7 +4622,6 @@ "version": "1.6.8", "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.8.tgz", "integrity": "sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==", - "dev": true, "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", @@ -4662,7 +4632,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", - "dev": true, "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.0.0" @@ -4676,7 +4645,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.5.tgz", "integrity": "sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==", - "dev": true, "license": "MIT" }, "node_modules/@gar/promisify": { @@ -15470,7 +15438,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", - "dev": true, "license": "MIT", "dependencies": { "@tannin/evaluate": "^1.2.0", @@ -15481,14 +15448,12 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==", - "dev": true, "license": "MIT" }, "node_modules/@tannin/plural-forms": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", - "dev": true, "license": "MIT", "dependencies": { "@tannin/compile": "^1.1.0" @@ -15498,7 +15463,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==", - "dev": true, "license": "MIT" }, "node_modules/@testing-library/dom": { @@ -15871,7 +15835,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@types/gradient-parser/-/gradient-parser-0.1.3.tgz", "integrity": "sha512-XDbrTSBlQV9nxE1GiDL3FaOPy4G/KaJkhDutBX48Kg8CYZMBARyyDFGCWfWJn4pobmInmwud1xxH7VJMAr0CKQ==", - "dev": true, "license": "MIT" }, "node_modules/@types/hast": { @@ -15886,7 +15849,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/highlight-words-core/-/highlight-words-core-1.2.1.tgz", "integrity": "sha512-9VZUA5omXBfn+hDxFjUDu1FOJTBM3LmvqfDey+Z6Aa8B8/JmF5SMj6FBrjfgJ/Q3YXOZd3qyTDfJyMZSs/wCUA==", - "dev": true, "license": "MIT" }, "node_modules/@types/history": { @@ -16038,7 +16000,6 @@ "version": "1.6.15", "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.15.tgz", "integrity": "sha512-qL0hyIMNPow317QWW/63RvL1x5MVMV+Ru3NaY9f/CuEpCqrmb7WeuK2071ZY5hczOnm38qExWM2i2WtkXLSqFw==", - "dev": true, "license": "MIT" }, "node_modules/@types/ms": { @@ -16063,7 +16024,6 @@ }, "node_modules/@types/parse-json": { "version": "4.0.0", - "dev": true, "license": "MIT" }, "node_modules/@types/parse5": { @@ -16104,7 +16064,6 @@ "version": "18.3.0", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", - "devOptional": true, "license": "MIT", "dependencies": { "@types/react": "*" @@ -17377,14 +17336,12 @@ "version": "10.3.1", "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz", "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==", - "dev": true, "license": "MIT" }, "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==", - "dev": true, "license": "MIT", "dependencies": { "@use-gesture/core": "10.3.1" @@ -18071,15 +18028,14 @@ } }, "node_modules/@wordpress/a11y": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-4.4.0.tgz", - "integrity": "sha512-7khdWHnKui8C3792D63FjDFSDflLc8DLY5s/i6b8aTeqz8GGvH7iD+5PJ+MQfmtU4OU5CwCnlSci3d90+DIVQQ==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-4.8.0.tgz", + "integrity": "sha512-AdcTPpiwpD7PEG3f8viremRGN5517+jEJ/vhgs8VFb3uJ11enrNyk7T4aNX7MLP4sF5S1nTsuioEM2ZjkfJTXA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/dom-ready": "^4.4.0", - "@wordpress/i18n": "^5.4.0" + "@wordpress/dom-ready": "^4.8.0", + "@wordpress/i18n": "^5.8.0" }, "engines": { "node": ">=18.12.0", @@ -18464,21 +18420,20 @@ } }, "node_modules/@wordpress/compose": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-7.4.0.tgz", - "integrity": "sha512-yIJwiFxzMlpbFCYgWdQgyhyE//9SF90bi1j7YUmUKqLg9tUN7/IIok2lSGrvZfjuSe8sVgd5MHt33Emmi13zsw==", - "dev": true, + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-7.8.0.tgz", + "integrity": "sha512-bxyy3800+WxEDPj1ksPnCGsOTAUza7OQBhpuaJLzXsB5Q4oJQLKI+WOZUDUxeXOajy1G+WeofAcJjFOdi1RUdg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^4.4.0", - "@wordpress/dom": "^4.4.0", - "@wordpress/element": "^6.4.0", - "@wordpress/is-shallow-equal": "^5.4.0", - "@wordpress/keycodes": "^4.4.0", - "@wordpress/priority-queue": "^3.4.0", - "@wordpress/undo-manager": "^1.4.0", + "@wordpress/deprecated": "^4.8.0", + "@wordpress/dom": "^4.8.0", + "@wordpress/element": "^6.8.0", + "@wordpress/is-shallow-equal": "^5.8.0", + "@wordpress/keycodes": "^4.8.0", + "@wordpress/priority-queue": "^3.8.0", + "@wordpress/undo-manager": "^1.8.0", "change-case": "^4.1.2", "clipboard": "^2.0.11", "mousetrap": "^1.6.5", @@ -18492,15 +18447,47 @@ "react": "^18.0.0" } }, + "node_modules/@wordpress/compose/node_modules/@wordpress/element": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.8.0.tgz", + "integrity": "sha512-RufMjsZl0vyYRWGbc/iDlUbu10qRcpOYLCBnayKcAeRh0ojQ/upMcObW+PPnpo/FOcbDRqj29FCvkZDqI/2cOg==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@wordpress/escape-html": "^3.8.0", + "change-case": "^4.1.2", + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/compose/node_modules/@wordpress/escape-html": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.8.0.tgz", + "integrity": "sha512-PTooGfO0I6wQ4WT96iAjiljT7nU1Jvc45XC1jxahC0Tml9pGxGx7Rkxlldq2F41aBpg3ZgBZ+ceEb+DOOSy+kQ==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, "node_modules/@wordpress/compose/node_modules/@wordpress/keycodes": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.4.0.tgz", - "integrity": "sha512-aba6ofBeuAqAUt967G94+yP1TlZWwQOzrwmTNa5ErkXqXhyYv8a0IFBLaWuKWfCbmaT2DcjxX4jNzxaMTE+EXA==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.8.0.tgz", + "integrity": "sha512-HIg8ALiALwMfuI2MAeKaQPraERRf+skCixCIjHs9HM0C48Vov95F3aoHfINCrKXkyQXhTjrJrLDDNEXw6ZF+gw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^5.4.0" + "@wordpress/i18n": "^5.8.0" }, "engines": { "node": ">=18.12.0", @@ -18591,15 +18578,240 @@ "react": "^18.0.0" } }, + "node_modules/@wordpress/dataviews": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/dataviews/-/dataviews-4.4.0.tgz", + "integrity": "sha512-zDDGjZw2QV+Dzh336Sa0zQ+9xWgSgzpOnaNl8QjJIsy7zL80R461aO4yYUTpXoSMJqatdXwDLaUcuZrzS/RQUQ==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@ariakit/react": "^0.4.10", + "@babel/runtime": "^7.16.0", + "@wordpress/components": "^28.8.0", + "@wordpress/compose": "^7.8.0", + "@wordpress/data": "^10.8.0", + "@wordpress/element": "^6.8.0", + "@wordpress/i18n": "^5.8.0", + "@wordpress/icons": "^10.8.0", + "@wordpress/primitives": "^4.8.0", + "@wordpress/private-apis": "^1.8.0", + "@wordpress/warning": "^3.8.0", + "clsx": "^2.1.1", + "remove-accents": "^0.5.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/@wordpress/dataviews/node_modules/@ariakit/core": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@ariakit/core/-/core-0.4.10.tgz", + "integrity": "sha512-mX3EabQbfVh5uTjsTJ3+gjj7KGdTNhIN0qZHJd5Z2iPUnKl9NBy23Lgu6PEskpVsKAZ3proirjguD7U9fKMs/A==", + "license": "MIT" + }, + "node_modules/@wordpress/dataviews/node_modules/@ariakit/react": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@ariakit/react/-/react-0.4.11.tgz", + "integrity": "sha512-nLpPrmNcspqNhk4o+epsgeZfP1+Fkh4uIzNe5yrFkXolRkqHGKAxl4Hi82e0yxIBUbYbZIEwsZQQVceF1L6xrw==", + "license": "MIT", + "dependencies": { + "@ariakit/react-core": "0.4.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ariakit" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@wordpress/dataviews/node_modules/@ariakit/react-core": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@ariakit/react-core/-/react-core-0.4.11.tgz", + "integrity": "sha512-i6KedWhjZkNC7tMEKO0eNjjq2HRPiHyGaBS2x2VaWwzBepoYtjyvxRXyqLJ3gaiNdlwckN1TZsRDfD+viy13IQ==", + "license": "MIT", + "dependencies": { + "@ariakit/core": "0.4.10", + "@floating-ui/dom": "^1.0.0", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@wordpress/dataviews/node_modules/@wordpress/components": { + "version": "28.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-28.8.0.tgz", + "integrity": "sha512-pj4OlTDwBvq68Rk5AgzEQjhoX5nMO5dxYFAnenvjdizQOyQ/XKisLhMNg4fGpB8W/y5fRVHB+gecGIkO2oct9A==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@ariakit/react": "^0.4.10", + "@babel/runtime": "^7.16.0", + "@emotion/cache": "^11.7.1", + "@emotion/css": "^11.7.1", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.0.2", + "@emotion/styled": "^11.6.0", + "@emotion/utils": "^1.0.0", + "@floating-ui/react-dom": "^2.0.8", + "@types/gradient-parser": "0.1.3", + "@types/highlight-words-core": "1.2.1", + "@use-gesture/react": "^10.3.1", + "@wordpress/a11y": "^4.8.0", + "@wordpress/compose": "^7.8.0", + "@wordpress/date": "^5.8.0", + "@wordpress/deprecated": "^4.8.0", + "@wordpress/dom": "^4.8.0", + "@wordpress/element": "^6.8.0", + "@wordpress/escape-html": "^3.8.0", + "@wordpress/hooks": "^4.8.0", + "@wordpress/html-entities": "^4.8.0", + "@wordpress/i18n": "^5.8.0", + "@wordpress/icons": "^10.8.0", + "@wordpress/is-shallow-equal": "^5.8.0", + "@wordpress/keycodes": "^4.8.0", + "@wordpress/primitives": "^4.8.0", + "@wordpress/private-apis": "^1.8.0", + "@wordpress/rich-text": "^7.8.0", + "@wordpress/warning": "^3.8.0", + "change-case": "^4.1.2", + "clsx": "^2.1.1", + "colord": "^2.7.0", + "date-fns": "^3.6.0", + "deepmerge": "^4.3.0", + "fast-deep-equal": "^3.1.3", + "framer-motion": "^11.1.9", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "is-plain-object": "^5.0.0", + "memize": "^2.1.0", + "path-to-regexp": "^6.2.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "remove-accents": "^0.5.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@wordpress/dataviews/node_modules/@wordpress/data": { + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-10.8.0.tgz", + "integrity": "sha512-oRbZkY/CGS36XtoAOfZPvLImnRo6CzLAR00ZDd/e43CvRlx4szjr3hMbD55XDF2PG3W4EHAPNYfZvYU3C7PymA==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/compose": "^7.8.0", + "@wordpress/deprecated": "^4.8.0", + "@wordpress/element": "^6.8.0", + "@wordpress/is-shallow-equal": "^5.8.0", + "@wordpress/priority-queue": "^3.8.0", + "@wordpress/private-apis": "^1.8.0", + "@wordpress/redux-routine": "^5.8.0", + "deepmerge": "^4.3.0", + "equivalent-key-map": "^0.2.2", + "is-plain-object": "^5.0.0", + "is-promise": "^4.0.0", + "redux": "^4.1.2", + "rememo": "^4.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/@wordpress/dataviews/node_modules/@wordpress/element": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.8.0.tgz", + "integrity": "sha512-RufMjsZl0vyYRWGbc/iDlUbu10qRcpOYLCBnayKcAeRh0ojQ/upMcObW+PPnpo/FOcbDRqj29FCvkZDqI/2cOg==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@wordpress/escape-html": "^3.8.0", + "change-case": "^4.1.2", + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/dataviews/node_modules/@wordpress/escape-html": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.8.0.tgz", + "integrity": "sha512-PTooGfO0I6wQ4WT96iAjiljT7nU1Jvc45XC1jxahC0Tml9pGxGx7Rkxlldq2F41aBpg3ZgBZ+ceEb+DOOSy+kQ==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/dataviews/node_modules/@wordpress/keycodes": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.8.0.tgz", + "integrity": "sha512-HIg8ALiALwMfuI2MAeKaQPraERRf+skCixCIjHs9HM0C48Vov95F3aoHfINCrKXkyQXhTjrJrLDDNEXw6ZF+gw==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/i18n": "^5.8.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/dataviews/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@wordpress/dataviews/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@wordpress/date": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-5.4.0.tgz", - "integrity": "sha512-TpX0c0rTZlgNQQBVExt8HPYgsHGvGHrlFzNrBoQw6ji8ucjEtpn8U47Uqqc9ikeS6MEUf5GA7G0fFBc8XRLYCw==", - "dev": true, + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-5.8.0.tgz", + "integrity": "sha512-i4AI/0eDg1WSRat5wgPWPgwu8G040rdhFKTrYlEUQn5lMW7s+X3ymw9xt+zstNAtaU3OMuU6NetXGaFGO46Gsg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^4.4.0", + "@wordpress/deprecated": "^4.8.0", "moment": "^2.29.4", "moment-timezone": "^0.5.40" }, @@ -18609,14 +18821,13 @@ } }, "node_modules/@wordpress/deprecated": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.4.0.tgz", - "integrity": "sha512-/a1BzMcY7loLbNRvnHIEbOPMdBNA3pq5tsK895JJtW1Jj14FhX1AD7m+q7lV8Famb8iRSea/SDM/wjdlqHzKJg==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.8.0.tgz", + "integrity": "sha512-ijyGPkQMGREGDOGS3oGrB6a+9vf+naYGXHJ7oRvAS7mK9NyZfs5EZveslEYlYvZTKBmeY7L0f2SVjPrjwGFl4A==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^4.4.0" + "@wordpress/hooks": "^4.8.0" }, "engines": { "node": ">=18.12.0", @@ -18624,14 +18835,13 @@ } }, "node_modules/@wordpress/dom": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.4.0.tgz", - "integrity": "sha512-9UyPq7lNoXgPy0l+gnEIMq1lbEgMC3DXjfrVx08cKzpn23Gbmg3ZFybBKtnWVd0u/V64frUtIc/IQxXyYk3Ttg==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.8.0.tgz", + "integrity": "sha512-7tSLmWPaYOQSsoA+eKW3xLh+GNBuCtbIvPvzlUWb+JHu0t/XBesrs/2XXPm4NZXZxruAgT4+XBnc759RKDjiZA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^4.4.0" + "@wordpress/deprecated": "^4.8.0" }, "engines": { "node": ">=18.12.0", @@ -18639,10 +18849,9 @@ } }, "node_modules/@wordpress/dom-ready": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-4.4.0.tgz", - "integrity": "sha512-Kz/pOEnLKygk3CwYfowoNESzLX7ZL93CA8Xl17tFy70e0Xx241ZNE1WXhXHEcSeNuk2GafxMO0q+HHR7aLO1nw==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-4.8.0.tgz", + "integrity": "sha512-HgjykkaC+yLHWnhBkQEua2dbeB8ckF7ht2S4WJELjVo52FXdbDIfw3ht3N4AlN92r6uUaYm/1X1MTVa+DkLasg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -18701,10 +18910,9 @@ } }, "node_modules/@wordpress/hooks": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.4.0.tgz", - "integrity": "sha512-KO0gUx0KLhH3XCatg9ZOU1TH0fgyQUccAEIM8liErfgmrabHl8JhDoR2Uk5k0jNKZNPog7XxvKgPFVtCzvzQig==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.8.0.tgz", + "integrity": "sha512-6CPXtkZOHg8Q9gFulbuB+V74yCaPK2E2nRMw2BXE1yNfIAItqMbUiC8zrNOamtLcg3ifsk1PPeJ2DX5mR7Wyug==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -18715,10 +18923,9 @@ } }, "node_modules/@wordpress/html-entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.4.0.tgz", - "integrity": "sha512-EXOo+eBYeKKuBFgRleQYfK3fdXy5gzFdHtxbPPDunsETYkdapgX4pr/epDLmi9Uk3fcdFMwFre2o2s6LkLke4A==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.8.0.tgz", + "integrity": "sha512-kJZg83oKZLvXz4jmZUoqPxXTDeoGxy1yV2nyqVWuEXoGRVFzBSPZRxVf7Rn6R06WU/0bGpjMH2ZDrj9MlMoWqA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -18729,14 +18936,13 @@ } }, "node_modules/@wordpress/i18n": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-5.4.0.tgz", - "integrity": "sha512-nU4vpcBn5X+O/lUw2zhg44iTxh3smmBT6wLDFigGXpBKcVjJjlhVkwWLqpP/ZIc+mfhplgu4TJcTSbHyKsQLgg==", - "dev": true, + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-5.8.0.tgz", + "integrity": "sha512-pPx8RPT69Kds8wygHGfkt+D2jxdyu2HIYw3yM+dj47rNW2rHtZFVoOr+QzwOJ4yoHRuN1zMhOfzHsC4WV+ARcg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^4.4.0", + "@wordpress/hooks": "^4.8.0", "gettext-parser": "^1.3.1", "memize": "^2.1.0", "sprintf-js": "^1.1.1", @@ -18751,15 +18957,47 @@ } }, "node_modules/@wordpress/icons": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.4.0.tgz", - "integrity": "sha512-1odn+v7Fr5n3+ZpdXb37zy/yr/4LQLvYcT0pPtQ6fnuKGoelnU5f2FEAWwFgJ+Nvt5GjzKAFV3XGk1Qr81z3Mw==", - "dev": true, + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.8.0.tgz", + "integrity": "sha512-JiBI44uNkJEHV3IU0rKLn0wO36crWY62NqiQ6Fi+nn8KG0J4e1/JrJoV5EiFkaLneWBAFPeUkLjIOYlNPcZnmA==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/element": "^6.4.0", - "@wordpress/primitives": "^4.4.0" + "@wordpress/element": "^6.8.0", + "@wordpress/primitives": "^4.8.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/icons/node_modules/@wordpress/element": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.8.0.tgz", + "integrity": "sha512-RufMjsZl0vyYRWGbc/iDlUbu10qRcpOYLCBnayKcAeRh0ojQ/upMcObW+PPnpo/FOcbDRqj29FCvkZDqI/2cOg==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@wordpress/escape-html": "^3.8.0", + "change-case": "^4.1.2", + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/icons/node_modules/@wordpress/escape-html": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.8.0.tgz", + "integrity": "sha512-PTooGfO0I6wQ4WT96iAjiljT7nU1Jvc45XC1jxahC0Tml9pGxGx7Rkxlldq2F41aBpg3ZgBZ+ceEb+DOOSy+kQ==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0" }, "engines": { "node": ">=18.12.0", @@ -18767,10 +19005,9 @@ } }, "node_modules/@wordpress/is-shallow-equal": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.4.0.tgz", - "integrity": "sha512-dby5FHzgasbTVw40HUsLKX68/+M8dBuf6LTqFm5n0KetdHUWoPRSAN/qun7Zu3p69jgqPtUhyjdwDdAgOtYamA==", - "dev": true, + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.8.0.tgz", + "integrity": "sha512-DLADJVspAFOeY6wO+uYQrcEy+IF3OtRLh4xbI0Qrc6nIs3gdEd+Dwud9tDu6BirV+9ZpON9yDffmq1/5Nhhtww==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -18921,16 +19158,51 @@ } }, "node_modules/@wordpress/primitives": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.4.0.tgz", - "integrity": "sha512-QmIrB0EgrmrFrCEngvrE/4mN7CGQMeJNkbvYinNNpqv53RDYI6cYCoMRDvNNXlqb+Ja3rOzkef0/VZdvtv2PMw==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.8.0.tgz", + "integrity": "sha512-ZGY+vrc6+Rklsbc+cm506fHc8JGCSXKv041VHtxwxtc92zVdVjugx+4XWzEsiEe0/vV6aFqFdGibKwureMmQ5A==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/element": "^6.4.0", + "@wordpress/element": "^6.8.0", "clsx": "^2.1.1" }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/@wordpress/primitives/node_modules/@wordpress/element": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.8.0.tgz", + "integrity": "sha512-RufMjsZl0vyYRWGbc/iDlUbu10qRcpOYLCBnayKcAeRh0ojQ/upMcObW+PPnpo/FOcbDRqj29FCvkZDqI/2cOg==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@wordpress/escape-html": "^3.8.0", + "change-case": "^4.1.2", + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/primitives/node_modules/@wordpress/escape-html": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.8.0.tgz", + "integrity": "sha512-PTooGfO0I6wQ4WT96iAjiljT7nU1Jvc45XC1jxahC0Tml9pGxGx7Rkxlldq2F41aBpg3ZgBZ+ceEb+DOOSy+kQ==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0" + }, "engines": { "node": ">=18.12.0", "npm": ">=8.19.2" @@ -18940,17 +19212,15 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/@wordpress/priority-queue": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-3.4.0.tgz", - "integrity": "sha512-sMPNUeBiEaTGF+UH5RuAFc0SnzhWRmeKuNAzDJmQ0MezSbLq1oDUbIbeMR91kj717da8IWZsDOy0TKacyM5aOA==", - "dev": true, + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-3.8.0.tgz", + "integrity": "sha512-AVzPk/Y+Cs3cjgg1cOLSXYbM7s8lRVWh1f4b6yXNaaskv932EiE25CEqihE8PVZgXVQzlF292aP0jR1YYisZDg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -18962,10 +19232,9 @@ } }, "node_modules/@wordpress/private-apis": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.4.0.tgz", - "integrity": "sha512-RBOK0v+WTsiilb57ZlbVS39kp9KpHLdYVZaWA84UNq0Gd4pYfHqaXnmCD/Tk8c7sREsflkGFO6d7B4pBlkWX6g==", - "dev": true, + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.8.0.tgz", + "integrity": "sha512-FHpv4YajpMePibZzmGxToXa0HPXIkhju0xCk7fxdETU22YJKQA9uUMNuWcZDSY3XpakCuUCu3cAemKgme+yaTg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -18976,10 +19245,9 @@ } }, "node_modules/@wordpress/redux-routine": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-5.4.0.tgz", - "integrity": "sha512-kmBWfMdRFgIfgMlA0dKn8vzDECME15hJtALfWL35jnhEfeZW2+xzSnq5uqK3awCfVg8UxClYIRo6BalqGDChdQ==", - "dev": true, + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-5.8.0.tgz", + "integrity": "sha512-drTkSRELSw0b0AxcvQmcxRIBhTDuyYAFYToe4N0PsQoZM9pbhZHdBespX2Jrz4s/npHkmGr/KSL7vungzg47jQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -18996,21 +19264,20 @@ } }, "node_modules/@wordpress/rich-text": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-7.4.0.tgz", - "integrity": "sha512-JZs4kT1tyDVrX2eG2iJnocZbmbJa0MOjBc1wiG0GK8EsQ1urhpsMkZn07QSEUa1/2Kl1G6Ow6iyFau2mMaj6ZQ==", - "dev": true, + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-7.8.0.tgz", + "integrity": "sha512-j/cQGiRFVXMiQjYff0yZfnm+aQw2zOiZ86Hulvj1zW/EVdWfOd1bWqB3CVV92H33y75/uEj2ZpHRf7SCDdpFSg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/a11y": "^4.4.0", - "@wordpress/compose": "^7.4.0", - "@wordpress/data": "^10.4.0", - "@wordpress/deprecated": "^4.4.0", - "@wordpress/element": "^6.4.0", - "@wordpress/escape-html": "^3.4.0", - "@wordpress/i18n": "^5.4.0", - "@wordpress/keycodes": "^4.4.0", + "@wordpress/a11y": "^4.8.0", + "@wordpress/compose": "^7.8.0", + "@wordpress/data": "^10.8.0", + "@wordpress/deprecated": "^4.8.0", + "@wordpress/element": "^6.8.0", + "@wordpress/escape-html": "^3.8.0", + "@wordpress/i18n": "^5.8.0", + "@wordpress/keycodes": "^4.8.0", "memize": "^2.1.0" }, "engines": { @@ -19021,11 +19288,60 @@ "react": "^18.0.0" } }, + "node_modules/@wordpress/rich-text/node_modules/@wordpress/data": { + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-10.8.0.tgz", + "integrity": "sha512-oRbZkY/CGS36XtoAOfZPvLImnRo6CzLAR00ZDd/e43CvRlx4szjr3hMbD55XDF2PG3W4EHAPNYfZvYU3C7PymA==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@wordpress/compose": "^7.8.0", + "@wordpress/deprecated": "^4.8.0", + "@wordpress/element": "^6.8.0", + "@wordpress/is-shallow-equal": "^5.8.0", + "@wordpress/priority-queue": "^3.8.0", + "@wordpress/private-apis": "^1.8.0", + "@wordpress/redux-routine": "^5.8.0", + "deepmerge": "^4.3.0", + "equivalent-key-map": "^0.2.2", + "is-plain-object": "^5.0.0", + "is-promise": "^4.0.0", + "redux": "^4.1.2", + "rememo": "^4.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/@wordpress/rich-text/node_modules/@wordpress/element": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.8.0.tgz", + "integrity": "sha512-RufMjsZl0vyYRWGbc/iDlUbu10qRcpOYLCBnayKcAeRh0ojQ/upMcObW+PPnpo/FOcbDRqj29FCvkZDqI/2cOg==", + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/runtime": "^7.16.0", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", + "@wordpress/escape-html": "^3.8.0", + "change-case": "^4.1.2", + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, "node_modules/@wordpress/rich-text/node_modules/@wordpress/escape-html": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.4.0.tgz", - "integrity": "sha512-KcUv+s0J/LEZEEvd+E3IkNCeW8wde0TjO+1HrcfvqI8Rfuc0zOAZeS/6ZqIeX0m/mhQ0xS2Y3e8hsnU+wAG6Mw==", - "dev": true, + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.8.0.tgz", + "integrity": "sha512-PTooGfO0I6wQ4WT96iAjiljT7nU1Jvc45XC1jxahC0Tml9pGxGx7Rkxlldq2F41aBpg3ZgBZ+ceEb+DOOSy+kQ==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -19036,14 +19352,13 @@ } }, "node_modules/@wordpress/rich-text/node_modules/@wordpress/keycodes": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.4.0.tgz", - "integrity": "sha512-aba6ofBeuAqAUt967G94+yP1TlZWwQOzrwmTNa5ErkXqXhyYv8a0IFBLaWuKWfCbmaT2DcjxX4jNzxaMTE+EXA==", - "dev": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.8.0.tgz", + "integrity": "sha512-HIg8ALiALwMfuI2MAeKaQPraERRf+skCixCIjHs9HM0C48Vov95F3aoHfINCrKXkyQXhTjrJrLDDNEXw6ZF+gw==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^5.4.0" + "@wordpress/i18n": "^5.8.0" }, "engines": { "node": ">=18.12.0", @@ -19118,14 +19433,13 @@ } }, "node_modules/@wordpress/undo-manager": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.4.0.tgz", - "integrity": "sha512-Z48K9wqv/7h06Qqef979wDxINFbP1FFwsRweAdi6FiMznoZC5IyGPoVRAIoN6NVRHb8vh9/pkxubNIXBIsrF8Q==", - "dev": true, + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.8.0.tgz", + "integrity": "sha512-Cl8Eb+VxVYX9AptMXdMczLkUmcaKXx0PJpgTQ+isZASagXBLZ3ebWGqbChtShqR0IyPn9jMYkPw6Zk4+V6T+eg==", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/is-shallow-equal": "^5.4.0" + "@wordpress/is-shallow-equal": "^5.8.0" }, "engines": { "node": ">=18.12.0", @@ -19148,10 +19462,9 @@ } }, "node_modules/@wordpress/warning": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.4.0.tgz", - "integrity": "sha512-0LbBvyRLZVulwVcseH+WryDlnP//CFBwAq15+XzzoZc3s0ANlGsLPTlYamZ7eoyosGQZVKqG/yzP3DAlESj89w==", - "dev": true, + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.8.0.tgz", + "integrity": "sha512-d8osKgKA7LgVGTo29+7qjoxLM84bIBeayCjwRsr2bhK9Naum0O341+JRmtlwc6u/zbbuxZEkoyhxG9ZvKjaezA==", "license": "GPL-2.0-or-later", "engines": { "node": ">=18.12.0", @@ -19188,6 +19501,10 @@ "resolved": "packages/playground/common", "link": true }, + "node_modules/@wp-playground/components": { + "resolved": "packages/playground/components", + "link": true + }, "node_modules/@wp-playground/nx-extensions": { "resolved": "packages/nx-extensions", "link": true @@ -21251,7 +21568,6 @@ }, "node_modules/callsites": { "version": "3.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -21259,7 +21575,6 @@ }, "node_modules/camel-case": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", @@ -21344,7 +21659,6 @@ }, "node_modules/capital-case": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -21409,7 +21723,6 @@ }, "node_modules/change-case": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "camel-case": "^4.1.2", @@ -21703,7 +22016,6 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", - "dev": true, "license": "MIT", "dependencies": { "good-listener": "^1.2.2", @@ -21844,7 +22156,6 @@ }, "node_modules/color-convert": { "version": "1.9.3", - "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -21852,7 +22163,6 @@ }, "node_modules/color-name": { "version": "1.1.3", - "dev": true, "license": "MIT" }, "node_modules/color-string": { @@ -21891,7 +22201,6 @@ }, "node_modules/colord": { "version": "2.9.3", - "dev": true, "license": "MIT" }, "node_modules/colorette": { @@ -22186,7 +22495,6 @@ }, "node_modules/constant-case": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -22393,7 +22701,6 @@ }, "node_modules/convert-source-map": { "version": "1.9.0", - "dev": true, "license": "MIT" }, "node_modules/cookie": { @@ -22553,7 +22860,6 @@ }, "node_modules/cosmiconfig": { "version": "7.1.0", - "dev": true, "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", @@ -23843,7 +24149,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -24029,7 +24334,6 @@ }, "node_modules/deepmerge": { "version": "4.3.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -24161,7 +24465,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "dev": true, "license": "MIT" }, "node_modules/delegates": { @@ -24464,7 +24767,6 @@ }, "node_modules/dot-case": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -24675,7 +24977,6 @@ }, "node_modules/encoding": { "version": "0.1.13", - "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "^0.6.2" @@ -24748,7 +25049,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/equivalent-key-map/-/equivalent-key-map-0.2.2.tgz", "integrity": "sha512-xvHeyCDbZzkpN4VHQj/n+j2lOwL0VWszG30X4cOrc9Y7Tuo2qCdZK/0AMod23Z5dCtNUbaju6p0rwOhHUk05ew==", - "dev": true, "license": "MIT" }, "node_modules/err-code": { @@ -24770,7 +25070,6 @@ }, "node_modules/error-ex": { "version": "1.3.2", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -25081,7 +25380,6 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -26607,7 +26905,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true, "license": "MIT" }, "node_modules/find-up": { @@ -26925,7 +27222,6 @@ "version": "11.3.21", "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.21.tgz", "integrity": "sha512-D+hfIsvzV8eL/iycld4K+tKlg2Q2LdwnrcBEohtGw3cG1AIuNYATbT5RUqIM1ndsAk+EfGhoSGf0UaiFodc5Tw==", - "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" @@ -27386,7 +27682,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", - "dev": true, "license": "MIT", "dependencies": { "encoding": "^0.1.12", @@ -27804,7 +28099,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", - "dev": true, "license": "MIT", "dependencies": { "delegate": "^3.1.2" @@ -27880,7 +28174,6 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-0.1.5.tgz", "integrity": "sha512-+uPlcVbjrKOnTzvz0MjTj7BfACj8OmxIa1moIjJV7btvhUMSJk0D47RfDCgDrZE3dYMz9Cf5xKJwnrKLjUq0KQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -28174,7 +28467,6 @@ }, "node_modules/header-case": { "version": "2.0.4", - "dev": true, "license": "MIT", "dependencies": { "capital-case": "^1.0.4", @@ -28193,7 +28485,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==", - "dev": true, "license": "MIT" }, "node_modules/history": { @@ -28634,7 +28925,6 @@ }, "node_modules/iconv-lite": { "version": "0.6.3", - "devOptional": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -28768,7 +29058,6 @@ }, "node_modules/import-fresh": { "version": "3.3.0", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -28783,7 +29072,6 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -29255,7 +29543,6 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "dev": true, "license": "MIT" }, "node_modules/is-bigint": { @@ -29360,7 +29647,6 @@ }, "node_modules/is-core-module": { "version": "2.12.1", - "dev": true, "license": "MIT", "dependencies": { "has": "^1.0.3" @@ -29592,7 +29878,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true, "license": "MIT" }, "node_modules/is-reference": { @@ -32943,7 +33228,6 @@ }, "node_modules/lower-case": { "version": "2.0.2", - "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.0.3" @@ -33418,7 +33702,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/memize/-/memize-2.1.0.tgz", "integrity": "sha512-yywVJy8ctVlN5lNPxsep5urnZ6TTclwPEyigM9M3Bi8vseJBOfqNrGWN/r8NzuIt3PovM323W04blJfGQfQSVg==", - "dev": true, "license": "MIT" }, "node_modules/meow": { @@ -34386,6 +34669,12 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, "node_modules/mkdirp": { "version": "1.0.4", "devOptional": true, @@ -34441,7 +34730,6 @@ "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -34451,7 +34739,6 @@ "version": "0.5.45", "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", - "dev": true, "license": "MIT", "dependencies": { "moment": "^2.29.4" @@ -34464,7 +34751,6 @@ "version": "1.6.5", "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==", - "dev": true, "license": "Apache-2.0 WITH LLVM-exception" }, "node_modules/mri": { @@ -34610,7 +34896,6 @@ }, "node_modules/no-case": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "lower-case": "^2.0.2", @@ -36440,7 +36725,6 @@ }, "node_modules/param-case": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "dot-case": "^3.0.4", @@ -36449,7 +36733,6 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -36491,7 +36774,6 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -36508,12 +36790,10 @@ }, "node_modules/parse-json/node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, "license": "MIT" }, "node_modules/parse-json/node_modules/lines-and-columns": { "version": "1.2.4", - "dev": true, "license": "MIT" }, "node_modules/parse-node-version": { @@ -36584,7 +36864,6 @@ }, "node_modules/pascal-case": { "version": "3.1.2", - "dev": true, "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -36599,7 +36878,6 @@ }, "node_modules/path-case": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "dot-case": "^3.0.4", @@ -36636,7 +36914,6 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, "license": "MIT" }, "node_modules/path-scurry": { @@ -36677,12 +36954,10 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", - "dev": true, "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -38102,7 +38377,6 @@ "version": "6.9.17", "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.17.tgz", "integrity": "sha512-OBqd1BwVXpEJJn/yYROG+CbeqIDBWIp6wathlpB0kzZWWZIY1gPTsgK2yJEui5hOvkCdC2mcexF2V3DZVfLq2g==", - "dev": true, "license": "MIT", "peerDependencies": { "react": "^16.13.1 || ^17.0.0 || ^18.0.0", @@ -38149,7 +38423,6 @@ "version": "5.6.1", "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", - "dev": true, "license": "MIT", "peerDependencies": { "react": ">=16.8.0", @@ -38492,6 +38765,22 @@ "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-hook-form": { + "version": "7.53.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.0.tgz", + "integrity": "sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/react-is": { "version": "17.0.2", "dev": true, @@ -39422,7 +39711,6 @@ }, "node_modules/redux": { "version": "4.2.1", - "devOptional": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.9.2" @@ -39475,6 +39763,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexparam": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", + "integrity": "sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", @@ -39916,14 +40213,12 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.2.tgz", "integrity": "sha512-NVfSP9NstE3QPNs/TnegQY0vnJnstKQSpcrsI2kBTB3dB2PkdfKdTa+abbjMIDqpc63fE5LfjLgfMst0ULMFxQ==", - "dev": true, "license": "MIT" }, "node_modules/remove-accents": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", - "dev": true, "license": "MIT" }, "node_modules/renderkid": { @@ -40040,7 +40335,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/requestidlecallback/-/requestidlecallback-0.3.0.tgz", "integrity": "sha512-TWHFkT7S9p7IxLC5A1hYmAYQx2Eb9w1skrXmQ+dS1URyvR8tenMLl4lHbqEOUnpEYxNKpkVMXUgknVpBZWXXfQ==", - "dev": true, "license": "MIT" }, "node_modules/require-directory": { @@ -40081,7 +40375,6 @@ }, "node_modules/resolve": { "version": "1.22.2", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.11.0", @@ -40743,7 +41036,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/rungen/-/rungen-0.3.2.tgz", "integrity": "sha512-zWl10xu2D7zoR8zSC2U6bg5bYF6T/Wk7rxwp8IPaJH7f0Ge21G03kNHVgHR7tyVkSSfAOG0Rqf/Cl38JftSmtw==", - "dev": true, "license": "MIT" }, "node_modules/rxjs": { @@ -40941,7 +41233,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", - "dev": true, "license": "MIT" }, "node_modules/select-hose": { @@ -41056,7 +41347,6 @@ }, "node_modules/sentence-case": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "no-case": "^3.0.4", @@ -41895,7 +42185,6 @@ }, "node_modules/snake-case": { "version": "3.0.4", - "dev": true, "license": "MIT", "dependencies": { "dot-case": "^3.0.4", @@ -41962,7 +42251,6 @@ }, "node_modules/source-map": { "version": "0.5.7", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -42121,8 +42409,7 @@ "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/sshpk": { "version": "1.18.0", @@ -42569,7 +42856,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", - "dev": true, "license": "MIT" }, "node_modules/stylus": { @@ -42701,7 +42987,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -42807,7 +43092,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz", "integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==", - "dev": true, "license": "MIT", "dependencies": { "@tannin/plural-forms": "^1.1.0" @@ -43217,7 +43501,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "dev": true, "license": "MIT" }, "node_modules/tiny-invariant": { @@ -43314,7 +43597,6 @@ }, "node_modules/to-fast-properties": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -43799,7 +44081,6 @@ }, "node_modules/tslib": { "version": "2.5.0", - "devOptional": true, "license": "0BSD" }, "node_modules/tsutils": { @@ -44620,7 +44901,6 @@ }, "node_modules/upper-case": { "version": "2.0.2", - "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.0.3" @@ -44628,7 +44908,6 @@ }, "node_modules/upper-case-first": { "version": "2.0.2", - "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.0.3" @@ -44818,7 +45097,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", - "dev": true, "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -46579,6 +46857,20 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, + "node_modules/wouter": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/wouter/-/wouter-3.3.5.tgz", + "integrity": "sha512-bx3fLQAMn+EhYbBdY3W1gw9ZfO/uchudxYMwOIBzF3HVgqNEEIT199vEoh7FLTC0Vz5+rpMO6NdFsOkGX1QQCw==", + "license": "Unlicense", + "dependencies": { + "mitt": "^3.0.1", + "regexparam": "^3.0.0", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "license": "MIT", @@ -46930,7 +47222,6 @@ }, "node_modules/yaml": { "version": "1.10.2", - "dev": true, "license": "ISC", "engines": { "node": ">= 6" @@ -47202,6 +47493,14 @@ "npm": ">=8.11.0" } }, + "packages/playground/components": { + "name": "@wp-playground/components", + "version": "0.9.18", + "engines": { + "node": ">=18.18.0", + "npm": ">=8.11.0" + } + }, "packages/playground/node": { "name": "@wp-playground/node", "version": "0.0.1", diff --git a/package.json b/package.json index cc439fb3d6..1667ca877f 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "@types/ini": "4.1.0", "@types/react-transition-group": "4.4.11", "@types/wicg-file-system-access": "2023.10.5", + "@wordpress/dataviews": "4.4.0", "ajv": "8.12.0", "axios": "1.6.1", "classnames": "^2.3.2", @@ -72,11 +73,13 @@ "octokit-plugin-create-pull-request": "5.1.1", "react": "^18.2.25", "react-dom": "^18.2.25", + "react-hook-form": "7.53.0", "react-modal": "^3.16.1", "react-redux": "8.1.3", "react-transition-group": "4.4.5", "unzipper": "0.10.11", "vite-plugin-api": "1.0.4", + "wouter": "3.3.5", "xterm": "5.3.0", "xterm-addon-fit": "0.8.0", "yargs": "17.7.2" diff --git a/packages/docs/site/docs/developers/06-apis/query-api/01-index.md b/packages/docs/site/docs/developers/06-apis/query-api/01-index.md index 34e81fb78f..22d2d65dc0 100644 --- a/packages/docs/site/docs/developers/06-apis/query-api/01-index.md +++ b/packages/docs/site/docs/developers/06-apis/query-api/01-index.md @@ -35,10 +35,9 @@ You can go ahead and try it out. The Playground will automatically install the t | `lazy` | | Defer loading the Playground assets until someone clicks on the "Run" button. Does not accept any values. If `lazy` is added as a URL parameter, loading will be deferred. | | `login` | `yes` | Log the user in as an admin. Accepts `yes` or `no`. | | `multisite` | `no` | Enables the WordPress multisite mode. Accepts `yes` or `no`. | -| `storage` | `none` | Selects the storage for Playground: `none` gets erased on page refresh, `browser` is stored in the browser, and `device` is stored in the selected directory on a device. The last two protect the user from accidentally losing their work upon page refresh. | | `import-site` | | Imports site files and database from a ZIP file specified by a URL. | | `import-wxr` | | Imports site content from a WXR file specified by a URL. It uses the WordPress Importer plugin, so the default admin user must be logged in. | -| `site-slug` | | Selects which site to load from browser storage. This must be used in combination with `storage=browser`. | +| `site-slug` | | Selects which site to load from browser storage. | | `language` | `en_US` | Sets the locale for the WordPress instance. This must be used in combination with `networking=yes` otherwise WordPress won't be able to download translations. | For example, the following code embeds a Playground with a preinstalled Gutenberg plugin and opens the post editor: diff --git a/packages/docs/site/docs/developers/24-limitations/01-index.md b/packages/docs/site/docs/developers/24-limitations/01-index.md index 5ca5e3cbfc..743e0bc853 100644 --- a/packages/docs/site/docs/developers/24-limitations/01-index.md +++ b/packages/docs/site/docs/developers/24-limitations/01-index.md @@ -16,7 +16,7 @@ Playground [disables network connections](../../blueprints/03-data-format.md#fea ### Temporary by design -As Playground [streams rather than serves](../../main/about/index.md#streamed-not-served) WordPress, all database changes and uploads will be gone when you refresh the page. To avoid losing your work, either [export your work](../../main/quick-start-guide.md#save-your-site) before or enable storage in the browser/device via the [Query API](/developers/apis/query-api#available-options) or the UI. +As Playground [streams rather than serves](../../main/about/index.md#streamed-not-served) WordPress, all database changes and uploads will be gone when you refresh the page. To avoid losing your work, either [export your work](../../main/quick-start-guide.md#save-your-site) before or enable storage in the browser/device via the "Save" button in the UI. ## When developing with Playground diff --git a/packages/docs/site/docs/main/_assets/customize-playground.png b/packages/docs/site/docs/main/_assets/customize-playground.png index 3b8a7d356a..4d6d0b5105 100644 Binary files a/packages/docs/site/docs/main/_assets/customize-playground.png and b/packages/docs/site/docs/main/_assets/customize-playground.png differ diff --git a/packages/docs/site/docs/main/web-instance.md b/packages/docs/site/docs/main/web-instance.md index a94d01b463..06717ec611 100644 --- a/packages/docs/site/docs/main/web-instance.md +++ b/packages/docs/site/docs/main/web-instance.md @@ -25,7 +25,6 @@ From the Playground website there are also available some toolbars to customize The options available from the "Customize Playground" window correpond to the following [Query API options](/developers/apis/query-api#available-options): -- `storage` - `php` - `php-extension-bundle` - `networking` diff --git a/packages/php-wasm/web/src/lib/directory-handle-mount.ts b/packages/php-wasm/web/src/lib/directory-handle-mount.ts index 9f8fba9f5a..15db3300b1 100644 --- a/packages/php-wasm/web/src/lib/directory-handle-mount.ts +++ b/packages/php-wasm/web/src/lib/directory-handle-mount.ts @@ -188,15 +188,44 @@ export async function copyMemfsToOpfs( } await mirrorMemfsDirectoryinOpfs(memfsRoot, opfsRoot); + // @TODO: Understand why Safari is failing when writing many files concurrently + // with createSyncAccessHandle. + // Safari doesn't support createWritable as of 2024-09-18, + // and we are getting errors in Safari while using createSyncAccessHandle() in parallel. + // But in testing, Safari's createSyncAccessHandle() only begins to when + // writing ~125 files concurrently. So for now, we are limiting Safari to 100 concurrent writes + // to hopefully give us a safe margin. + // @ts-ignore -- Safari doesn't support createWritable as of 2024-09-18. + const maxConcurrentWrites = FileSystemFileHandle.prototype.createWritable + ? Infinity + : 100; + // Now let's create all the required files in OPFS. This is quite slow // so we report progress. let i = 0; - const filesCreated = filesToCreate.map(([opfsDir, memfsPath, entryName]) => - overwriteOpfsFile(opfsDir, entryName, FS, memfsPath).then(() => { + const outstandingWrites = new Set>(); + for (const [opfsDir, memfsPath, entryName] of filesToCreate) { + const promiseToCreateFile = overwriteOpfsFile( + opfsDir, + entryName, + FS, + memfsPath + ).then(() => { + outstandingWrites.delete(promiseToCreateFile); onProgress?.({ files: ++i, total: filesToCreate.length }); - }) - ); - await Promise.all(filesCreated); + }); + + outstandingWrites.add(promiseToCreateFile); + + if (outstandingWrites.size >= maxConcurrentWrites) { + // We should be under max concurrency when any write completes. + await Promise.race(outstandingWrites); + } + } + + if (outstandingWrites.size > 0) { + await Promise.all(outstandingWrites); + } } function isMemfsDir(FS: Emscripten.RootFS, path: string) { diff --git a/packages/playground/blueprints/src/lib/compile.ts b/packages/playground/blueprints/src/lib/compile.ts index 8b55b6a27e..45af9211a7 100644 --- a/packages/playground/blueprints/src/lib/compile.ts +++ b/packages/playground/blueprints/src/lib/compile.ts @@ -85,6 +85,9 @@ export function compileBlueprint( onStepCompleted = () => {}, }: CompileBlueprintOptions = {} ): CompiledBlueprint { + // Deep clone the blueprint to avoid mutating the input + blueprint = structuredClone(blueprint); + blueprint = { ...blueprint, steps: (blueprint.steps || []) @@ -158,7 +161,10 @@ export function compileBlueprint( // Default to the "kitchen sink" PHP extensions bundle if no // other bundles are specified. if (blueprint.phpExtensionBundles.length === 0) { - blueprint.phpExtensionBundles.push('kitchen-sink'); + blueprint.phpExtensionBundles = [ + ...blueprint.phpExtensionBundles, + 'kitchen-sink', + ]; } /** diff --git a/packages/playground/client/src/index.ts b/packages/playground/client/src/index.ts index 666f9059d8..26b2de4b3c 100644 --- a/packages/playground/client/src/index.ts +++ b/packages/playground/client/src/index.ts @@ -66,7 +66,6 @@ export interface StartPlaygroundOptions { * @returns */ onBeforeBlueprint?: () => Promise; - siteSlug?: string; mounts?: Array; shouldInstallWordPress?: boolean; } diff --git a/packages/playground/remote/service-worker.ts b/packages/playground/remote/service-worker.ts index d092961e44..9b1a46f4e0 100644 --- a/packages/playground/remote/service-worker.ts +++ b/packages/playground/remote/service-worker.ts @@ -86,12 +86,47 @@ self.addEventListener('fetch', (event) => { return; } + let requestPromise = Promise.resolve(event.request); + if (url.pathname.startsWith('/proxy/')) { + const segments = url.pathname.split('/'); + const command = segments[2]; + switch (command) { + case 'load-cached-when-offline': { + const proxiedUrl = + url.pathname.substring( + '/proxy/'.length + command.length + 1 + ) + + (url?.search ? '?' + url.search : '') + + (url?.hash ? '#' + url.hash : ''); + requestPromise = requestPromise.then((request) => { + return cloneRequest(request, { + url: proxiedUrl, + }); + }); + const isOffline = !navigator.onLine; + event.respondWith( + Promise.all([cachePromise, requestPromise]).then( + ([cache, request]) => + // Always save the response to cache, but only load + // it from the cache when we're offline. + cache.cachedFetch(request, { + loadFromCache: isOffline, + }) + ) + ); + return; + } + } + } + /** * Respond with cached assets if available. * If the asset is not cached, fetch it from the network and cache it. */ event.respondWith( - cachePromise.then((cache) => cache.cachedFetch(event.request)) + Promise.all([cachePromise, requestPromise]).then(([cache, request]) => + cache.cachedFetch(request) + ) ); }); diff --git a/packages/playground/remote/src/lib/offline-mode-cache.ts b/packages/playground/remote/src/lib/offline-mode-cache.ts index 3c78beb297..e6eb93904b 100644 --- a/packages/playground/remote/src/lib/offline-mode-cache.ts +++ b/packages/playground/remote/src/lib/offline-mode-cache.ts @@ -32,12 +32,22 @@ export class OfflineModeCache { return Promise.all(oldKeys.map((key) => caches.delete(key))); } - async cachedFetch(request: Request): Promise { + async cachedFetch( + request: Request, + { + loadFromCache = true, + }: { + loadFromCache?: boolean; + } = {} + ): Promise { if (!this.shouldCacheUrl(new URL(request.url))) { return await fetch(request); } - let response = await this.cache.match(request, { ignoreSearch: true }); + let response = undefined; + if (loadFromCache) { + response = await this.cache.match(request, { ignoreSearch: true }); + } if (!response) { response = await fetch(request); if (response.ok) { diff --git a/packages/playground/storage/src/lib/browser-fs.ts b/packages/playground/storage/src/lib/browser-fs.ts index c50e6935fb..153b793783 100644 --- a/packages/playground/storage/src/lib/browser-fs.ts +++ b/packages/playground/storage/src/lib/browser-fs.ts @@ -16,7 +16,7 @@ export async function opfsPathToDirectoryHandle( const parts = opfsPath.split('/').filter((p) => p.length > 0); let handle = await navigator.storage.getDirectory(); for (const part of parts) { - handle = await handle.getDirectoryHandle(part); + handle = await handle.getDirectoryHandle(part, { create: true }); } return handle; } diff --git a/packages/playground/website/cypress/e2e/remote-assets.cy.ts b/packages/playground/website/cypress/e2e/remote-assets.cy.ts index 43be96d331..446ea3f2a4 100644 --- a/packages/playground/website/cypress/e2e/remote-assets.cy.ts +++ b/packages/playground/website/cypress/e2e/remote-assets.cy.ts @@ -2,7 +2,7 @@ describe('Remote Assets', () => { const testedStorageOptions = [ 'none', // TODO: Re-enable this option once the tests are more stable - //'browser' + //'opfs' ]; testedStorageOptions.forEach((storage) => { @@ -15,7 +15,7 @@ describe('Remote Assets', () => { cy.visit(`/?storage=${storage}#${blueprint}`); runAssertions(); - if (storage === 'browser') { + if (storage === 'opfs') { // Reload and re-assert to test when loading from browser storage cy.reload(); runAssertions(); diff --git a/packages/playground/website/index.html b/packages/playground/website/index.html index 69404d93f7..e7392029e0 100644 --- a/packages/playground/website/index.html +++ b/packages/playground/website/index.html @@ -43,7 +43,7 @@ -
+
-
+