@epa-wg/custom-element-dist 0.0.26 → 0.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/.idea/custom-element-dist.iml +1 -5
  2. package/.storybook/preview.ts +1 -1
  3. package/README.md +4 -4
  4. package/bin/vitest/vitest-browser-importmaps.mjs +20 -20
  5. package/coverage/coverage-final.json +9 -9
  6. package/coverage/index.html +25 -25
  7. package/coverage/src/custom-element/coverage.svg +1 -1
  8. package/coverage/src/custom-element/custom-element.js/coverage.svg +1 -1
  9. package/coverage/src/custom-element/custom-element.js.html +467 -308
  10. package/coverage/src/custom-element/demo/index.html +1 -1
  11. package/coverage/src/custom-element/demo/z.js.html +1 -1
  12. package/coverage/src/custom-element/http-request.js.html +12 -12
  13. package/coverage/src/custom-element/index.html +20 -20
  14. package/coverage/src/custom-element/local-storage.js.html +56 -41
  15. package/coverage/src/custom-element/location-element.js.html +4 -4
  16. package/coverage/src/custom-element/module-url.js/coverage.svg +1 -1
  17. package/coverage/src/custom-element/module-url.js.html +16 -10
  18. package/coverage/src/index.html +1 -1
  19. package/coverage/src/mocks/handlers.ts.html +1 -1
  20. package/coverage/src/mocks/index.html +1 -1
  21. package/coverage/src/stories/attributes.test.stories.ts.html +9 -12
  22. package/coverage/src/stories/coverage.svg +1 -1
  23. package/coverage/src/stories/css.test.stories.ts.html +1 -1
  24. package/coverage/src/stories/dom-merge.test.stories.ts.html +15 -9
  25. package/coverage/src/stories/external-template.test.stories.ts.html +8 -11
  26. package/coverage/src/stories/form.test.stories.ts.html +1 -1
  27. package/coverage/src/stories/http-request.stories.ts.html +1 -1
  28. package/coverage/src/stories/index.html +26 -26
  29. package/coverage/src/stories/local-storage.test.stories.ts/coverage.svg +1 -1
  30. package/coverage/src/stories/local-storage.test.stories.ts.html +87 -63
  31. package/coverage/src/stories/location-element.test.stories.ts.html +1 -1
  32. package/coverage/src/stories/module-url.test.stories.ts.html +1 -1
  33. package/coverage/src/stories/set-url.test.stories.ts.html +1 -1
  34. package/coverage/src/stories/slice-events.test.stories.ts.html +1 -1
  35. package/coverage/src/stories/slots.test.stories.ts.html +1 -1
  36. package/coverage/src/stories/testStoryBook.ts.html +1 -1
  37. package/coverage/src/stories/version-select.test.stories.ts.html +1 -1
  38. package/coverage/src/sum.ts.html +1 -1
  39. package/dist/{custom-element-b7c_7Kz4.js → custom-element-BMMsP1Dy.js} +204 -156
  40. package/dist/custom-element-CPSk7s0j.cjs +87 -0
  41. package/dist/custom-element-bundle.cjs +1 -1
  42. package/dist/custom-element-bundle.js +28 -25
  43. package/dist/demo/a.svg +27 -0
  44. package/dist/demo/demo.css +6 -7
  45. package/dist/demo/external-template.html +3 -3
  46. package/dist/demo/npm-versions-demo.html +21 -8
  47. package/dist/demo/npm-versions.html +54 -25
  48. package/dist/demo/s.xml +3 -28
  49. package/dist/demo/s.xslt +51 -92
  50. package/dist/demo/z.html +32 -61
  51. package/dist/demo/z1.html +34 -0
  52. package/dist/local-storage-78EivJ_B.cjs +1 -0
  53. package/dist/local-storage-DzmNKzgN.js +66 -0
  54. package/dist/mockServiceWorker.js +1 -1
  55. package/package.json +27 -25
  56. package/public/demo/a.svg +27 -0
  57. package/public/demo/demo.css +6 -7
  58. package/public/demo/external-template.html +3 -3
  59. package/public/demo/npm-versions-demo.html +21 -8
  60. package/public/demo/npm-versions.html +54 -25
  61. package/public/demo/s.xml +3 -28
  62. package/public/demo/s.xslt +51 -92
  63. package/public/demo/z.html +32 -61
  64. package/public/demo/z1.html +34 -0
  65. package/public/mockServiceWorker.js +1 -1
  66. package/src/custom-element/custom-element.js +67 -14
  67. package/src/custom-element/demo/a.svg +27 -0
  68. package/src/custom-element/demo/demo.css +6 -7
  69. package/src/custom-element/demo/external-template.html +3 -3
  70. package/src/custom-element/demo/npm-versions-demo.html +21 -8
  71. package/src/custom-element/demo/npm-versions.html +54 -25
  72. package/src/custom-element/demo/s.xml +3 -28
  73. package/src/custom-element/demo/s.xslt +51 -92
  74. package/src/custom-element/demo/z.html +32 -61
  75. package/src/custom-element/demo/z1.html +34 -0
  76. package/src/custom-element/ide/web-types-dce.json +1 -1
  77. package/src/custom-element/ide/web-types-xsl.json +1 -1
  78. package/src/custom-element/index.html +19 -2
  79. package/src/custom-element/local-storage.js +19 -14
  80. package/src/custom-element/module-url.js +3 -2
  81. package/src/mocks/versions.mock.ts +8 -8
  82. package/src/stories/__screenshots__/http-request.test.ts/http-request-url-change-1.png +0 -0
  83. package/src/stories/attributes.test.stories.ts +3 -4
  84. package/src/stories/dom-merge.test.stories.ts +9 -7
  85. package/src/stories/external-template.test.stories.ts +2 -3
  86. package/src/stories/local-storage.test.stories.ts +61 -53
  87. package/src/sum.test.ts +5 -5
  88. package/src/sum.ts +3 -3
  89. package/storybook-static/assets/{Color-KGDBMAHA-CH-YyWYq.js → Color-KGDBMAHA-CJo5gHY3.js} +1 -1
  90. package/storybook-static/assets/{Configure-DFL_bm2M.js → Configure-DdXbGKhY.js} +1 -1
  91. package/storybook-static/assets/{DocsRenderer-PKQXORMH-Bz-_1hmS.js → DocsRenderer-PKQXORMH-DLnpL5hE.js} +2 -2
  92. package/storybook-static/assets/{attributes.test.stories-DIQXccHc.js → attributes.test.stories-Bt5V18qO.js} +10 -11
  93. package/storybook-static/assets/{css.test.stories-BV2hi4CY.js → css.test.stories-CGYy2daE.js} +1 -1
  94. package/storybook-static/assets/{custom-element-wn23PUwN.js → custom-element-D8hcDZHh.js} +116 -82
  95. package/storybook-static/assets/{dom-merge.test.stories-Dws0C2-g.js → dom-merge.test.stories-XlsZ0UvX.js} +22 -20
  96. package/storybook-static/assets/{external-template.test.stories-BHO48b0j.js → external-template.test.stories-Bt_Pflu8.js} +7 -8
  97. package/storybook-static/assets/{form.test.stories-dv9mwp24.js → form.test.stories-B0NoI8wm.js} +1 -1
  98. package/storybook-static/assets/{handlers-CaCq2ZPF.js → handlers-B5969HUu.js} +13 -13
  99. package/storybook-static/assets/{http-request.stories-B2ke7LtS.js → http-request.stories-B2skuTFV.js} +1 -1
  100. package/storybook-static/assets/iframe-Dfrt81rk.js +2 -0
  101. package/storybook-static/assets/{index-BnXBQqj9.js → index-Ay195x2L.js} +4 -4
  102. package/storybook-static/assets/{index-sm7QlJZE.js → index-C3ChPTMh.js} +1 -1
  103. package/storybook-static/assets/{index-Dz4OaB2k.js → index-C7lvoJNv.js} +1 -1
  104. package/storybook-static/assets/{index-Cpxqn5iQ.js → index-Gpdhz4ab.js} +1 -1
  105. package/storybook-static/assets/local-storage.test.stories-DfY6feqG.js +420 -0
  106. package/storybook-static/assets/{location-element.test.stories-BiFvBop7.js → location-element.test.stories-944AotIJ.js} +1 -1
  107. package/storybook-static/assets/{module-url.test.stories-BXoM34tX.js → module-url.test.stories-DSKcwApl.js} +1 -1
  108. package/storybook-static/assets/preview-AJR7rVPD.js +52 -0
  109. package/storybook-static/assets/{preview-Cg7hXPRq.js → preview-CadgX-4y.js} +2 -2
  110. package/storybook-static/assets/{set-url.test.stories-Cg5Z0r7x.js → set-url.test.stories-DjLHKkEh.js} +1 -1
  111. package/storybook-static/assets/{slice-events.test.stories-D_ttGp3g.js → slice-events.test.stories-8I_BrHd6.js} +1 -1
  112. package/storybook-static/assets/{slots.test.stories-DBNXOm0T.js → slots.test.stories-CvZz4jyP.js} +1 -1
  113. package/storybook-static/assets/{version-select.test.stories-CgV3UCim.js → version-select.test.stories-DSxmJylI.js} +1 -1
  114. package/storybook-static/demo/a.svg +27 -0
  115. package/storybook-static/demo/demo.css +6 -7
  116. package/storybook-static/demo/external-template.html +3 -3
  117. package/storybook-static/demo/npm-versions-demo.html +21 -8
  118. package/storybook-static/demo/npm-versions.html +54 -25
  119. package/storybook-static/demo/s.xml +3 -28
  120. package/storybook-static/demo/s.xslt +51 -92
  121. package/storybook-static/demo/z.html +32 -61
  122. package/storybook-static/demo/z1.html +34 -0
  123. package/storybook-static/iframe.html +1 -1
  124. package/storybook-static/mockServiceWorker.js +1 -1
  125. package/storybook-static/project.json +1 -1
  126. package/storybook-static/sb-addons/chromatic-com-storybook-9/manager-bundle.js +39 -36
  127. package/storybook-static/sb-addons/chromatic-com-storybook-9/manager-bundle.js.LEGAL.txt +38 -1
  128. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  129. package/.idea/compiler.xml +0 -6
  130. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  131. package/.vscode/settings.json +0 -24
  132. package/dist/custom-element-CckoVsvO.cjs +0 -53
  133. package/dist/local-storage-Boafngui.cjs +0 -1
  134. package/dist/local-storage-BqDEu2kF.js +0 -59
  135. package/storybook-static/assets/iframe-D4Sos1HO.js +0 -2
  136. package/storybook-static/assets/local-storage.test.stories-BpogLNq-.js +0 -419
  137. package/storybook-static/assets/preview-oHxXRSIu.js +0 -48
