From 0bbb50895b984f66d74a50e201801fdaae148c4f Mon Sep 17 00:00:00 2001 From: John Cox Date: Tue, 24 Feb 2026 15:47:30 -0700 Subject: [PATCH 01/24] latest resources --- resources/asu-unity-stack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/asu-unity-stack b/resources/asu-unity-stack index 2779a484..327fc2d9 160000 --- a/resources/asu-unity-stack +++ b/resources/asu-unity-stack @@ -1 +1 @@ -Subproject commit 2779a4841a45f11db889be4e949406a3fa2e94aa +Subproject commit 327fc2d904afb204dbb3410fdeba0fe13be9663e From 1368538f123e27ac10813f9de9493252eaa77d20 Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 27 Feb 2026 16:31:19 -0700 Subject: [PATCH 02/24] UDS alias, error details --- webpack.config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/webpack.config.js b/webpack.config.js index b9bc0979..3787a74c 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -15,6 +15,8 @@ module.exports = (env, argv) => { __dirname, "resources/unity/component-news/src/components" ), + "@asu-unity-stack": path.resolve(__dirname, "resources/asu-unity-stack"), + }, extensions: [ ".js", @@ -49,6 +51,9 @@ module.exports = (env, argv) => { return rule; }), }, + stats: { + errorDetails: true, + }, }; return config; From f1025e25f6331189ba7e9fd950301628491f8644 Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 27 Feb 2026 16:31:37 -0700 Subject: [PATCH 03/24] v3.2 anchor menu --- unityblocks.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unityblocks.php b/unityblocks.php index 137e95a3..a78dafae 100644 --- a/unityblocks.php +++ b/unityblocks.php @@ -5,7 +5,7 @@ * Description: UnityBlocks is a suite of page building content blocks for the ASU Web Standards Unity (UDS) WordPress theme. * Requires at least: 6.6 * Requires PHP: 7.4 - * Version: 3.1.0 + * Version: 3.2.0 * Author: ASU KE Web Services * Author URI: https://rto.asu.edu/web-services * License: GPL-2.0-or-later From f9224a7bf4e033fc1b11fff1b1ce23782ff7f4c7 Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 27 Feb 2026 16:32:07 -0700 Subject: [PATCH 04/24] v3.2, react override --- package-lock.json | 154 +++++++++++++++++++++++----------------------- package.json | 6 +- 2 files changed, 81 insertions(+), 79 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81aaf3af..11b0ef82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "unityblocks", - "version": "3.0.0", + "version": "3.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "unityblocks", - "version": "3.0.0", + "version": "3.2.0", "license": "GPL-2.0-or-later", "dependencies": { "@asu/component-carousel": "^1.2.1", @@ -131,6 +131,7 @@ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", "hasInstallScript": true, + "peer": true, "dependencies": { "@fortawesome/fontawesome-common-types": "^0.2.36" }, @@ -291,6 +292,7 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.25.7", @@ -2253,6 +2255,7 @@ "url": "https://opencollective.com/csstools" } ], + "peer": true, "engines": { "node": ">=18" }, @@ -2275,6 +2278,7 @@ "url": "https://opencollective.com/csstools" } ], + "peer": true, "engines": { "node": ">=18" } @@ -2308,7 +2312,6 @@ "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "dev": true, "license": "CC0-1.0", - "peer": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -2636,6 +2639,7 @@ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", "hasInstallScript": true, + "peer": true, "dependencies": { "@fortawesome/fontawesome-common-types": "6.4.2" }, @@ -2764,7 +2768,6 @@ "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", - "peer": true, "dependencies": { "gud": "^1.0.0", "warning": "^4.0.3" @@ -4546,6 +4549,7 @@ "version": "7.12.9", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/generator": "^7.12.5", @@ -4926,7 +4930,6 @@ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", "license": "MIT", - "peer": true, "engines": { "node": ">=14.0.0" } @@ -5553,6 +5556,7 @@ "version": "6.5.16", "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.16.tgz", "integrity": "sha512-p3DqQi+8QRL5k7jXhXmJZLsE/GqHqyY6PcoA1oNTJr0try48uhTGUOYkgzmqtDaa/qPFO5LP+xCPzZXckGtquQ==", + "peer": true, "dependencies": { "@storybook/api": "6.5.16", "@storybook/channels": "6.5.16", @@ -5579,6 +5583,7 @@ "version": "6.5.16", "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.16.tgz", "integrity": "sha512-HOsuT8iomqeTMQJrRx5U8nsC7lJTwRr1DhdD0SzlqL4c80S/7uuCy4IZvOt4sYQjOzW5fOo/kamcoBXyLproTA==", + "peer": true, "dependencies": { "@storybook/channels": "6.5.16", "@storybook/client-logger": "6.5.16", @@ -6282,6 +6287,7 @@ "version": "4.47.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -6635,6 +6641,7 @@ "version": "6.5.16", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.16.tgz", "integrity": "sha512-LzBOFJKITLtDcbW9jXl0/PaG+4xAz25PK8JxPZpIALbmOpYWOAPcO6V9C2heX6e6NgWFMUxjplkULEk9RCQMNA==", + "peer": true, "dependencies": { "@storybook/client-logger": "6.5.16", "@storybook/csf": "0.0.2--canary.4566f4d.1", @@ -7375,6 +7382,7 @@ "version": "4.47.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -7437,6 +7445,7 @@ "version": "6.5.16", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.16.tgz", "integrity": "sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==", + "peer": true, "dependencies": { "core-js": "^3.8.2" }, @@ -8037,6 +8046,7 @@ "version": "4.47.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -8841,6 +8851,7 @@ "version": "4.47.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -9653,6 +9664,7 @@ "version": "6.5.16", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.16.tgz", "integrity": "sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ==", + "peer": true, "dependencies": { "@storybook/client-logger": "6.5.16", "core-js": "^3.8.2", @@ -9856,6 +9868,7 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -10647,6 +10660,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -12402,6 +12416,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -12991,6 +13006,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -13316,6 +13332,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -13442,6 +13459,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -15209,6 +15227,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -17581,7 +17600,6 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", "license": "MIT", - "peer": true, "dependencies": { "is-arguments": "^1.1.1", "is-date-object": "^1.0.5", @@ -18113,7 +18131,8 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1445099.tgz", "integrity": "sha512-GEuIbCLU2Iu6Sg05GeWS7ksijhOUZIDJD2YBUNRanK7SLKjeci1uxUUomu2VNvygQRuoq/vtnTYrgPZBEiYNMA==", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/diff-sequences": { "version": "27.5.1", @@ -18822,6 +18841,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", "devOptional": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -21428,6 +21448,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -21585,6 +21606,7 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dev": true, + "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -21607,8 +21629,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/gzip-size": { "version": "6.0.0", @@ -22491,7 +22512,6 @@ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -23586,6 +23606,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -27511,8 +27532,7 @@ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/kyanite": { "version": "1.4.2", @@ -27782,7 +27802,8 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1425554.tgz", "integrity": "sha512-uRfxR6Nlzdzt0ihVIkV+sLztKgs7rgquY/Mhcv1YNCWDh5IZgl5mnn2aeEnW5stYTE0wwiF4RYVz8eMEpV1SEw==", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/lighthouse/node_modules/puppeteer-core/node_modules/ws": { "version": "8.18.1", @@ -29425,7 +29446,6 @@ "integrity": "sha512-bmyraQyO9wAyFwyr+ouMrbv3mFY/UZY8nlBorgqfTw735QtVfAUBKs7GrO/rvJByoKnnwzQIlIFq9WXdfkSL0g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ajv": "^6.12.6", "ajv-errors": "^1.0.1", @@ -29459,7 +29479,6 @@ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -29475,8 +29494,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Python-2.0", - "peer": true + "license": "Python-2.0" }, "node_modules/npm-package-json-lint/node_modules/chalk": { "version": "4.1.2", @@ -29484,7 +29502,6 @@ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -29502,7 +29519,6 @@ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -29515,8 +29531,7 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/npm-package-json-lint/node_modules/cosmiconfig": { "version": "8.3.6", @@ -29524,7 +29539,6 @@ "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -29552,7 +29566,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -29563,7 +29576,6 @@ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } @@ -29574,7 +29586,6 @@ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -29587,8 +29598,7 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/npm-package-json-lint/node_modules/semver": { "version": "7.7.3", @@ -29596,7 +29606,6 @@ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -29610,7 +29619,6 @@ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -29624,7 +29632,6 @@ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=16" }, @@ -29638,7 +29645,6 @@ "integrity": "sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -29819,7 +29825,6 @@ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "license": "MIT", - "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" @@ -30665,7 +30670,6 @@ "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "playwright-core": "1.57.0" }, @@ -30685,7 +30689,6 @@ "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -30704,7 +30707,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } @@ -30752,7 +30754,6 @@ "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", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -30779,6 +30780,7 @@ "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "peer": true, "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -30914,6 +30916,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -30940,6 +30943,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -31086,6 +31090,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -31427,12 +31432,13 @@ } }, "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==", + "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==", + "license": "MIT", + "peer": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" @@ -31497,16 +31503,17 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "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==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "peer": true, "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-element-to-jsx-string": { @@ -31567,7 +31574,6 @@ "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.1.2", "@hypnosphi/create-react-context": "^0.3.1", @@ -31585,6 +31591,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -31594,7 +31601,6 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", "license": "MIT", - "peer": true, "dependencies": { "@remix-run/router": "1.23.2" }, @@ -31647,6 +31653,7 @@ "resolved": "https://registry.npmjs.org/react-share/-/react-share-4.4.1.tgz", "integrity": "sha512-AJ9m9RiJssqvYg7MoJUc9J0D7b/liWrsfQ99ndKc5vJ4oVHHd4Fy87jBlKEQPibT40oYA3AQ/a9/oQY6/yaigw==", "license": "MIT", + "peer": true, "dependencies": { "classnames": "^2.3.2", "jsonp": "^0.2.1" @@ -31708,7 +31715,6 @@ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.1.2" } @@ -31718,7 +31724,6 @@ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-3.0.0.tgz", "integrity": "sha512-A9ojB/LWECbFj58SNfjK1X9aaAU+1olLS0DFSikvrr2KfMaiBELemHDa5dKNvcTk2t3gUtDL/PJpFrBKDfMpLg==", "license": "BSD-3-Clause", - "peer": true, "dependencies": { "dom-helpers": "^3.4.0", "loose-envify": "^1.4.0", @@ -32087,6 +32092,7 @@ "version": "7.12.9", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/generator": "^7.12.5", @@ -32287,6 +32293,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -32878,6 +32885,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", "dev": true, + "peer": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -32941,12 +32949,12 @@ } }, "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { @@ -34532,8 +34540,7 @@ "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/style-to-object": { "version": "0.3.0", @@ -34547,6 +34554,7 @@ "version": "5.3.11", "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.0.0", "@babel/traverse": "^7.4.5", @@ -34661,8 +34669,7 @@ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/stylelint-config-recommended-scss/node_modules/postcss": { "version": "8.5.6", @@ -34740,8 +34747,7 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/stylelint/node_modules/global-modules": { "version": "2.0.0", @@ -34749,7 +34755,6 @@ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "global-prefix": "^3.0.0" }, @@ -34763,7 +34768,6 @@ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -34778,8 +34782,7 @@ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/stylelint/node_modules/postcss": { "version": "8.5.6", @@ -34817,7 +34820,6 @@ "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12.0" }, @@ -34835,7 +34837,6 @@ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -34861,7 +34862,6 @@ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -34876,7 +34876,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -34887,7 +34886,6 @@ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -35255,6 +35253,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -35865,8 +35864,7 @@ "version": "0.0.7", "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/typedarray": { "version": "0.0.6", @@ -36453,8 +36451,7 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", @@ -36589,7 +36586,6 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -36949,6 +36945,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", "license": "MIT", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -37095,6 +37092,7 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, + "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", @@ -37237,6 +37235,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "devOptional": true, + "peer": true, "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -37296,6 +37295,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "devOptional": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -37480,6 +37480,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -37504,6 +37505,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", diff --git a/package.json b/package.json index 05b0fbee..2ff55d08 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "unityblocks", - "version": "3.0.0", + "version": "3.2.0", "description": "UnityBlocks is a suite of page building content blocks for the ASU Web Standards Unity (UDS) WordPress theme.", "author": "ASU KE Web Services", "license": "GPL-2.0-or-later", @@ -49,8 +49,8 @@ "swr": "^1.3.0" }, "overrides": { - "react": "^17.0.0", - "react-dom": "^17.0.0" + "react": "^18.0.0", + "react-dom": "^18.0.0" }, "volta": { "node": "18.12.1", From 0f4fda882526ec0c3e1b9c9c7944d6559a1d1f48 Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 27 Feb 2026 16:34:15 -0700 Subject: [PATCH 05/24] update api, viewScript --- src/anchor-menu/block.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/anchor-menu/block.json b/src/anchor-menu/block.json index c67b9953..0aee793b 100644 --- a/src/anchor-menu/block.json +++ b/src/anchor-menu/block.json @@ -1,8 +1,8 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "unityblocks/anchor-menu", - "version": "2.1.0", + "version": "3.0.0", "title": "Unity Anchor Menu", "category": "unityblocks", "keywords": ["unityblocks", "menu", "navigation"], @@ -13,7 +13,10 @@ "align": ["wide", "full"] }, "textdomain": "unityblocks", - "viewScript": ["file:./frontend.js", "unityblocks-anchor-menu-view-script"], + "viewScript": [ + "file:./frontend.js", + "file:./get-anchors.js", + "unityblocks-anchor-menu-view-script"], "editorScript": "file:./index.js", "attributes": { "itemIcons": { From 71db980d8326b529431ad56df51caf5b6f782fb0 Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 27 Feb 2026 16:34:40 -0700 Subject: [PATCH 06/24] update import --- src/anchor-menu/edit.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/anchor-menu/edit.js b/src/anchor-menu/edit.js index 3dfaf80c..acca61fd 100644 --- a/src/anchor-menu/edit.js +++ b/src/anchor-menu/edit.js @@ -16,8 +16,8 @@ import { useBlockProps } from "@wordpress/block-editor"; /** * External dependencies */ -import { AnchorMenu } from "../../resources/asu-unity-stack/packages/components-core/src/components/AnchorMenu" -/** +import { AnchorMenu } from "@asu-unity-stack/packages/unity-react-core/src/components/AnchorMenu/AnchorMenu"; +/** resources/asu-unity-stack/packages/unity-react-core/src/components * Internal dependencies */ // import Controls from './controls'; From 5bab9478eb0e1a0cee8efe7fd6baa0ad054b9fdd Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 27 Feb 2026 16:35:20 -0700 Subject: [PATCH 07/24] update import, rm custom sticky onScroll, set bool --- src/anchor-menu/frontend.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/anchor-menu/frontend.js b/src/anchor-menu/frontend.js index 7df66e16..05a69d21 100644 --- a/src/anchor-menu/frontend.js +++ b/src/anchor-menu/frontend.js @@ -1,21 +1,21 @@ const { render } = wp.element; -import { AnchorMenu } from "../../resources/asu-unity-stack/packages/components-core/src/components/AnchorMenu" +import { AnchorMenu } from "@asu-unity-stack/packages/unity-react-core/src/components/AnchorMenu/AnchorMenu"; -var stickyMenu = document.getElementsByClassName("uds-anchor-menu"); +// var stickyMenu = document.getElementsByClassName("uds-anchor-menu"); -const onScroll = () => { - const scroll = document.documentElement.scrollTop; +// const onScroll = () => { +// const scroll = document.documentElement.scrollTop; - if (scroll > 500) { - stickyMenu[0].classList.add("sticky"); - } else { - stickyMenu[0].classList.remove("sticky"); - } -}; +// if (scroll > 500) { +// stickyMenu[0].classList.add("sticky"); +// } else { +// stickyMenu[0].classList.remove("sticky"); +// } +// }; -window.addEventListener("scroll", onScroll); +// window.addEventListener("scroll", onScroll); /* Load the block attributes from the dom element attributes. @@ -33,7 +33,7 @@ const menu = document.querySelector("#unityblocks-anchor-menu"); const items = JSON.parse(menu.dataset.items); const firstElementId = menu.dataset.firstElementId; -const focusFirstFocusableElement = menu.dataset.focusFirstFocusableElement; +const focusFirstFocusableElement = menu.dataset.focusFirstFocusableElement === "true"; render( Date: Fri, 27 Feb 2026 16:35:45 -0700 Subject: [PATCH 08/24] set id init --- src/anchor-menu/get-anchors.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/anchor-menu/get-anchors.js diff --git a/src/anchor-menu/get-anchors.js b/src/anchor-menu/get-anchors.js new file mode 100644 index 00000000..06433f5d --- /dev/null +++ b/src/anchor-menu/get-anchors.js @@ -0,0 +1,8 @@ +window.addEventListener("DOMContentLoaded", (event) => { + const classPrefix = 'anchor-item-'; + const anchors = document.querySelectorAll(`[class*="${classPrefix}"]`); + anchors.forEach(anchor => { + const anchorClass = anchor.className.split(' ').find(cls => cls.startsWith(classPrefix)); + anchor.id = anchorClass; + }); +}); \ No newline at end of file From 83392a09fa8263a92dcb844e75d3fa788431d78a Mon Sep 17 00:00:00 2001 From: John Cox Date: Fri, 27 Feb 2026 16:40:33 -0700 Subject: [PATCH 09/24] firstElementId refactor --- src/anchor-menu/inspector.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/anchor-menu/inspector.js b/src/anchor-menu/inspector.js index 34bc1d9d..5c63e300 100644 --- a/src/anchor-menu/inspector.js +++ b/src/anchor-menu/inspector.js @@ -17,6 +17,9 @@ import { * @param {Object} props */ const Inspector = (props) => { + const handleFirstElementIdChange = (value) => { + props.setAttributes({ firstElementId: value }); + }; const handleAddItem = () => { const itemIcons = [...props.attributes.itemIcons]; const itemTexts = [...props.attributes.itemTexts]; @@ -135,6 +138,17 @@ const Inspector = (props) => { + + + + + ); }; From 977b862f171c1fdee7e362e7a0773f53c14883e6 Mon Sep 17 00:00:00 2001 From: John Cox Date: Wed, 18 Mar 2026 16:09:32 -0700 Subject: [PATCH 10/24] fix camelcase, use createRoot --- src/anchor-menu/frontend.js | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/anchor-menu/frontend.js b/src/anchor-menu/frontend.js index 05a69d21..c159a331 100644 --- a/src/anchor-menu/frontend.js +++ b/src/anchor-menu/frontend.js @@ -1,6 +1,4 @@ -const { render } = wp.element; - - +import { createRoot } from 'react-dom/client' import { AnchorMenu } from "@asu-unity-stack/packages/unity-react-core/src/components/AnchorMenu/AnchorMenu"; // var stickyMenu = document.getElementsByClassName("uds-anchor-menu"); @@ -31,15 +29,15 @@ id. // Load first element with the unityblocks-anchormenu id const menu = document.querySelector("#unityblocks-anchor-menu"); -const items = JSON.parse(menu.dataset.items); -const firstElementId = menu.dataset.firstElementId; -const focusFirstFocusableElement = menu.dataset.focusFirstFocusableElement === "true"; - -render( - , - menu -); + const items = JSON.parse(menu.dataset.items); + const firstElementId = menu.dataset.firstelementid; + const focusFirstFocusableElement = menu.dataset.focusfirstfocusableelement === "true"; + + const root = createRoot(menu); + root.render( + + ); From 6275d50befcdc750e8fa3fd89c6e23fa048c8946 Mon Sep 17 00:00:00 2001 From: John Cox Date: Wed, 18 Mar 2026 16:09:52 -0700 Subject: [PATCH 11/24] rm comments --- src/anchor-menu/frontend.js | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/src/anchor-menu/frontend.js b/src/anchor-menu/frontend.js index c159a331..c04bdd1d 100644 --- a/src/anchor-menu/frontend.js +++ b/src/anchor-menu/frontend.js @@ -1,32 +1,6 @@ import { createRoot } from 'react-dom/client' import { AnchorMenu } from "@asu-unity-stack/packages/unity-react-core/src/components/AnchorMenu/AnchorMenu"; -// var stickyMenu = document.getElementsByClassName("uds-anchor-menu"); - -// const onScroll = () => { -// const scroll = document.documentElement.scrollTop; - -// if (scroll > 500) { -// stickyMenu[0].classList.add("sticky"); -// } else { -// stickyMenu[0].classList.remove("sticky"); -// } -// }; - -// window.addEventListener("scroll", onScroll); - -/* -Load the block attributes from the dom element attributes. - -If the Unity component was designed to be inserted multiple times into a page, we would select -the dom elements by the WP-generated class and load the resulting elements into an array. -The class for this block is wp-block-unityblocks-anchor-menu. - -However, the AnchorMenu React component only targets a single occurrence on a page using an element -id. -*/ - -// Load first element with the unityblocks-anchormenu id const menu = document.querySelector("#unityblocks-anchor-menu"); const items = JSON.parse(menu.dataset.items); From a62531615131baa6d47278da202350b7388f36e6 Mon Sep 17 00:00:00 2001 From: John Cox Date: Thu, 19 Mar 2026 09:11:59 -0700 Subject: [PATCH 12/24] build latest --- build/anchor-menu/block.json | 5 +++-- build/anchor-menu/frontend.asset.php | 2 +- build/anchor-menu/frontend.js | 7 ++----- build/anchor-menu/get-anchors.asset.php | 1 + build/anchor-menu/get-anchors.js | 1 + build/anchor-menu/index.asset.php | 2 +- build/anchor-menu/index.js | 7 ++----- 7 files changed, 11 insertions(+), 14 deletions(-) create mode 100644 build/anchor-menu/get-anchors.asset.php create mode 100644 build/anchor-menu/get-anchors.js diff --git a/build/anchor-menu/block.json b/build/anchor-menu/block.json index 82de91bb..505ef696 100644 --- a/build/anchor-menu/block.json +++ b/build/anchor-menu/block.json @@ -1,8 +1,8 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 2, + "apiVersion": 3, "name": "unityblocks/anchor-menu", - "version": "2.1.0", + "version": "3.0.0", "title": "Unity Anchor Menu", "category": "unityblocks", "keywords": [ @@ -22,6 +22,7 @@ "textdomain": "unityblocks", "viewScript": [ "file:./frontend.js", + "file:./get-anchors.js", "unityblocks-anchor-menu-view-script" ], "editorScript": "file:./index.js", diff --git a/build/anchor-menu/frontend.asset.php b/build/anchor-menu/frontend.asset.php index 99c2f24a..1309b098 100644 --- a/build/anchor-menu/frontend.asset.php +++ b/build/anchor-menu/frontend.asset.php @@ -1 +1 @@ - array('react', 'wp-element'), 'version' => '7c5340201e0eaadf49e5'); + array('react', 'react-dom', 'wp-element'), 'version' => '7a9acf55beecabe182ec'); diff --git a/build/anchor-menu/frontend.js b/build/anchor-menu/frontend.js index 7144aa61..5093bea9 100644 --- a/build/anchor-menu/frontend.js +++ b/build/anchor-menu/frontend.js @@ -1,4 +1,4 @@ -(()=>{var e={2485:(e,t)=>{var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?r-1:0),o=1;o/gm),W=f(/\${[\w\W]*}/gm),q=f(/^data-[\-\w.\u00B7-\uFFFF]/),Y=f(/^aria-[\-\w]+$/),V=f(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),X=f(/^(?:\w+script|data):/i),K=f(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Z=f(/^html$/i),J=f(/^[a-z][.\w]*(-[.\w]+)+$/i),Q=function(){return"undefined"==typeof window?null:window};return function t(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Q(),o=function(e){return t(e)};if(o.version="2.5.7",o.removed=[],!r||!r.document||9!==r.document.nodeType)return o.isSupported=!1,o;var a=r.document,i=r.document,s=r.DocumentFragment,c=r.HTMLTemplateElement,l=r.Node,f=r.Element,d=r.NodeFilter,p=r.NamedNodeMap,m=void 0===p?r.NamedNodeMap||r.MozNamedAttrMap:p,h=r.HTMLFormElement,g=r.DOMParser,O=r.trustedTypes,ee=f.prototype,te=R(ee,"cloneNode"),re=R(ee,"nextSibling"),ne=R(ee,"childNodes"),oe=R(ee,"parentNode");if("function"==typeof c){var ae=i.createElement("template");ae.content&&ae.content.ownerDocument&&(i=ae.content.ownerDocument)}var ie=function(t,r){if("object"!==e(t)||"function"!=typeof t.createPolicy)return null;var n=null,o="data-tt-policy-suffix";r.currentScript&&r.currentScript.hasAttribute(o)&&(n=r.currentScript.getAttribute(o));var a="dompurify"+(n?"#"+n:"");try{return t.createPolicy(a,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(e){return console.warn("TrustedTypes policy "+a+" could not be created."),null}}(O,a),se=ie?ie.createHTML(""):"",ce=i,le=ce.implementation,ue=ce.createNodeIterator,fe=ce.createDocumentFragment,de=ce.getElementsByTagName,pe=a.importNode,me={};try{me=_(i).documentMode?i.documentMode:{}}catch(e){}var he={};o.isSupported="function"==typeof oe&&le&&void 0!==le.createHTMLDocument&&9!==me;var ge,ye,be=U,ve=G,Se=W,we=q,ke=Y,Ae=X,Ce=K,xe=J,Ee=V,Te=null,Oe=N({},[].concat(n(I),n(L),n(M),n(D),n(F))),Ne=null,_e=N({},[].concat(n($),n(z),n(H),n(B))),Re=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ie=null,Le=null,Me=!0,Pe=!0,De=!1,je=!0,Fe=!1,$e=!0,ze=!1,He=!1,Be=!1,Ue=!1,Ge=!1,We=!1,qe=!0,Ye=!1,Ve=!0,Xe=!1,Ke={},Ze=null,Je=N({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Qe=null,et=N({},["audio","video","img","source","image","track"]),tt=null,rt=N({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),nt="http://www.w3.org/1998/Math/MathML",ot="http://www.w3.org/2000/svg",at="http://www.w3.org/1999/xhtml",it=at,st=!1,ct=null,lt=N({},[nt,ot,at],w),ut=["application/xhtml+xml","text/html"],ft=null,dt=i.createElement("form"),pt=function(e){return e instanceof RegExp||e instanceof Function},mt=function(t){ft&&ft===t||(t&&"object"===e(t)||(t={}),t=_(t),ge=ge=-1===ut.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,ye="application/xhtml+xml"===ge?w:S,Te="ALLOWED_TAGS"in t?N({},t.ALLOWED_TAGS,ye):Oe,Ne="ALLOWED_ATTR"in t?N({},t.ALLOWED_ATTR,ye):_e,ct="ALLOWED_NAMESPACES"in t?N({},t.ALLOWED_NAMESPACES,w):lt,tt="ADD_URI_SAFE_ATTR"in t?N(_(rt),t.ADD_URI_SAFE_ATTR,ye):rt,Qe="ADD_DATA_URI_TAGS"in t?N(_(et),t.ADD_DATA_URI_TAGS,ye):et,Ze="FORBID_CONTENTS"in t?N({},t.FORBID_CONTENTS,ye):Je,Ie="FORBID_TAGS"in t?N({},t.FORBID_TAGS,ye):{},Le="FORBID_ATTR"in t?N({},t.FORBID_ATTR,ye):{},Ke="USE_PROFILES"in t&&t.USE_PROFILES,Me=!1!==t.ALLOW_ARIA_ATTR,Pe=!1!==t.ALLOW_DATA_ATTR,De=t.ALLOW_UNKNOWN_PROTOCOLS||!1,je=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Fe=t.SAFE_FOR_TEMPLATES||!1,$e=!1!==t.SAFE_FOR_XML,ze=t.WHOLE_DOCUMENT||!1,Ue=t.RETURN_DOM||!1,Ge=t.RETURN_DOM_FRAGMENT||!1,We=t.RETURN_TRUSTED_TYPE||!1,Be=t.FORCE_BODY||!1,qe=!1!==t.SANITIZE_DOM,Ye=t.SANITIZE_NAMED_PROPS||!1,Ve=!1!==t.KEEP_CONTENT,Xe=t.IN_PLACE||!1,Ee=t.ALLOWED_URI_REGEXP||Ee,it=t.NAMESPACE||at,Re=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&pt(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Re.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&pt(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Re.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Re.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Fe&&(Pe=!1),Ge&&(Ue=!0),Ke&&(Te=N({},n(F)),Ne=[],!0===Ke.html&&(N(Te,I),N(Ne,$)),!0===Ke.svg&&(N(Te,L),N(Ne,z),N(Ne,B)),!0===Ke.svgFilters&&(N(Te,M),N(Ne,z),N(Ne,B)),!0===Ke.mathMl&&(N(Te,D),N(Ne,H),N(Ne,B))),t.ADD_TAGS&&(Te===Oe&&(Te=_(Te)),N(Te,t.ADD_TAGS,ye)),t.ADD_ATTR&&(Ne===_e&&(Ne=_(Ne)),N(Ne,t.ADD_ATTR,ye)),t.ADD_URI_SAFE_ATTR&&N(tt,t.ADD_URI_SAFE_ATTR,ye),t.FORBID_CONTENTS&&(Ze===Je&&(Ze=_(Ze)),N(Ze,t.FORBID_CONTENTS,ye)),Ve&&(Te["#text"]=!0),ze&&N(Te,["html","head","body"]),Te.table&&(N(Te,["tbody"]),delete Ie.tbody),u&&u(t),ft=t)},ht=N({},["mi","mo","mn","ms","mtext"]),gt=N({},["annotation-xml"]),yt=N({},["title","style","font","a","script"]),bt=N({},L);N(bt,M),N(bt,P);var vt=N({},D);N(vt,j);var St=function(e){v(o.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=se}catch(t){e.remove()}}},wt=function(e,t){try{v(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){v(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Ne[e])if(Ue||Ge)try{St(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},kt=function(e){var t,r;if(Be)e=""+e;else{var n=k(e,/^[\r\n\t ]+/);r=n&&n[0]}"application/xhtml+xml"===ge&&it===at&&(e=''+e+"");var o=ie?ie.createHTML(e):e;if(it===at)try{t=(new g).parseFromString(o,ge)}catch(e){}if(!t||!t.documentElement){t=le.createDocument(it,"template",null);try{t.documentElement.innerHTML=st?se:o}catch(e){}}var a=t.body||t.documentElement;return e&&r&&a.insertBefore(i.createTextNode(r),a.childNodes[0]||null),it===at?de.call(t,ze?"html":"body")[0]:ze?t.documentElement:a},At=function(e){return ue.call(e.ownerDocument||e,e,d.SHOW_ELEMENT|d.SHOW_COMMENT|d.SHOW_TEXT|d.SHOW_PROCESSING_INSTRUCTION|d.SHOW_CDATA_SECTION,null,!1)},Ct=function(e){return e instanceof h&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof m)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},xt=function(t){return"object"===e(l)?t instanceof l:t&&"object"===e(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},Et=function(e,t,r){he[e]&&y(he[e],(function(e){e.call(o,t,r,ft)}))},Tt=function(e){var t;if(Et("beforeSanitizeElements",e,null),Ct(e))return St(e),!0;if(E(/[\u0080-\uFFFF]/,e.nodeName))return St(e),!0;var r=ye(e.nodeName);if(Et("uponSanitizeElement",e,{tagName:r,allowedTags:Te}),e.hasChildNodes()&&!xt(e.firstElementChild)&&(!xt(e.content)||!xt(e.content.firstElementChild))&&E(/<[/\w]/g,e.innerHTML)&&E(/<[/\w]/g,e.textContent))return St(e),!0;if("select"===r&&E(/');case 1:n.status=2;var a=!0;r=n.chunks;var i=0;n=n.children;for(var s=0;s")),nt(e,t,n),!!e.responseState.generateStaticMarkup||t.push("\x3c!--/$--\x3e");if(0e.progressiveChunkSize)return r.rootSegmentID=e.nextSegmentId++,e.completedBoundaries.push(r),I(t,e.responseState,r.id),nt(e,t,n),t.push("\x3c!--/$--\x3e");if(e.responseState.generateStaticMarkup||t.push("\x3c!--$--\x3e"),1!==(n=r.completedSegments).length)throw Error(o(391));return rt(e,t,n[0]),!!e.responseState.generateStaticMarkup||t.push("\x3c!--/$--\x3e")}function ot(e,t,n){return function(e,t,n,r){switch(n.insertionMode){case 0:case 1:return e.push('