diff --git a/.changeset/tools-11ty-anchor.md b/.changeset/tools-11ty-anchor.md new file mode 100644 index 0000000000..2037064bb6 --- /dev/null +++ b/.changeset/tools-11ty-anchor.md @@ -0,0 +1,6 @@ +--- +"@patternfly/pfe-tools": minor +--- +✨ Added `anchors` 11ty plugin, based on [@orchidjs/eleventy-plugin-ids][npm] + +[npm]: https://npm.im/@orchidjs/eleventy-plugin-ids diff --git a/eleventy.config.cjs b/eleventy.config.cjs index e1ceb98387..067bafe7c2 100644 --- a/eleventy.config.cjs +++ b/eleventy.config.cjs @@ -1,9 +1,10 @@ const { EleventyRenderPlugin } = require('@11ty/eleventy'); -const AnchorsPlugin = require('@orchidjs/eleventy-plugin-ids'); const SyntaxHighlightPlugin = require('@11ty/eleventy-plugin-syntaxhighlight'); const DirectoryOutputPlugin = require('@11ty/eleventy-plugin-directory-output'); const PfeAssetsPlugin = require('./docs/_plugins/pfe-assets.cjs'); + +const AnchorsPlugin = require('@patternfly/pfe-tools/11ty/plugins/anchors.cjs'); const CustomElementsManifestPlugin = require('@patternfly/pfe-tools/11ty/plugins/custom-elements-manifest.cjs'); const OrderTagsPlugin = require('@patternfly/pfe-tools/11ty/plugins/order-tags.cjs'); const TodosPlugin = require('@patternfly/pfe-tools/11ty/plugins/todos.cjs'); @@ -11,6 +12,7 @@ const TocPlugin = require('@patternfly/pfe-tools/11ty/plugins/table-of-contents. const markdownItAnchor = require('markdown-it-anchor'); +/** @param {import('@11ty/eleventy/src/UserConfig')} eleventyConfig */ module.exports = function(eleventyConfig) { eleventyConfig.amendLibrary('md', md => md.use(markdownItAnchor)); @@ -50,16 +52,17 @@ module.exports = function(eleventyConfig) { /** Add IDs to heading elements */ eleventyConfig.addPlugin(AnchorsPlugin, { - formatter(element, existingids) { + exclude: /\/components\/.*\/demo\//, + formatter($, existingids) { if ( - !existingids.includes(element.getAttribute('id')) && - element.hasAttribute('slot') && - element.closest('pf-card') + !existingids.includes($.attr('id')) && + $.attr('slot') && + $.closest('pf-card') ) { return null; } else { return eleventyConfig.javascriptFunctions - .slug(element.textContent) + .slug($.text()) .replace(/[&,+()$~%.'":*?!<>{}]/g, ''); } }, diff --git a/package-lock.json b/package-lock.json index 5159248838..b440c1d13c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ }, "elements": { "name": "@patternfly/elements", - "version": "2.0.0-rc.1", + "version": "2.0.0-rc.3", "license": "MIT", "dependencies": { "@patternfly/pfe-core": "^2.0.0-rc.1", @@ -2456,13 +2456,6 @@ "lit-html": "^2.0.0" } }, - "node_modules/@orchidjs/eleventy-plugin-ids": { - "version": "0.1.1", - "license": "Apache-2.0", - "dependencies": { - "jsdom": "^18.0.1" - } - }, "node_modules/@patternfly/create-element": { "resolved": "tools/create-element", "link": true @@ -3267,13 +3260,6 @@ "version": "0.7.2", "license": "(Unlicense OR Apache-2.0)" }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "license": "MIT" @@ -4250,10 +4236,6 @@ "version": "1.0.1", "license": "MIT" }, - "node_modules/abab": { - "version": "2.0.6", - "license": "BSD-3-Clause" - }, "node_modules/abort-controller": { "version": "3.0.0", "dev": true, @@ -4286,24 +4268,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "license": "MIT", @@ -4311,13 +4275,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "6.0.2", "license": "MIT", @@ -4616,10 +4573,6 @@ ], "license": "MIT" }, - "node_modules/asynckit": { - "version": "0.4.0", - "license": "MIT" - }, "node_modules/at-least-node": { "version": "1.0.0", "license": "ISC", @@ -4868,10 +4821,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "license": "BSD-2-Clause" - }, "node_modules/browser-readablestream-to-it": { "version": "2.0.0", "dev": true, @@ -5561,16 +5510,6 @@ "version": "0.4.3", "license": "MIT" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/command-line-args": { "version": "5.1.2", "license": "MIT", @@ -6595,20 +6534,6 @@ "version": "0.5.0", "license": "MIT" }, - "node_modules/cssstyle": { - "version": "2.3.0", - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "license": "MIT" - }, "node_modules/csv": { "version": "5.5.3", "license": "MIT", @@ -6663,18 +6588,6 @@ "node": ">=8" } }, - "node_modules/data-urls": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/debounce": { "version": "1.2.1", "license": "MIT" @@ -6722,10 +6635,6 @@ "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "license": "MIT" - }, "node_modules/decode-uri-component": { "version": "0.2.2", "license": "MIT", @@ -6815,13 +6724,6 @@ "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/delegates": { "version": "1.0.0", "license": "MIT" @@ -6980,16 +6882,6 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domexception": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "5.0.3", "license": "BSD-2-Clause", @@ -7389,76 +7281,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { "version": "8.33.0", "license": "MIT", @@ -8652,18 +8474,6 @@ "node": ">=0.10.0" } }, - "node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fragment-cache": { "version": "0.2.1", "license": "MIT", @@ -9380,16 +9190,6 @@ "version": "2.8.9", "license": "ISC" }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "license": "MIT" @@ -9561,18 +9361,6 @@ "node": ">= 0.8" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "license": "MIT", @@ -10364,10 +10152,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "license": "MIT" - }, "node_modules/is-primitive": { "version": "2.0.0", "dev": true, @@ -10770,61 +10554,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdom": { - "version": "18.1.1", - "license": "MIT", - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "10.0.0", - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/jsesc": { "version": "2.5.2", "dev": true, @@ -13292,10 +13021,6 @@ "node": ">= 6" } }, - "node_modules/nwsapi": { - "version": "2.2.2", - "license": "MIT" - }, "node_modules/object-assign": { "version": "4.1.1", "license": "MIT", @@ -14550,10 +14275,6 @@ "version": "1.0.2", "license": "ISC" }, - "node_modules/psl": { - "version": "1.9.0", - "license": "MIT" - }, "node_modules/pug": { "version": "3.0.2", "license": "MIT", @@ -14735,10 +14456,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "funding": [ @@ -15263,10 +14980,6 @@ "node": ">=0.10.5" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "license": "MIT" - }, "node_modules/resolve": { "version": "1.22.1", "license": "MIT", @@ -15517,16 +15230,6 @@ "version": "2.1.2", "license": "MIT" }, - "node_modules/saxes": { - "version": "5.0.1", - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/section-matter": { "version": "1.0.0", "license": "MIT", @@ -16714,10 +16417,6 @@ "version": "1.0.0", "dev": true }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "license": "MIT" - }, "node_modules/synckit": { "version": "0.8.5", "license": "MIT", @@ -17003,26 +16702,6 @@ "url": "https://github.com/sponsors/ota-meshi" } }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/tr46": { "version": "3.0.0", "license": "MIT", @@ -17546,14 +17225,6 @@ "version": "0.1.0", "license": "MIT" }, - "node_modules/url-parse": { - "version": "1.5.10", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/urlpattern-polyfill": { "version": "6.0.2", "license": "MIT", @@ -17664,23 +17335,6 @@ "version": "2.1.2", "license": "MIT" }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/wcwidth": { "version": "1.0.1", "license": "MIT", @@ -17793,33 +17447,6 @@ "node": ">=12" } }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, "node_modules/whatwg-url": { "version": "11.0.0", "license": "MIT", @@ -18031,17 +17658,6 @@ "version": "1.0.1", "license": "MIT" }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "license": "MIT" - }, "node_modules/y18n": { "version": "5.0.8", "license": "ISC", @@ -18377,7 +17993,6 @@ "@custom-elements-manifest/analyzer": "^0.5.6", "@koa/router": "^12.0.0", "@open-wc/testing": "^3.1.6", - "@orchidjs/eleventy-plugin-ids": "^0.1.1", "@playwright/test": "^1.27.1", "@rollup/plugin-replace": "^5.0.2", "@types/dedent": "^0.7.0", @@ -20214,12 +19829,6 @@ "lit-html": "^2.0.0" } }, - "@orchidjs/eleventy-plugin-ids": { - "version": "0.1.1", - "requires": { - "jsdom": "^18.0.1" - } - }, "@patternfly/create-element": { "version": "file:tools/create-element", "requires": { @@ -20869,7 +20478,6 @@ "@custom-elements-manifest/analyzer": "^0.5.6", "@koa/router": "^12.0.0", "@open-wc/testing": "^3.1.6", - "@orchidjs/eleventy-plugin-ids": "^0.1.1", "@playwright/test": "^1.27.1", "@rollup/plugin-replace": "^5.0.2", "@types/dedent": "^0.7.0", @@ -21216,9 +20824,6 @@ "@sinonjs/text-encoding": { "version": "0.7.2" }, - "@tootallnate/once": { - "version": "2.0.0" - }, "@tsconfig/node10": { "version": "1.0.9" }, @@ -21915,9 +21520,6 @@ "a-sync-waterfall": { "version": "1.0.1" }, - "abab": { - "version": "2.0.6" - }, "abort-controller": { "version": "3.0.0", "dev": true, @@ -21935,25 +21537,10 @@ "acorn": { "version": "8.8.2" }, - "acorn-globals": { - "version": "6.0.0", - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1" - } - } - }, "acorn-jsx": { "version": "5.3.2", "requires": {} }, - "acorn-walk": { - "version": "7.2.0" - }, "agent-base": { "version": "6.0.2", "requires": { @@ -22133,9 +21720,6 @@ "version": "1.0.5", "dev": true }, - "asynckit": { - "version": "0.4.0" - }, "at-least-node": { "version": "1.0.0" }, @@ -22280,9 +21864,6 @@ "version": "0.4.1", "dev": true }, - "browser-process-hrtime": { - "version": "1.0.0" - }, "browser-readablestream-to-it": { "version": "2.0.0", "dev": true @@ -22704,12 +22285,6 @@ "colorjs.io": { "version": "0.4.3" }, - "combined-stream": { - "version": "1.0.8", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "command-line-args": { "version": "5.1.2", "requires": { @@ -23403,17 +22978,6 @@ "cssom": { "version": "0.5.0" }, - "cssstyle": { - "version": "2.3.0", - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8" - } - } - }, "csv": { "version": "5.5.3", "requires": { @@ -23451,14 +23015,6 @@ "version": "7.0.0", "dev": true }, - "data-urls": { - "version": "3.0.2", - "requires": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - } - }, "debounce": { "version": "1.2.1" }, @@ -23483,9 +23039,6 @@ } } }, - "decimal.js": { - "version": "10.4.3" - }, "decode-uri-component": { "version": "0.2.2" }, @@ -23537,9 +23090,6 @@ } } }, - "delayed-stream": { - "version": "1.0.0" - }, "delegates": { "version": "1.0.0" }, @@ -23634,12 +23184,6 @@ "domelementtype": { "version": "2.3.0" }, - "domexception": { - "version": "4.0.0", - "requires": { - "webidl-conversions": "^7.0.0" - } - }, "domhandler": { "version": "5.0.3", "requires": { @@ -23907,49 +23451,6 @@ "escape-string-regexp": { "version": "4.0.0" }, - "escodegen": { - "version": "2.0.0", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2" - }, - "source-map": { - "version": "0.6.1", - "optional": true - }, - "type-check": { - "version": "0.3.2", - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, "eslint": { "version": "8.33.0", "requires": { @@ -24755,14 +24256,6 @@ "for-in": "^1.0.1" } }, - "form-data": { - "version": "4.0.0", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "fragment-cache": { "version": "0.2.1", "requires": { @@ -25204,12 +24697,6 @@ "hosted-git-info": { "version": "2.8.9" }, - "html-encoding-sniffer": { - "version": "3.0.0", - "requires": { - "whatwg-encoding": "^2.0.0" - } - }, "html-escaper": { "version": "2.0.2" }, @@ -25322,14 +24809,6 @@ "toidentifier": "1.0.1" } }, - "http-proxy-agent": { - "version": "5.0.0", - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, "https-proxy-agent": { "version": "5.0.1", "requires": { @@ -25798,9 +25277,6 @@ "version": "0.1.1", "dev": true }, - "is-potential-custom-element-name": { - "version": "1.0.1" - }, "is-primitive": { "version": "2.0.0", "dev": true @@ -26026,47 +25502,6 @@ "esprima": "^4.0.0" } }, - "jsdom": { - "version": "18.1.1", - "requires": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "10.0.0", - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - } - } - }, "jsesc": { "version": "2.5.2", "dev": true @@ -27739,9 +27174,6 @@ } } }, - "nwsapi": { - "version": "2.2.2" - }, "object-assign": { "version": "4.1.1" }, @@ -28508,9 +27940,6 @@ "pseudomap": { "version": "1.0.2" }, - "psl": { - "version": "1.9.0" - }, "pug": { "version": "3.0.2", "requires": { @@ -28645,9 +28074,6 @@ "side-channel": "^1.0.4" } }, - "querystringify": { - "version": "2.2.0" - }, "queue-microtask": { "version": "1.2.3" }, @@ -28970,9 +28396,6 @@ "requireindex": { "version": "1.2.0" }, - "requires-port": { - "version": "1.0.0" - }, "resolve": { "version": "1.22.1", "requires": { @@ -29124,12 +28547,6 @@ "safer-buffer": { "version": "2.1.2" }, - "saxes": { - "version": "5.0.1", - "requires": { - "xmlchars": "^2.2.0" - } - }, "section-matter": { "version": "1.0.0", "requires": { @@ -29924,9 +29341,6 @@ "version": "1.0.0", "dev": true }, - "symbol-tree": { - "version": "3.2.4" - }, "synckit": { "version": "0.8.5", "requires": { @@ -30116,20 +29530,6 @@ "eslint-visitor-keys": "^3.0.0" } }, - "tough-cookie": { - "version": "4.1.2", - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "dependencies": { - "universalify": { - "version": "0.2.0" - } - } - }, "tr46": { "version": "3.0.0", "requires": { @@ -30422,13 +29822,6 @@ "urix": { "version": "0.1.0" }, - "url-parse": { - "version": "1.5.10", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "urlpattern-polyfill": { "version": "6.0.2", "requires": { @@ -30507,18 +29900,6 @@ "vscode-uri": { "version": "2.1.2" }, - "w3c-hr-time": { - "version": "1.0.2", - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "3.0.0", - "requires": { - "xml-name-validator": "^4.0.0" - } - }, "wcwidth": { "version": "1.0.1", "requires": { @@ -30596,23 +29977,6 @@ "webidl-conversions": { "version": "7.0.0" }, - "whatwg-encoding": { - "version": "2.0.0", - "requires": { - "iconv-lite": "0.6.3" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "whatwg-mimetype": { - "version": "3.0.0" - }, "whatwg-url": { "version": "11.0.0", "requires": { @@ -30737,12 +30101,6 @@ "xml": { "version": "1.0.1" }, - "xml-name-validator": { - "version": "4.0.0" - }, - "xmlchars": { - "version": "2.2.0" - }, "y18n": { "version": "5.0.8" }, diff --git a/patches/@orchidjs+eleventy-plugin-ids+0.1.1.patch b/patches/@orchidjs+eleventy-plugin-ids+0.1.1.patch deleted file mode 100644 index 9894abab05..0000000000 --- a/patches/@orchidjs+eleventy-plugin-ids+0.1.1.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/node_modules/@orchidjs/eleventy-plugin-ids/eleventy-ids.js b/node_modules/@orchidjs/eleventy-plugin-ids/eleventy-ids.js -index 5cc9f28..0f0f968 100644 ---- a/node_modules/@orchidjs/eleventy-plugin-ids/eleventy-ids.js -+++ b/node_modules/@orchidjs/eleventy-plugin-ids/eleventy-ids.js -@@ -32,7 +32,12 @@ module.exports = function( eleventyConfig, config = {} ) { - return; - } - -- element.setAttribute('id',formatter(element,ids)); -+ const value = formatter(element,ids); -+ if (value === null) { -+ element.removeAttribute('id'); -+ } else { -+ element.setAttribute('id', value); -+ } - }); - }); - diff --git a/tools/pfe-tools/11ty/plugins/anchors.cjs b/tools/pfe-tools/11ty/plugins/anchors.cjs new file mode 100644 index 0000000000..16462701ef --- /dev/null +++ b/tools/pfe-tools/11ty/plugins/anchors.cjs @@ -0,0 +1,42 @@ +/** + * @license Apache-2.0 + * Portions copyright https://github.com/orchidjs/eleventy-plugin-ids + */ + +const cheerio = require('cheerio'); + +/** + * @param {import('@11ty/eleventy/src/UserConfig')} eleventyConfig + * @param {{ prefix: string; formatter: (element: *, existingIds: string[]) => string; selectors: string[]; exclude: RegExp; }} config + */ +module.exports = function(eleventyConfig, config = {}) { + let { selectors, prefix, formatter } = config; + selectors ??= ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; + prefix ??= ''; + formatter ??= function(element) { + return prefix + eleventyConfig.javascriptFunctions + .slug(element.textContent) + .replace(/[&,+()$~%.'":*?!<>{}]/g, ''); + }; + + eleventyConfig.addTransform('ids', async function(rawContent, outputPath) { + if (!outputPath || !outputPath.endsWith('.html') || config.exclude?.test?.(outputPath)) { + return rawContent; + } else { + const $ = cheerio.load(rawContent); + const ids = []; + for (const selector of selectors) { + $(selector).each(function() { + const el = $(this); + const id = el.attr('id'); + if (id) { + ids.push(id); + } else { + el.attr('id', formatter(el, ids)); + } + }); + } + return $.html(); + } + }); +}; diff --git a/tools/pfe-tools/package.json b/tools/pfe-tools/package.json index 70b99b5a4f..fb4133f646 100644 --- a/tools/pfe-tools/package.json +++ b/tools/pfe-tools/package.json @@ -27,6 +27,7 @@ "./environment.js": "./environment.js", "./11ty": "./11ty/index.js", "./11ty/DocsPage.js": "./11ty/DocsPage.js", + "./11ty/plugins/anchors.cjs": "./11ty/plugins/anchors.cjs", "./11ty/plugins/custom-elements-manifest.cjs": "./11ty/plugins/custom-elements-manifest.cjs", "./11ty/plugins/order-tags.cjs": "./11ty/plugins/order-tags.cjs", "./11ty/plugins/table-of-contents.cjs": "./11ty/plugins/table-of-contents.cjs", @@ -67,7 +68,6 @@ "@custom-elements-manifest/analyzer": "^0.5.6", "@koa/router": "^12.0.0", "@open-wc/testing": "^3.1.6", - "@orchidjs/eleventy-plugin-ids": "^0.1.1", "@playwright/test": "^1.27.1", "@rollup/plugin-replace": "^5.0.2", "@types/dedent": "^0.7.0",