package/dist/demo/z.html CHANGED
@@ -1,62 +1,33 @@
1
- <dce-root xmlns="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml"
2
- xmlns:dce="urn:schemas-epa-wg:dce" data-dce-id="1">
3
- <location-element xmlns="" slice="window-url" live="" data-dce-id="2"></location-element>
4
- <table xmlns="" data-dce-id="3">
5
- <tbody data-dce-id="0-1">
6
- <tr data-dce-id="4">
7
- <th data-dce-id="5"><h3 data-dce-id="6"> URL properties </h3></th>
8
- <td data-dce-id="7">9</td>
9
- </tr>
10
- <tr data-dce-id="10">
11
- <th data-dce-id="11">href</th>
12
- <td data-dce-id="12">http://localhost:63342/custom-element/demo/a.html?_ijt=dmv0p4go000q47lg48i5im92f7&amp;_ij_reload=RELOAD_ON_SAVE</td>
13
- </tr>
14
- <tr data-dce-id="10-1">
15
- <th data-dce-id="11">origin</th>
16
- <td data-dce-id="12">http://localhost:63342</td>
17
- </tr>
18
- <tr data-dce-id="10-2">
19
- <th data-dce-id="11">protocol</th>
20
- <td data-dce-id="12">http:</td>
21
- </tr>
22
- <tr data-dce-id="10-3">
23
- <th data-dce-id="11">host</th>
24
- <td data-dce-id="12">localhost:63342</td>
25
- </tr>
26
- <tr data-dce-id="10-4">
27
- <th data-dce-id="11">hostname</th>
28
- <td data-dce-id="12">localhost</td>
29
- </tr>
30
- <tr data-dce-id="10-5">
31
- <th data-dce-id="11">port</th>
32
- <td data-dce-id="12">63342</td>
33
- </tr>
34
- <tr data-dce-id="10-6">
35
- <th data-dce-id="11">pathname</th>
36
- <td data-dce-id="12">/custom-element/demo/a.html</td>
37
- </tr>
38
- <tr data-dce-id="10-7">
39
- <th data-dce-id="11">search</th>
40
- <td data-dce-id="12">?_ijt=dmv0p4go000q47lg48i5im92f7&amp;_ij_reload=RELOAD_ON_SAVE</td>
41
- </tr>
42
- <tr data-dce-id="10-8">
43
- <th data-dce-id="11">hash</th>
44
- <td data-dce-id="12"></td>
45
- </tr>
46
- </tbody>
47
- </table>
48
- <h3 data-dce-id="9"> URL parameters </h3>
49
- <table xmlns="" data-dce-id="8">
1
+ <!DOCTYPE html>
2
+ <html lang="en" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
+ <title>DOM merge - Declarative Custom Element implementation demo</title>
6
+ <link rel="icon" href="./wc-square.svg"/>
7
+ <script type="importmap">
8
+ {
9
+ "imports": {
10
+ "@epa-wg/custom-element/": "../",
11
+ "@epa-wg/custom-element-dist/": "../"
12
+ }
13
+ }
14
+ </script>
15
+ <script type="module" src="../http-request.js"></script>
16
+ <script type="module" src="../location-element.js"></script>
17
+ <script type="module" src="../custom-element.js"></script>
18
+ <style>
19
+ @import "./demo.css";
20
+ dt{ font-weight: bold}
21
+ dd{ padding: 0;}
22
+ h1,h3{ margin: 0;}
23
+ nav{ gap:0; }
24
+ </style>
25
+ </head>
26
+ <body>
50
27
 
