@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
@@ -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>
@@ -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>
@@ -1,97 +1,56 @@
1
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml"
2
- xmlns:dce="urn:schemas-epa-wg:dce" xmlns:exsl="http://exslt.org/common" version="1.0"
3
- exclude-result-prefixes="exsl">
4
- <xsl:template match="ignore">
5
- <xsl:choose>
6
- <xsl:when test="//attr">
7
- <xsl:value-of select="//attr"/>
8
- </xsl:when>
9
- <xsl:otherwise>
10
- <xsl:value-of select="def"/>
11
- </xsl:otherwise>
12
- </xsl:choose>
13
- <xsl:value-of select="."/>
14
- </xsl:template>
15
- <xsl:template mode="payload" match="attributes">
16
- <dce-root xmlns="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml" data-dce-id="1">
17
- <xsl:variable xmlns:xsl="http://www.w3.org/1999/XSL/Transform" name="methods">
18
- <a xmlns="" href="https://developer.mozilla.org/en-US/docs/Web/API/Location/href" data-dce-id="2">
19
- location.href
20
- </a>
21
- <a xmlns="" href="https://developer.mozilla.org/en-US/docs/Web/API/Location/hash" data-dce-id="3">
22
- location.hash
23
- </a>
24
- <a xmlns="" href="https://developer.mozilla.org/en-US/docs/Web/API/Location/assign" data-dce-id="4">
25
- location.assign
26
- </a>
27
- </xsl:variable>
28
- <fieldset xmlns="" data-dce-id="5">
29
- <legend data-dce-id="6">
30
- <b data-dce-id="7">set-by</b>
31
- </legend>
32
- <xsl:for-each xmlns:xsl="http://www.w3.org/1999/XSL/Transform" select="$methods">
33
- <p data-dce-id="8">
34
- <label data-dce-id="9">
35
- <input type="radio" name="method" value="{.}" data-dce-id="10"/>
36
- <dce-text data-dce-id="11">
37
- <xsl:value-of select="."/>
38
- </dce-text>
39
- </label>
40
- <a class="infolink" href="https://developer.mozilla.org/en-US/docs/Web/API/Location/assign"
41
- data-dce-id="12">mdn
42
- </a>
43
- </p>
44
- </xsl:for-each>
45
- <label data-dce-id="13">
46
- <input type="radio" name="method" value="location.href" data-dce-id="14"/>
47
- <dce-text data-dce-id="15">location.href</dce-text>
48
- </label>
49
- <label data-dce-id="16">
50
- <input type="radio" name="method" value="location" data-dce-id="17"/>
51
- <dce-text data-dce-id="18">location</dce-text>
52
- </label>
53
- <label data-dce-id="19">
54
- <input type="radio" name="method" value="location.replace" data-dce-id="20"/>
55
- <dce-text data-dce-id="21">location.replace</dce-text>
56
- </label>
57
- <label data-dce-id="22">
58
- <input type="radio" name="method" value="location.assign" data-dce-id="23"/>
59
- <dce-text data-dce-id="24">location.assign</dce-text>
60
- </label>
61
- <label data-dce-id="25">
62
- <input type="radio" name="method" value="location.hash" data-dce-id="26"/>
63
- <dce-text data-dce-id="27">location.hash</dce-text>
64
- </label>
65
- <label data-dce-id="28">
66
- <input type="radio" name="method" value="history.pushState" data-dce-id="29"/>
67
- <dce-text data-dce-id="30">history.pushState</dce-text>
68
- </label>
69
- <label data-dce-id="31">
70
- <input type="radio" name="method" value="history.replaceState" data-dce-id="32"/>
71
- <dce-text data-dce-id="33">history.replaceState</dce-text>
72
- </label>
73
- </fieldset>
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <xsl:stylesheet version="1.0"
3
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
5
+ >
6
+ <xsl:output method="xml"/>
7
+ <xsl:template match="/">
8
+ <dce-root >
9
+ <xsl:apply-templates select="*"/>
74
10
  </dce-root>
75
11
  </xsl:template>