51
- <tbody data-dce-id="0-1">
52
- <tr data-dce-id="10">
53
- <th data-dce-id="11">_ijt</th>
54
- <td data-dce-id="12">dmv0p4go000q47lg48i5im92f7</td>
55
- </tr>
56
- <tr data-dce-id="10-1">
57
- <th data-dce-id="11">_ij_reload</th>
58
- <td data-dce-id="12">RELOAD_ON_SAVE</td>
59
- </tr>
60
- </tbody>
61
- </table>
62
- </dce-root>
28
+ <custom-element src="./html-template.html#dwc-logo">
29
+ <template><i>loading SVG from templates file ...</i></template>
30
+ </custom-element>
31
+
32
+ </body>
33
+ </html>
@@ -0,0 +1,34 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
+ <title>DOM merge - Declarative Custom Element implementation demo</title>
6
+ <link rel="icon" href="./wc-square.svg"/>
7
+ <script type="importmap">
8
+ {
9
+ "imports": {
10
+ "@epa-wg/custom-element/": "../",
11
+ "@epa-wg/custom-element-dist/": "../"
12
+ }
13
+ }
14
+ </script>
15
+ <script type="module" src="../http-request.js"></script>
16
+ <script type="module" src="../location-element.js"></script>
17
+ <script type="module" src="../custom-element.js"></script>
18
+ <style>
19
+ @import "./demo.css";
20
+ dt{ font-weight: bold}
21
+ dd{ padding: 0;}
22
+ h1,h3{ margin: 0;}
23
+ nav{ gap:0; }
24
+ </style>
25
+ </head>
26
+ <body>
27
+ <button onclick="window.location.hash = `#@epa-wg/custom-element-dist@0.0.27/storybook-static/index.html`">set in page URL</button>
28
+
29
+ <custom-element src="@epa-wg/custom-element-dist/demo/npm-versions.html#npm-version"
30
+ package-name="@epa-wg/custom-element-dist"
31
+ ></custom-element>
32
+
33
+ </body>
34
+ </html>
@@ -0,0 +1 @@
1
+ "use strict";const c=(t,e)=>{if(t==="text")return e;if(t==="json")try{return JSON.parse(e)}catch{return null}const a=document.createElement("input");return a.setAttribute("type",t),t==="number"?(a.value=e,a.valueAsNumber):t==="date"?e?(a.valueAsDate=new Date(e),a.value):null:(a.value=e,a.value)};let o,i,s;function r(t,e){o.call(localStorage,t,e),window.dispatchEvent(new CustomEvent("local-storage",{detail:{key:t,value:e}}))}function u(t){i.call(localStorage,t),window.dispatchEvent(new CustomEvent("local-storage",{detail:{key:t}}))}function g(){s.call(localStorage),window.dispatchEvent(new CustomEvent("local-storage",{detail:{}}))}function m(){o||(o=localStorage.setItem,localStorage.setItem=r,i=localStorage.removeItem,localStorage.removeItem=u,s=localStorage.clear,localStorage.clear=g)}m();function d(t,e){r(t,e)}class S extends HTMLElement{static observedAttributes=["value","slice","key","type","live"];#e;get value(){return this.#e===null?void 0:this.#e}set value(e){return this.#e=e}async connectedCallback(){const e=l=>this.getAttribute(l),a=()=>{this.#e=c(e("type"),localStorage.getItem(e("key"))),this.dispatchEvent(new Event("change"))};if(this.#e=c(e("type"),localStorage.getItem(e("key"))),this.hasAttribute("value")?d(e("key"),this.#e=e("value")):a(),this.hasAttribute("live")){const l=n=>(n.detail.key===e("key")||!n.detail.key)&&a();window.addEventListener("local-storage",l),m(),this._destroy=()=>window.removeEventListener("local-storage",l)}}disconnectedCallback(){this._destroy?.()}}window.customElements.define("local-storage",S);exports.LocalStorageElement=S;exports.localStorageSetItem=d;exports.localStorage_clear=g;exports.localStorage_removeItem=u;exports.localStorage_setItem=r;
@@ -0,0 +1,66 @@
1
+ const n = (t, e) => {
2
+ if (t === "text")
3
+ return e;
4
+ if (t === "json")
5
+ try {
6
+ return JSON.parse(e);
7
+ } catch {
8
+ return null;
9
+ }
10
+ const a = document.createElement("input");
11
+ return a.setAttribute("type", t), t === "number" ? (a.value = e, a.valueAsNumber) : t === "date" ? e ? (a.valueAsDate = new Date(e), a.value) : null : (a.value = e, a.value);
12
+ };
13
+ let o, s, i;
14
+ function c(t, e) {
15
+ o.call(localStorage, t, e), window.dispatchEvent(new CustomEvent("local-storage", { detail: { key: t, value: e } }));
16
+ }
17
+ function g(t) {
18
+ s.call(localStorage, t), window.dispatchEvent(new CustomEvent("local-storage", { detail: { key: t } }));
19
+ }
20
+ function d() {
21
+ i.call(localStorage), window.dispatchEvent(new CustomEvent("local-storage", { detail: {} }));
22
+ }
23
+ function u() {
24
+ o || (o = localStorage.setItem, localStorage.setItem = c, s = localStorage.removeItem, localStorage.removeItem = g, i = localStorage.clear, localStorage.clear = d);
25
+ }
26
+ u();
27
+ function m(t, e) {
28
+ c(t, e);
29
+ }
30
+ class v extends HTMLElement {
31
+ static observedAttributes = [
32
+ "value",
33
+ "slice",
34
+ "key",
35
+ "type",
36
+ "live"
37
+ // monitors localStorage change
38
+ ];
39
+ #e;
40
+ get value() {
41
+ return this.#e === null ? void 0 : this.#e;
42
+ }
43
+ set value(e) {
44
+ return this.#e = e;
45
+ }
46
+ async connectedCallback() {
47
+ const e = (l) => this.getAttribute(l), a = () => {
48
+ this.#e = n(e("type"), localStorage.getItem(e("key"))), this.dispatchEvent(new Event("change"));
49
+ };
50
+ if (this.#e = n(e("type"), localStorage.getItem(e("key"))), this.hasAttribute("value") ? m(e("key"), this.#e = e("value")) : a(), this.hasAttribute("live")) {
51
+ const l = (r) => (r.detail.key === e("key") || !r.detail.key) && a();
52
+ window.addEventListener("local-storage", l), u(), this._destroy = () => window.removeEventListener("local-storage", l);
53
+ }
54
+ }
55
+ disconnectedCallback() {
56
+ this._destroy?.();
57
+ }
58
+ }
59
+ window.customElements.define("local-storage", v);
60
+ export {
61
+ v as L,
62
+ g as a,
63
+ d as b,
64
+ m as c,
65
+ c as l
66
+ };
@@ -8,7 +8,7 @@
8
8
  * - Please do NOT serve this file on production.
9
9
  */
10
10
 
11
- const PACKAGE_VERSION = '2.3.5'
11
+ const PACKAGE_VERSION = '2.4.5'
12
12
  const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423'
13
13
  const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
14
14
  const activeClientIds = new Set()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epa-wg/custom-element-dist",
3
- "version": "0.0.26",
3
+ "version": "0.0.27",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",
@@ -11,37 +11,39 @@
11
11
  "storybook": "storybook dev -p 6006",
12
12
  "build-storybook": "storybook build",
13
13
  "test": "node bin/vitest/vitest-browser-importmaps.mjs && vitest --coverage.enabled --coverage.all --no-file-parallelism --watch=false",
14
+ "test:ff": "yarn test --browser.name=firefox",
14
15
  "test:watch": "vitest --inspect-brk --no-file-parallelism --browser.headless=false --test-timeout=0",
15
16
  "test:storybook": "test-storybook",
16
17
  "sb": "yarn storybook",
17
- "t": "node ./node_modules/vitest/vitest.mjs --no-file-parallelism --watch --browser.headless=false src/stories/module-url.test.stories.ts"
18
+ "t": "node ./node_modules/vitest/vitest.mjs --no-file-parallelism --watch --browser.headless=false src/stories/module-url.test.stories.ts",
19
+ "tf": "node ./node_modules/vitest/vitest.mjs --no-file-parallelism --browser.name=firefox --watch --browser.headless=false src/stories/module-url.test.stories.ts"
18
20
  },
19
21
  "dependencies": {
20
- "@epa-wg/custom-element": "0.0.26"
22
+ "@epa-wg/custom-element": "0.0.27"
21
23
  },
22
24
  "devDependencies": {
23
- "@chromatic-com/storybook": "^1.7.0",
24
- "@storybook/addon-essentials": "^8.2.9",
25
- "@storybook/addon-interactions": "^8.2.9",
26
- "@storybook/addon-links": "^8.2.9",
27
- "@storybook/addon-mdx-gfm": "^8.2.9",
28
- "@storybook/blocks": "^8.2.9",
29
- "@storybook/test": "^8.2.9",
30
- "@storybook/test-runner": "^0.19.1",
31
- "@storybook/web-components": "^8.2.9",
32
- "@storybook/web-components-vite": "^8.2.9",
33
- "@vitest/browser": "^2.0.5",
34
- "@vitest/coverage-istanbul": "^2.0.5",
35
- "coverage-svg": "^0.0.3",
36
- "lit": "^3.2.0",
37
- "msw": "^2.3.5",
38
- "msw-storybook-addon": "^2.0.3",
39
- "playwright": "^1.46.1",
40
- "storybook": "^8.2.9",
41
- "typescript": "^5.5.4",
42
- "vite": "^5.4.2",
43
- "vitest": "^2.0.5",
44
- "webdriverio": "^9.0.7"
25
+ "@chromatic-com/storybook": "2.0.0",
26
+ "@storybook/addon-essentials": "8.2.9",
27
+ "@storybook/addon-interactions": "8.2.9",
28
+ "@storybook/addon-links": "8.2.9",
29
+ "@storybook/addon-mdx-gfm": "8.2.9",
30
+ "@storybook/blocks": "8.2.9",
31
+ "@storybook/test": "8.2.9",
32
+ "@storybook/test-runner": "0.19.1",
33
+ "@storybook/web-components": "8.2.9",
34
+ "@storybook/web-components-vite": "8.2.9",
35
+ "@vitest/browser": "2.0.5",
36
+ "@vitest/coverage-istanbul": "2.0.5",
37
+ "coverage-svg": "0.0.3",
38
+ "lit": "3.2.0",
39
+ "msw": "2.4.5",
40
+ "msw-storybook-addon": "2.0.3",
41
+ "playwright": "1.47.0",
42
+ "storybook": "8.2.9",
43
+ "typescript": "5.6.2",
44
+ "vite": "5.4.3",
45
+ "vitest": "2.0.5",
46
+ "webdriverio": "9.0.9"
45
47
  },