76
- <xsl:template match="/">
77
- <xsl:apply-templates mode="payload" select="/datadom/attributes"/>
12
+ <xsl:template match="*[name()='template']">
13
+ <xsl:apply-templates mode="sanitize" select="*|text()"/>
14
+ </xsl:template>
15
+ <xsl:template match="*">
16
+ <xsl:apply-templates mode="sanitize" select="*|text()"/>
17
+ </xsl:template>
18
+ <xsl:template match="*[name()='svg']|*[name()='math']">
19
+ <xsl:apply-templates mode="sanitize" select="."/>
20
+ </xsl:template>
21
+ <xsl:template mode="sanitize" match="*[count(text())=1 and count(*)=0]">
22
+ <xsl:copy>
23
+ <xsl:apply-templates mode="sanitize" select="@*"/>
24
+ <xsl:value-of select="text()"></xsl:value-of>
25
+ </xsl:copy>
26
+ </xsl:template>
27
+ <xsl:template mode="sanitize" match="xhtml:*[count(text())=1 and count(*)=0]">
28
+ <xsl:element name="{local-name()}">
29
+ <xsl:apply-templates mode="sanitize" select="@*"/>
30
+ <xsl:value-of select="text()"></xsl:value-of>
31
+ </xsl:element>
32
+ </xsl:template>
33
+ <xsl:template mode="sanitize" match="*|@*">
34
+ <xsl:copy>
35
+ <xsl:apply-templates mode="sanitize" select="*|@*|text()"/>
36
+ </xsl:copy>
37
+ </xsl:template>
38
+ <xsl:template mode="sanitize" match="text()[normalize-space(.) = '']"/>
39
+ <xsl:template mode="sanitize" match="text()">
40
+ <dce-text>
41
+ <xsl:copy/>
42
+ </dce-text>
43
+ </xsl:template>
44
+ <xsl:template mode="sanitize" match="xsl:value-of|*[name()='slot']">
45
+ <dce-text>
46
+ <xsl:copy>
47
+ <xsl:apply-templates mode="sanitize" select="*|@*|text()"/>
48
+ </xsl:copy>
49
+ </dce-text>
78
50
  </xsl:template>
79
- <xsl:template name="slot">
80
- <xsl:param name="slotname"/>
81
- <xsl:param name="defaultvalue"/>
82
- <xsl:choose>
83
- <xsl:when test="//payload/*[@slot=$slotname]">
84
- <xsl:copy-of select="//payload/*[@slot=$slotname]"/>
85
- </xsl:when>
86
- <xsl:otherwise>
87
- <xsl:copy-of select="$defaultvalue"/>
88
- </xsl:otherwise>
89
- </xsl:choose>
51
+ <xsl:template mode="sanitize" match="xhtml:*">
52
+ <xsl:element name="{local-name()}">
53
+ <xsl:apply-templates mode="sanitize" select="*|@*|text()"/>
54
+ </xsl:element>
90
55
  </xsl:template>
91
- <xsl:variable name="js-injected-body">
92
- <xsl:call-template name="slot">
93
- <xsl:with-param name="slotname" select="''"/>
94
- <xsl:with-param name="defaultvalue"/>
95
- </xsl:call-template>
96
- </xsl:variable>
97
56
  </xsl:stylesheet>
@@ -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>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/web-types",
3
3
  "name": "@epa-wg/custom-element",
4
- "version": "0.0.26",
4
+ "version": "0.0.27",
5
5
  "js-types-syntax": "typescript",
6
6
  "description-markup": "markdown",
7
7
  "contributions": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/web-types",
3
3
  "name": "@epa-wg/custom-element",
4
- "version": "0.0.26",
4
+ "version": "0.0.27",
5
5
  "js-types-syntax": "typescript",
6
6
  "description-markup": "markdown",