46
48
  "msw": {
47
49
  "workerDirectory": [
@@ -0,0 +1,27 @@
1
+ <svg id="dwc-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 216 209.18" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
+ <defs>
3
+
4
+ </defs>
5
+ <polygon class="cls-3" points="0 82.47 0 126.71 34.84 146.83 34.84 187.06 73.16 209.18 108 189.07 142.84 209.18 181.16 187.06 181.16 146.83 216 126.71 216 82.47 181.16 62.35 181.16 22.12 142.84 0 108 20.12 73.16 0 34.84 22.12 34.84 62.35 0 82.47"/>
6
+ <path class="cls-2" d="m114.33,56.69l20.64-11.92c.47-.27.47-.79,0-1.06l-20.65-11.92h0c-4.44-2.57-8.22-2.57-12.67,0l-20.65,11.92c-.47.27-.47.79,0,1.06l20.64,11.92c4.44,2.57,8.22,2.57,12.67,0h0Z"/>
7
+ <path class="cls-2" d="m98.19,62.71h0s-20.64-11.92-20.64-11.92c-.47-.27-.92-.01-.92.53v23.84s0,0,0,0c0,5.13,1.89,8.4,6.33,10.97l20.65,11.92c.47.27.92,0,.92-.54v-23.84c0-5.13-1.89-8.4-6.33-10.97Z"/>
8
+ <path class="cls-1" d="m48.12,66.01l20.65,11.92c.47.27.92,0,.92-.54v-23.84c0-5.13-1.89-8.4-6.33-10.97h0s-20.64-11.92-20.64-11.92c-.47-.27-.92-.01-.92.53v23.84s0,0,0,0c0,5.13,1.89,8.4,6.33,10.97Z"/>
9
+ <path class="cls-2" d="m46.18,24.66l20.64,11.92c4.44,2.57,8.22,2.57,12.67,0h0s20.64-11.92,20.64-11.92c.47-.27.47-.79,0-1.06l-20.65-11.92h0c-4.44-2.57-8.22-2.57-12.67,0l-20.65,11.92c-.47.27-.47.79,0,1.06Z"/>
10
+ <path class="cls-2" d="m115.87,24.66l20.64,11.92c4.44,2.57,8.22,2.57,12.67,0h0s20.64-11.92,20.64-11.92c.47-.27.47-.79,0-1.06l-20.65-11.92h0c-4.44-2.57-8.22-2.57-12.67,0l-20.65,11.92c-.47.27-.47.79,0,1.06Z"/>
11
+ <path class="cls-2" d="m152.65,42.59c-4.44,2.56-6.33,5.84-6.33,10.97v23.84c0,.54.45.8.92.54l20.65-11.92c4.44-2.57,6.33-5.84,6.33-10.97h0v-23.84c0-.54-.45-.8-.92-.53l-20.64,11.92h0Z"/>
12
+ <path class="cls-2" d="m77.55,158.4l20.65-11.92h0c4.44-2.57,6.33-5.84,6.33-10.97v-23.84c0-.54-.45-.8-.92-.53l-20.64,11.92c-4.44,2.57-6.33,5.84-6.33,10.97h0s0,23.84,0,23.84c0,.54.45.8.92.54Z"/>
13
+ <path class="cls-4" d="m146.31,134.03v23.84c0,.54.45.8.92.54l20.65-11.92c4.44-2.57,6.33-5.84,6.33-10.97h0s0-23.84,0-23.84c0-.54-.45-.8-.92-.53l-20.64,11.92h0c-4.44,2.57-6.33,5.84-6.33,10.97Z"/>
14
+ <path class="cls-4" d="m63.35,123.06h0s-20.64-11.92-20.64-11.92c-.47-.27-.92-.01-.92.53v23.84s0,0,0,0c0,5.13,1.89,8.4,6.33,10.97l20.65,11.92c.47.27.92,0,.92-.54v-23.84c0-5.13-1.89-8.4-6.33-10.97Z"/>
15
+ <path class="cls-4" d="m103.61,151.37l-20.64,11.92c-4.44,2.57-6.33,5.84-6.33,10.97h0s0,23.84,0,23.84c0,.54.45.8.92.54l20.65-11.92h0c4.44-2.57,6.33-5.84,6.33-10.97v-23.84c0-.54-.45-.8-.92-.53Z"/>
16
+ <path class="cls-4" d="m63.35,163.29h0s-20.64-11.92-20.64-11.92c-.47-.27-.92-.01-.92.53v23.84s0,0,0,0c0,5.13,1.89,8.4,6.33,10.97l20.65,11.92c.47.27.92,0,.92-.54v-23.84c0-5.13-1.89-8.4-6.33-10.97Z"/>
17
+ <path class="cls-4" d="m28.51,102.94h0s-20.64-11.92-20.64-11.92c-.47-.27-.92-.01-.92.53v23.84s0,0,0,0c0,5.13,1.89,8.4,6.33,10.97l20.65,11.92c.47.27.92,0,.92-.54v-23.84c0-5.13-1.89-8.4-6.33-10.97Z"/>
18
+ <path class="cls-4" d="m133.04,163.29l-20.64-11.92c-.47-.27-.92-.01-.92.53v23.84c0,5.13,1.89,8.4,6.33,10.97h0s20.65,11.92,20.65,11.92c.47.27.92,0,.92-.54v-23.84s0,0,0,0c0-5.13-1.89-8.4-6.33-10.97Z"/>
19
+ <path class="cls-4" d="m173.29,151.37l-20.64,11.92h0c-4.44,2.57-6.33,5.84-6.33,10.97v23.84c0,.54.45.8.92.54l20.65-11.92c4.44-2.57,6.33-5.84,6.33-10.97h0s0-23.84,0-23.84c0-.54-.45-.8-.92-.53Z"/>
20
+ <path class="cls-4" d="m209.06,91.55c0-.54-.45-.8-.92-.53l-20.64,11.92h0c-4.44,2.57-6.33,5.84-6.33,10.97v23.84c0,.54.45.8.92.54l20.65-11.92c4.44-2.57,6.33-5.84,6.33-10.97h0v-23.84Z"/>
21
+ <path class="cls-2" d="m149.18,117.04l20.64-11.92c.47-.27.47-.79,0-1.06l-20.65-11.92h0c-4.44-2.57-8.22-2.57-12.67,0l-20.65,11.92c-.47.27-.47.79,0,1.06l20.64,11.92c4.44,2.57,8.22,2.57,12.67,0h0Z"/>
22
+ <path class="cls-1" d="m112.39,98.05l20.65-11.92c4.44-2.57,6.33-5.84,6.33-10.97h0v-23.84c0-.54-.45-.8-.92-.53l-20.64,11.92h0c-4.44,2.57-6.33,5.84-6.33,10.97v23.84c0,.54.45.8.92.54Z"/>
23
+ <path class="cls-1" d="m100.13,105.12c.47-.27.47-.79,0-1.06l-20.65-11.92c-4.44-2.57-8.22-2.57-12.67,0h0s-20.65,11.92-20.65,11.92c-.47.27-.47.79,0,1.06l20.64,11.92h0c4.44,2.57,8.22,2.57,12.67,0l20.64-11.92Z"/>
24
+ <path class="cls-2" d="m65.29,85.01c.47-.27.47-.79,0-1.06l-20.65-11.92c-4.44-2.57-8.22-2.57-12.67,0h0s-20.65,11.92-20.65,11.92c-.47.27-.47.79,0,1.06l20.64,11.92h0c4.44,2.57,8.22,2.57,12.67,0l20.64-11.92Z"/>
25
+ <path class="cls-1" d="m133.04,123.06l-20.64-11.92c-.47-.27-.92-.01-.92.53v23.84c0,5.13,1.89,8.4,6.33,10.97h0s20.65,11.92,20.65,11.92c.47.27.92,0,.92-.54v-23.84s0,0,0,0c0-5.13-1.89-8.4-6.33-10.97Z"/>
26
+ <path class="cls-1" d="m184.02,96.93l20.64-11.92c.47-.27.47-.79,0-1.06l-20.65-11.92h0c-4.44-2.57-8.22-2.57-12.67,0l-20.65,11.92c-.47.27-.47.79,0,1.06l20.64,11.92c4.44,2.57,8.22,2.57,12.67,0h0Z"/>
27
+ </svg>
@@ -4,13 +4,12 @@ html
4
4
  }
5
5
  body,nav{ display: flex; flex-wrap: wrap; align-content: stretch; gap: 1rem; }
6
6
  body>*{flex: auto;}
7
- nav{ flex-direction: column;}
8
- custom-element+*,
9
- custom-element+*+*,
10
- custom-element:not([tag]),
11
- dce-link,dce-1-slot,dce-2-slot,dce-3-slot,dce-4-slot,dce-2-slots,greet-element,pokemon-tile,
12
- dce-1,dce-2,dce-3,dce-4,dce-internal,dce-hash
13
- { box-shadow: 0 0 0.5rem lime; padding: 1rem; display: inline-block; flex:1; }
7
+ nav
8
+ { flex-direction: column;
9
+ dce-root{ box-shadow:none; padding: 0;}
10
+ }
11
+
12
+ html-demo-element *:has(>dce-root){ box-shadow: 0 0 0.5rem lime; padding: 1rem; flex:1; display: block; }
14
13
  script{ display:none !important; }
15
14
  dd{ padding: 1rem;}
16
15
  p{ margin: 0;}
@@ -141,13 +141,13 @@
141
141
  <html-demo-element legend="6. HTML, SVG by ID within external file" description="Should render 👋, svg, formula">
142
142
  <a href="html-template.html">html-template.html</a>
143
143
  <template>
144
- <custom-element src="html-template.html#wave">
144
+ <custom-element src="./html-template.html#wave">
145
145
  <template><i>loading HTML from templates file ...</i></template>
146
146
  </custom-element>
147
- <custom-element src="html-template.html#dwc-logo">
147
+ <custom-element src="./html-template.html#dwc-logo">
148
148
  <template><i>loading SVG from templates file ...</i></template>
149
149
  </custom-element>
150
- <custom-element src="html-template.html#sophomores-dream">
150
+ <custom-element src="./html-template.html#sophomores-dream">
151
151
  <template><i>loading MathML from HTML file ...</i></template>
152
152
  </custom-element>
153
153
  </template>
@@ -4,8 +4,16 @@
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
5
  <title>DOM merge - Declarative Custom Element implementation demo</title>
6
6
  <link rel="icon" href="./wc-square.svg"/>
7
-
7
+ <script type="importmap">
8
+ {
9
+ "imports": {
10
+ "@epa-wg/custom-element/": "../",
11
+ "@epa-wg/custom-element-dist/": "../"
12
+ }
13
+ }
14
+ </script>
8
15
  <script type="module" src="../http-request.js"></script>
16
+ <script type="module" src="../location-element.js"></script>
9
17
  <script type="module" src="../custom-element.js"></script>
10
18
  <style>
11
19
  @import "./demo.css";
@@ -40,16 +48,20 @@
40
48
  <html-demo-element legend="1. NPM package version picker"
41
49
  description="defaults, last version should be preselected">
42
50
  <template>
43
- <custom-element tag="npm-version" src="./npm-versions.html#npm-version"></custom-element>
44
- <npm-version package-name="@epa-wg/custom-element-dist"></npm-version>
51
+ <custom-element src="./npm-versions.html#npm-version"
52
+ package-name="@epa-wg/custom-element-dist"></custom-element>
45
53
  </template>
46
54
  </html-demo-element>
47
55
 
48
56
  <html-demo-element legend="2. preselected NPM package version picker"
49
- description="version 22 should be selected">
57
+ description="version 22 should be selected and date shown">
50
58
  <template>
51
59
  <custom-element tag="custom-element-version" src="./npm-versions.html#npm-version"></custom-element>
52
- <custom-element-version current-version="0.0.22" package-name="@epa-wg/custom-element"></custom-element-version>
60
+ <custom-element-version
61
+ package-name="@epa-wg/custom-element"
62
+ current-version="0.0.22"
63
+ show-date="true"
64
+ ></custom-element-version>
53
65
  </template>
54
66
  </html-demo-element>
55
67
 
@@ -90,11 +102,12 @@
90
102
 
91
103
  <html-demo-element legend="5. control version in URL"
92
104
  description="">
93
- 1. <button onclick="window.location.hash = `#@epa-wg/custom-element-dist@0.0.26/storybook-static/index.html`">set in page URL</button>
94
- (can be skipped when run from unpkg.com)<br/>
105
+ 1. <button onclick="window.location.hash = `#@epa-wg/custom-element-dist@0.0.25/storybook-static/index.html`">set in page URL to version 0.0.25</button><br/>
95
106
  2. switch the package version in select and observe the URL change.
96
107
  <template>
97
- <custom-element src="./npm-versions.html#npm-version-to-url" package-name="custom-element-dist" current-version="0.0.26"></custom-element>
108
+ <custom-element src="@epa-wg/custom-element-dist/demo/npm-versions.html#npm-version-to-url"
109
+ package-name="@epa-wg/custom-element-dist"
110
+ ></custom-element>
98
111
  </template>
99
112
  </html-demo-element>
100
113
 
@@ -4,6 +4,7 @@
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
5
  <title>npm-version template</title>
6
6
  <link rel="icon" href="./wc-square.svg"/>
7
+
7
8
  </head>
8
9
  <body>
9
10
 
@@ -11,28 +12,29 @@
11
12
  <a href="./npm-versions-demo.html">docs</a>
12
13
  <template id="npm-version">
13
14
  <attribute name="package-name"></attribute>
14
- <attribute name="current-version"></attribute>
15
+ <attribute name="current-version" aria-description="version to select"></attribute>
16
+ <attribute name="show-date" aria-description="set to 'true' to append the date to the version"></attribute>
15
17
  <attribute name="value" select="//selected-version"></attribute>
16
-
17
18
  <http-request
18
- url="https://registry.npmjs.org/@epa-wg/custom-element-dist"
19
+ url="https://registry.npmjs.org/{$package-name}"
19
20
  method="GET"
20
21
  header-accept="application/json"
21
22
  slice="versions-ajax"></http-request>
22
23
 
23
- <label><slot name="label">{$package-name} version:</slot>
24
+ <label>
25
+ <slot name="label"><var>{$package-name}</var> version:</slot>
24
26
  <xhtml:select slice="selected-version" autocomplete="off" name="version">
25
27
  <for-each select="//versions/*">
26
28
  <option value="{./@version}">
27
29
  <variable name="item-version">{./@version}</variable>
28
- { $item-version } - { substring( //time/*[@dce-object-name = $item-version ], 1,10)}
30
+ { $item-version }<if test="$show-date = 'true' "> - { substring( //time/*[@dce-object-name = $item-version ], 1,10)}</if>
29
31
  </option>
30
32
  </for-each>
31
33
  <for-each select="//versions/*">
32
34
  <if test="./@version = $current-version">
33
35
  <option selected value="{./@version}">
34
36
  <variable name="item-version">{./@version}</variable>
35
- { $item-version } - { substring( //time/*[@dce-object-name = $item-version ], 1,10)}
37
+ { $item-version }<if test="$show-date = 'true' "> - { substring( //time/*[@dce-object-name = $item-version ], 1,10)}</if>
36
38
  </option>
37
39
  </if>
38
40
  </for-each>
@@ -41,25 +43,52 @@
41
43
  </template>
42
44
 
43
45
  <template id="npm-version-to-url">
44
- <variable name="url" select="//window-location/value/@href"></variable>
45
- <variable name="current-version" >0{
46
- substring-before(substring-after(substring($url, string-length(substring-before($url, '/')) - string-length(substring-before(substring-before($url, '/'), '@0')) + 2), '@0'), '/')
47
- }</variable>
48
- <location-element slice="window-location" live>
49
- <if test=" not(//selected-version = $current-version ) and not(//selected-version = '') ">
50
- <attribute name="src">{ concat( substring-before($url, $current-version),
51
- //selected-version,
52
- substring-after($url, $current-version) ) }</attribute>
53
- <attribute name="method">location.href</attribute>
54
- </if>
55
- </location-element>
56
- <http-request
57
- url="https://registry.npmjs.org/@epa-wg/custom-element-dist"
58
- method="GET"
59
- header-accept="application/json"
60
- slice="versions-ajax" ></http-request>
46
+ <attribute name="package-name"></attribute>
47
+ <attribute name="value" select="//selected-version"></attribute>
48
+ <variable name="url" select="//window-location/value/@href"></variable>
49
+
50
+ <variable name="url-version">0{
51
+ substring-before(substring-after(substring($url, string-length(substring-before($url, '/')) -
52
+ string-length(substring-before(substring-before($url, '/'), '@0')) + 2), '@0'), '/')
53
+ }</variable>
61
54
 
62
- <custom-element src="#npm-version" slice="selected-version"></custom-element>
63
- </template>
55
+ <location-element slice="window-location" live>
56
+ <if test="//selected-version">
57
+ <if test=" not(//url-version = //selected-version ) ">
58
+ <attribute name="src">{ concat( substring-before($url, $url-version),
59
+ //selected-version,
60
+ substring-after($url, $url-version) ) }
61
+ </attribute>
62
+ <attribute name="method">location.href</attribute>
63
+ </if>
64
+ </if>
65
+ </location-element>
66
+
67
+ <http-request
68
+ url="https://registry.npmjs.org/{$package-name}"
69
+ method="GET"
70
+ header-accept="application/json"
71
+ slice="versions-ajax"></http-request>
72
+
73
+ <label>
74
+ <slot name="label">{$package-name} version:</slot>
75
+ <xhtml:select slice="selected-version" autocomplete="off" name="version">
76
+ <for-each select="//versions/*">
77
+ <option value="{./@version}">
78
+ <variable name="item-version">{./@version}</variable>
79
+ { $item-version } - { substring( //time/*[@dce-object-name = $item-version ], 1,10)}
80
+ </option>
81
+ </for-each>
82
+ <for-each select="//versions/*">
83
+ <if test="./@version = $url-version">
84
+ <option selected value="{./@version}">
85
+ <variable name="item-version">{./@version}</variable>
86
+ { $item-version } - { substring( //time/*[@dce-object-name = $item-version ], 1,10)}
87
+ </option>
88
+ </if>
89
+ </for-each>
90
+ </xhtml:select>
91
+ </label>
92
+ </template>
64
93
  </body>
65
94
  </html>
package/public/demo/s.xml CHANGED
@@ -1,28 +1,3 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <datadom>
3
- <payload xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml">
4
- <span xmlns="http://www.w3.org/1999/xhtml" slot=""></span>
5
- <npm-version xmlns="http://www.w3.org/1999/xhtml" slice="selected-version" package-name="@epa-wg/custom-element"
6
- slot=""></npm-version>
7
- <span xmlns="http://www.w3.org/1999/xhtml" slot=""></span>
8
- <p xmlns="http://www.w3.org/1999/xhtml" slot="">
9
- <code>selected-version</code>
10
- slice: {//selected-version}
11
- </p>
12
- <span xmlns="http://www.w3.org/1999/xhtml" slot=""></span>
13
- </payload>
14
- <attributes>
15
- <tag>dce-bbc8e8b4-575f-40d3-9880-2f1d56d85d80</tag>
16
- </attributes>
17
- <dataset/>
18
- <slice>
19
- <selected-version xmlns="" slice="selected-version" package-name="@epa-wg/custom-element" data-dce-id="2"
20
- current-version="" value="0.0.21">
21
- <event isTrusted="false" sliceProcessed="1" type="change" eventPhase="2" bubbles="true" cancelable="false"
22
- defaultPrevented="false" composed="false" timeStamp="2225577.4000000954" returnValue="true"
23
- cancelBubble="false" NONE="0" CAPTURING_PHASE="1" AT_TARGET="2" BUBBLING_PHASE="3">
24
- <detail package-name="@epa-wg/custom-element"/>
25
- </event>
26
- </selected-version>
27
- </slice>
28
- </datadom>
1
+ <body xmlns="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><h4>embed-1.html</h4>
2
+ <custom-element><template>🖖</template></custom-element>
3
+ </body>