7
7
  "contributions": {
@@ -4,7 +4,17 @@
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
5
  <title>custom-element Declarative Custom Element implementation demo</title>
6
6
  <link rel="icon" href="demo/wc-square.svg" />
7
- <script type="module" src="custom-element.js"></script>
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>
8
18
  <style>
9
19
  @import "demo/demo.css";
10
20
  </style>
@@ -18,6 +28,12 @@
18
28
  | <a href="https://stackblitz.com/github/EPA-WG/custom-element?file=index.html">Sandbox</a>
19
29
  | <a href="https://chrome.google.com/webstore/detail/epa-wgcustom-element/hiofgpmmkdembdogjpagmbbbmefefhbl"
20
30
  >Chrome devtools plugin</a>
31
+ | <custom-element src="@epa-wg/custom-element/demo/npm-versions.html#npm-version-to-url"
32
+ slice="selected" package-name="@epa-wg/custom-element">
33
+ <i slot="label">version:</i>
34
+ </custom-element>
35
+
36
+
21
37
  </div>
22
38
  <p>
23
39
  This <em>Declarative Custom Element</em> allows to define<br/>
@@ -38,7 +54,8 @@
38
54
  <a href="./demo/parameters.html" >attributes </a> |
39
55
  <a href="./demo/data-slices.html" >data slices/events </a> |
40
56
  <a href="./demo/form.html" >Form validation </a> |
41
- <a href="./demo/dom-merge.html" >DOM merge on dynamic update </a>
57
+ <a href="./demo/dom-merge.html" >DOM merge on dynamic update </a><br/>
58
+ <a href="./demo/npm-versions-demo.html">npm version </a>
42
59
  </section>
43
60
  </nav>
44
61
  <html-demo-element legend="1. simple payload"
@@ -21,29 +21,34 @@ const string2value = (type, v) =>
21
21
 
22
22
  let originalSetItem,originalRemoveItem,originalClear;
23
23
 
24
+ export function localStorage_setItem( key, value )
25
+ { originalSetItem.call(localStorage, key, value);
26
+ window.dispatchEvent( new CustomEvent('local-storage',{detail:{key,value}}) );
27
+ }
28
+ export function localStorage_removeItem( key )
29
+ { originalRemoveItem.call(localStorage, key);
30
+ window.dispatchEvent( new CustomEvent('local-storage',{detail:{key}}) );
31
+ }
32
+
33
+ export function localStorage_clear()
34
+ { originalClear.call(localStorage);
35
+ window.dispatchEvent( new CustomEvent('local-storage',{detail:{}}) );
36
+ }
37
+
24
38
  function ensureTrackLocalStorage()
25
39
  { if( originalSetItem )
26
40
  return;
27
41
  originalSetItem = localStorage.setItem;
28
- localStorage.setItem = function( key, value, ...rest )
29
- { originalSetItem.apply(this, [ key, value, ...rest ]);
30
- window.dispatchEvent( new CustomEvent('local-storage',{detail:{key,value}}) );
31
- };
42
+ localStorage.setItem = localStorage_setItem;
32
43
  originalRemoveItem = localStorage.removeItem;
33
- localStorage.removeItem = function( key, ...rest )
34
- { originalRemoveItem.apply(this, [ key, ...rest ]);
35
- window.dispatchEvent( new CustomEvent('local-storage',{detail:{key}}) );
36
- };
44
+ localStorage.removeItem = localStorage_removeItem;
37
45
  originalClear = localStorage.clear;
38
- localStorage.clear = function( ...rest )
39
- { originalClear.apply(this, [ ...rest ]);
40
- window.dispatchEvent( new CustomEvent('local-storage',{detail:{}}) );
41
- };
46
+ localStorage.clear = localStorage_clear;
42
47
  }
48
+ ensureTrackLocalStorage();
43
49
 
44
50
  export function localStorageSetItem(key, value)
45
- { localStorage.setItem(key, value);
46
- window.dispatchEvent( new CustomEvent('local-storage',{detail:{key,value}}) );
51
+ { localStorage_setItem(key, value);
47
52
  }
48
53
  export class LocalStorageElement extends HTMLElement
49
54
  {
@@ -10,9 +10,10 @@ export class ModuleUrl extends HTMLElement
10
10
 
11
11
  sliceInit()
12
12
  { let path = attr(this,'src');
13
+
13
14
  try
14
15
  { const url = '.' === path.charAt(0)
15
- ? new URL(path, this.closest('[base]')?.getAttribute('base') ).href
16
+ ? new URL(path, this.closest('[base]')?.getAttribute('base') || location.href).href
16
17
  : import.meta.resolve(path);
17
18
  this.setAttribute('value',this.value = url );
18
19
  }catch( er )
@@ -30,4 +31,4 @@ export class ModuleUrl extends HTMLElement
30
31
  }
31
32
 
32
33
  window.customElements.define( 'module-url', ModuleUrl );
33
- export default ModuleUrl;
34
+ export default ModuleUrl;
@@ -3,7 +3,7 @@ export default {
3
3
  "_rev": "5-df363ab4a2b9c478c01e021bde4fbafe",
4
4
  "name": "@epa-wg/custom-element-dist",
5
5
  "dist-tags": {
6
- "latest": "0.0.26"
6
+ "latest": "0.0.27"
7
7
  },
8
8
  "versions": {
9
9
  "0.0.1": {
@@ -617,9 +617,9 @@ export default {
617
617
  "host": "s3://npm-registry-packages"
618
618
  }
619
619
  },
620
- "0.0.26": {
620
+ "0.0.27": {
621
621
  "name": "@epa-wg/custom-element-dist",
622
- "version": "0.0.26",
622
+ "version": "0.0.27",
623
623
  "type": "module",
624
624
  "scripts": {
625
625
  "dev": "vite",
@@ -636,7 +636,7 @@ export default {
636
636
  "t": "vitest --no-file-parallelism --watch --browser.headless=false src/stories/attributes.test.stories.ts"
637
637
  },
638
638
  "dependencies": {
639
- "@epa-wg/custom-element": "0.0.26"
639
+ "@epa-wg/custom-element": "0.0.27"
640
640
  },
641
641
  "devDependencies": {
642
642
  "@chromatic-com/storybook": "^1.3.3",
@@ -707,7 +707,7 @@ export default {
707
707
  "./src/custom-element/ide/web-types-dce.json",
708
708
  "./src/custom-element/ide/web-types-xsl.json"
709
709
  ],
710
- "_id": "@epa-wg/custom-element-dist@0.0.26",
710
+ "_id": "@epa-wg/custom-element-dist@0.0.27",
711
711
  "gitHead": "a6a84bdc2cc433acf3d3afa827556c79ecacffb8",
712
712
  "description": "Binary distribution for [@epa-wg/custom-element][git-url] with StoryBook and test coverage",
713
713
  "_nodeVersion": "20.8.1",
@@ -715,7 +715,7 @@ export default {
715
715
  "dist": {
716
716
  "integrity": "sha512-ISVPKkirFGvTTNFanf9WxOTeEBJrAyjuebqQSJiH97QHgG7pxQQAWUC4heBRbJ9kUo5FUmBDph2d9Rep/POCDw==",
717
717
  "shasum": "1a68a8bc37315cbcab0f66247aa54c82d7bc159d",
718
- "tarball": "https://registry.npmjs.org/@epa-wg/custom-element-dist/-/custom-element-dist-0.0.26.tgz",
718
+ "tarball": "https://registry.npmjs.org/@epa-wg/custom-element-dist/-/custom-element-dist-0.0.27.tgz",
719
719
  "fileCount": 299,
720
720
  "unpackedSize": 9437753,
721
721
  "signatures": [
@@ -751,7 +751,7 @@ export default {
751
751
  "0.0.22": "2024-06-25T03:55:52.525Z",
752
752
  "0.0.23": "2024-06-27T03:25:14.314Z",
753
753
  "0.0.24": "2024-07-22T03:10:12.564Z",
754
- "0.0.26": "2024-08-06T07:29:39.264Z"
754
+ "0.0.27": "2024-08-06T07:29:39.264Z"
755
755
  },
756
756
  "bugs": {
757
757
  "url": "https://github.com/EPA-WG/custom-element/issues"
@@ -781,6 +781,6 @@ export default {
781
781
  "email": "suns@simulationworks.com"
782
782
  }
783
783
  ],
784
- "readme": "# custom-element-dist\nBinary distribution for [@epa-wg/custom-element][git-url] with StoryBook and test coverage\n\n`custom-element` [![git][github-image] GitHub][git-url]\n| [tests project][git-test-url]\n| [![NPM version][npm-image]][npm-url]\n| [![coverage][coverage-image]][coverage-url]\n| [StoryBook][sb-url]\n\n# Content\n[bin/build.sh] generates binaries to be kept as in Git release as in NPM package.\nIt serves the record of compliance on the moment of build.\n## [dist](dist)\nCan be used as CDN entry with minified bundle: [custom-element-bundle.js][bundle-url]\n\nEach individual component of `custom-element` lib is available as hashed JS.\n\n## [coverage](coverage)\nProvides the unit test coverage for lib and StoryBooks\n\n## [storybook-static][sb-url]\nCDN version of StoryBook.\n\n[git-url]: https://github.com/EPA-WG/custom-element\n[git-test-url]: https://github.com/EPA-WG/custom-element-dist\n[github-image]: https://cdnjs.cloudflare.com/ajax/libs/octicons/8.5.0/svg/mark-github.svg\n[npm-image]: https://img.shields.io/npm/v/@epa-wg/custom-element-dist.svg\n[npm-url]: https://npmjs.org/package/@epa-wg/custom-element-dist\n[coverage-image]: https://unpkg.com/@epa-wg/custom-element-dist@0.0.26/coverage/src/custom-element/coverage.svg\n[coverage-url]: https://unpkg.com/@epa-wg/custom-element-dist@0.0.26/coverage/src/custom-element/index.html\n[sb-url]: https://unpkg.com/@epa-wg/custom-element-dist@0.0.26/storybook-static/index.html\n[bundle-url]: https://unpkg.com/@epa-wg/custom-element-dist@0.0.26/dist/custom-element-bundle.js\n",
784
+ "readme": "# custom-element-dist\nBinary distribution for [@epa-wg/custom-element][git-url] with StoryBook and test coverage\n\n`custom-element` [![git][github-image] GitHub][git-url]\n| [tests project][git-test-url]\n| [![NPM version][npm-image]][npm-url]\n| [![coverage][coverage-image]][coverage-url]\n| [StoryBook][sb-url]\n\n# Content\n[bin/build.sh] generates binaries to be kept as in Git release as in NPM package.\nIt serves the record of compliance on the moment of build.\n## [dist](dist)\nCan be used as CDN entry with minified bundle: [custom-element-bundle.js][bundle-url]\n\nEach individual component of `custom-element` lib is available as hashed JS.\n\n## [coverage](coverage)\nProvides the unit test coverage for lib and StoryBooks\n\n## [storybook-static][sb-url]\nCDN version of StoryBook.\n\n[git-url]: https://github.com/EPA-WG/custom-element\n[git-test-url]: https://github.com/EPA-WG/custom-element-dist\n[github-image]: https://cdnjs.cloudflare.com/ajax/libs/octicons/8.5.0/svg/mark-github.svg\n[npm-image]: https://img.shields.io/npm/v/@epa-wg/custom-element-dist.svg\n[npm-url]: https://npmjs.org/package/@epa-wg/custom-element-dist\n[coverage-image]: https://unpkg.com/@epa-wg/custom-element-dist@0.0.27/coverage/src/custom-element/coverage.svg\n[coverage-url]: https://unpkg.com/@epa-wg/custom-element-dist@0.0.27/coverage/src/custom-element/index.html\n[sb-url]: https://unpkg.com/@epa-wg/custom-element-dist@0.0.27/storybook-static/index.html\n[bundle-url]: https://unpkg.com/@epa-wg/custom-element-dist@0.0.27/dist/custom-element-bundle.js\n",
785
785
  "readmeFilename": "README.md"
786
786
  }