@microsoft/fast-element 3.0.0-rc.1 → 3.0.0-rc.2

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 (286) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/README.md +50 -14
  3. package/dist/context/context.api.json +13 -13
  4. package/dist/declarative/declarative.api.json +654 -15
  5. package/dist/di/di.api.json +15 -15
  6. package/dist/dts/__test__/helpers.d.ts +6 -0
  7. package/dist/dts/__test__/setup-node.d.ts +0 -0
  8. package/dist/dts/binding/binding.d.ts +15 -5
  9. package/dist/dts/binding/one-time.d.ts +1 -1
  10. package/dist/dts/binding/one-way.d.ts +1 -1
  11. package/dist/dts/binding/signal.d.ts +1 -1
  12. package/dist/dts/binding/two-way.d.ts +1 -1
  13. package/dist/dts/components/attributes.d.ts +1 -1
  14. package/dist/dts/components/enable-hydration.d.ts +22 -2
  15. package/dist/dts/components/fast-definitions.d.ts +7 -4
  16. package/dist/dts/components/fast-element.d.ts +42 -12
  17. package/dist/dts/components/hydration-tracker.d.ts +47 -4
  18. package/dist/dts/components/hydration.d.ts +5 -0
  19. package/dist/dts/context.d.ts +7 -7
  20. package/dist/dts/declarative/debug.d.ts +2 -3
  21. package/dist/dts/declarative/index.d.ts +3 -2
  22. package/dist/dts/declarative/interfaces.d.ts +1 -2
  23. package/dist/dts/declarative/template.d.ts +2 -1
  24. package/dist/dts/declarative/utilities.d.ts +50 -4
  25. package/dist/dts/di/di.d.ts +6 -6
  26. package/dist/dts/dom-policy.d.ts +22 -4
  27. package/dist/dts/dom.d.ts +4 -16
  28. package/dist/dts/hydration/diagnostics.d.ts +93 -0
  29. package/dist/dts/hydration/hydration-debugger.d.ts +35 -0
  30. package/dist/dts/hydration/messages.d.ts +62 -0
  31. package/dist/dts/hydration/target-builder.d.ts +26 -1
  32. package/dist/dts/hydration.d.ts +7 -3
  33. package/dist/dts/index.d.ts +7 -3
  34. package/dist/dts/interfaces.d.ts +1 -0
  35. package/dist/dts/observation/observable.d.ts +3 -3
  36. package/dist/dts/platform.d.ts +20 -4
  37. package/dist/dts/registry.d.ts +1 -0
  38. package/dist/dts/templating/children.d.ts +1 -1
  39. package/dist/dts/templating/compiler.d.ts +1 -1
  40. package/dist/dts/templating/html-binding-directive.d.ts +6 -2
  41. package/dist/dts/templating/html-directive.d.ts +2 -1
  42. package/dist/dts/templating/hydration-view.d.ts +24 -3
  43. package/dist/dts/templating/ref.d.ts +1 -1
  44. package/dist/dts/templating/render.d.ts +2 -2
  45. package/dist/dts/templating/repeat.d.ts +1 -1
  46. package/dist/dts/templating/slotted.d.ts +1 -1
  47. package/dist/dts/templating/template.d.ts +5 -5
  48. package/dist/dts/templating/when.d.ts +1 -1
  49. package/dist/dts/testing/fakes.d.ts +4 -4
  50. package/dist/esm/__test__/helpers.js +22 -0
  51. package/dist/esm/__test__/setup-node.js +18 -0
  52. package/dist/esm/binding/two-way.js +1 -2
  53. package/dist/esm/components/attributes.js +12 -8
  54. package/dist/esm/components/element-controller.js +11 -6
  55. package/dist/esm/components/enable-hydration.js +27 -3
  56. package/dist/esm/components/fast-definitions.js +19 -18
  57. package/dist/esm/components/hydration-tracker.js +34 -5
  58. package/dist/esm/components/hydration.js +85 -6
  59. package/dist/esm/debug.js +1 -0
  60. package/dist/esm/declarative/attribute-map.js +2 -1
  61. package/dist/esm/declarative/debug.js +0 -1
  62. package/dist/esm/declarative/index.js +1 -0
  63. package/dist/esm/declarative/interfaces.js +0 -1
  64. package/dist/esm/declarative/observer-map-utilities.js +58 -55
  65. package/dist/esm/declarative/template-bridge.js +4 -14
  66. package/dist/esm/declarative/template.js +4 -3
  67. package/dist/esm/declarative/utilities.js +236 -1
  68. package/dist/esm/di/di.js +2 -1
  69. package/dist/esm/dom-policy.js +33 -4
  70. package/dist/esm/hydration/diagnostics.js +50 -0
  71. package/dist/esm/hydration/hydration-debugger.js +112 -0
  72. package/dist/esm/hydration/messages.js +84 -0
  73. package/dist/esm/hydration/target-builder.js +65 -19
  74. package/dist/esm/hydration.js +3 -1
  75. package/dist/esm/index.js +6 -2
  76. package/dist/esm/interfaces.js +1 -0
  77. package/dist/esm/metadata.js +2 -8
  78. package/dist/esm/observation/notifier.js +2 -4
  79. package/dist/esm/registry.js +1 -0
  80. package/dist/esm/templating/html-binding-directive.js +1 -1
  81. package/dist/esm/templating/hydration-view.js +20 -27
  82. package/dist/esm/templating/render.js +39 -18
  83. package/dist/esm/templating/repeat.js +51 -17
  84. package/dist/esm/templating/view.js +1 -1
  85. package/dist/esm/testing/fixture.js +2 -2
  86. package/dist/esm/testing/timeout.js +2 -2
  87. package/dist/fast-element.api.json +1329 -99
  88. package/dist/fast-element.d.ts +147 -66
  89. package/dist/fast-element.debug.js +392 -99
  90. package/dist/fast-element.debug.min.js +2 -2
  91. package/dist/fast-element.js +392 -99
  92. package/dist/fast-element.min.js +2 -2
  93. package/dist/fast-element.untrimmed.d.ts +133 -70
  94. package/dist/hydration/hydration.api.json +1280 -57
  95. package/dist/styles/styles.api.json +1 -1
  96. package/package.json +21 -9
  97. package/ARCHITECTURE_FASTELEMENT.md +0 -63
  98. package/ARCHITECTURE_HTML_TAGGED_TEMPLATE_LITERAL.md +0 -36
  99. package/ARCHITECTURE_INTRO.md +0 -10
  100. package/ARCHITECTURE_OVERVIEW.md +0 -52
  101. package/ARCHITECTURE_UPDATES.md +0 -11
  102. package/CHANGELOG.json +0 -2275
  103. package/DECLARATIVE_DESIGN.md +0 -806
  104. package/DECLARATIVE_HTML.md +0 -470
  105. package/DECLARATIVE_MIGRATION.md +0 -215
  106. package/DECLARATIVE_RENDERING.md +0 -530
  107. package/DECLARATIVE_RENDERING_LIFECYCLE.md +0 -288
  108. package/DECLARATIVE_SCHEMA_OBSERVER_MAP.md +0 -489
  109. package/DESIGN.md +0 -615
  110. package/MIGRATION.md +0 -387
  111. package/SIZES.md +0 -25
  112. package/api-extractor.arrays.json +0 -15
  113. package/api-extractor.context.json +0 -15
  114. package/api-extractor.declarative.json +0 -15
  115. package/api-extractor.di.json +0 -15
  116. package/api-extractor.hydration.json +0 -15
  117. package/api-extractor.styles.json +0 -15
  118. package/biome.json +0 -4
  119. package/docs/ACKNOWLEDGEMENTS.md +0 -12
  120. package/docs/api-report.api.md +0 -1299
  121. package/docs/arrays/api-report.api.md +0 -114
  122. package/docs/context/api-report.api.md +0 -69
  123. package/docs/declarative/api-report.api.md +0 -397
  124. package/docs/di/api-report.api.md +0 -315
  125. package/docs/fast-element-2-changes.md +0 -15
  126. package/docs/hydration/api-report.api.md +0 -285
  127. package/docs/styles/api-report.api.md +0 -135
  128. package/playwright.config.ts +0 -26
  129. package/playwright.declarative.config.ts +0 -26
  130. package/playwright.declarative.webui.config.ts +0 -20
  131. package/scripts/declarative/build-fixtures-with-webui.js +0 -135
  132. package/scripts/declarative/build-fixtures.js +0 -49
  133. package/scripts/declarative/build-fixtures.utilities.js +0 -101
  134. package/scripts/measure-sizes.js +0 -219
  135. package/scripts/run-api-extractor.js +0 -70
  136. package/test/declarative/fixtures/README.md +0 -72
  137. package/test/declarative/fixtures/WRITING_FIXTURES.md +0 -330
  138. package/test/declarative/fixtures/bindings/README.md +0 -12
  139. package/test/declarative/fixtures/bindings/attribute/entry.html +0 -13
  140. package/test/declarative/fixtures/bindings/attribute/fast-build.config.json +0 -6
  141. package/test/declarative/fixtures/bindings/attribute/index.html +0 -25
  142. package/test/declarative/fixtures/bindings/attribute/main.ts +0 -41
  143. package/test/declarative/fixtures/bindings/attribute/state.json +0 -8
  144. package/test/declarative/fixtures/bindings/attribute/templates.html +0 -11
  145. package/test/declarative/fixtures/bindings/content/entry.html +0 -12
  146. package/test/declarative/fixtures/bindings/content/fast-build.config.json +0 -6
  147. package/test/declarative/fixtures/bindings/content/index.html +0 -19
  148. package/test/declarative/fixtures/bindings/content/main.ts +0 -27
  149. package/test/declarative/fixtures/bindings/content/state.json +0 -4
  150. package/test/declarative/fixtures/bindings/content/templates.html +0 -6
  151. package/test/declarative/fixtures/bindings/dot-syntax/entry.html +0 -11
  152. package/test/declarative/fixtures/bindings/dot-syntax/fast-build.config.json +0 -6
  153. package/test/declarative/fixtures/bindings/dot-syntax/index.html +0 -47
  154. package/test/declarative/fixtures/bindings/dot-syntax/main.ts +0 -59
  155. package/test/declarative/fixtures/bindings/dot-syntax/state.json +0 -16
  156. package/test/declarative/fixtures/bindings/dot-syntax/templates.html +0 -17
  157. package/test/declarative/fixtures/bindings/event/entry.html +0 -11
  158. package/test/declarative/fixtures/bindings/event/fast-build.config.json +0 -6
  159. package/test/declarative/fixtures/bindings/event/index.html +0 -43
  160. package/test/declarative/fixtures/bindings/event/main.ts +0 -43
  161. package/test/declarative/fixtures/bindings/event/state.json +0 -3
  162. package/test/declarative/fixtures/bindings/event/templates.html +0 -18
  163. package/test/declarative/fixtures/bindings/host/entry.html +0 -40
  164. package/test/declarative/fixtures/bindings/host/fast-build.config.json +0 -6
  165. package/test/declarative/fixtures/bindings/host/index.html +0 -96
  166. package/test/declarative/fixtures/bindings/host/main.ts +0 -222
  167. package/test/declarative/fixtures/bindings/host/state.json +0 -9
  168. package/test/declarative/fixtures/bindings/host/templates.html +0 -55
  169. package/test/declarative/fixtures/directives/README.md +0 -12
  170. package/test/declarative/fixtures/directives/children/entry.html +0 -11
  171. package/test/declarative/fixtures/directives/children/fast-build.config.json +0 -6
  172. package/test/declarative/fixtures/directives/children/index.html +0 -15
  173. package/test/declarative/fixtures/directives/children/main.ts +0 -22
  174. package/test/declarative/fixtures/directives/children/state.json +0 -3
  175. package/test/declarative/fixtures/directives/children/templates.html +0 -3
  176. package/test/declarative/fixtures/directives/ref/entry.html +0 -11
  177. package/test/declarative/fixtures/directives/ref/fast-build.config.json +0 -6
  178. package/test/declarative/fixtures/directives/ref/index.html +0 -15
  179. package/test/declarative/fixtures/directives/ref/main.ts +0 -17
  180. package/test/declarative/fixtures/directives/ref/state.json +0 -1
  181. package/test/declarative/fixtures/directives/ref/templates.html +0 -3
  182. package/test/declarative/fixtures/directives/repeat/entry.html +0 -21
  183. package/test/declarative/fixtures/directives/repeat/fast-build.config.json +0 -6
  184. package/test/declarative/fixtures/directives/repeat/index.html +0 -133
  185. package/test/declarative/fixtures/directives/repeat/main.ts +0 -110
  186. package/test/declarative/fixtures/directives/repeat/sprites.svg +0 -8
  187. package/test/declarative/fixtures/directives/repeat/state.json +0 -10
  188. package/test/declarative/fixtures/directives/repeat/templates.html +0 -75
  189. package/test/declarative/fixtures/directives/slotted/entry.html +0 -17
  190. package/test/declarative/fixtures/directives/slotted/fast-build.config.json +0 -6
  191. package/test/declarative/fixtures/directives/slotted/index.html +0 -27
  192. package/test/declarative/fixtures/directives/slotted/main.ts +0 -29
  193. package/test/declarative/fixtures/directives/slotted/state.json +0 -1
  194. package/test/declarative/fixtures/directives/slotted/templates.html +0 -7
  195. package/test/declarative/fixtures/directives/when/entry.html +0 -51
  196. package/test/declarative/fixtures/directives/when/fast-build.config.json +0 -6
  197. package/test/declarative/fixtures/directives/when/index.html +0 -136
  198. package/test/declarative/fixtures/directives/when/main.ts +0 -172
  199. package/test/declarative/fixtures/directives/when/state.json +0 -12
  200. package/test/declarative/fixtures/directives/when/templates.html +0 -75
  201. package/test/declarative/fixtures/ecosystem/README.md +0 -11
  202. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/entry.html +0 -12
  203. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/fast-build.config.json +0 -6
  204. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/index.html +0 -20
  205. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/main.ts +0 -68
  206. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/state.json +0 -4
  207. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/templates.html +0 -7
  208. package/test/declarative/fixtures/ecosystem/errors/entry.html +0 -12
  209. package/test/declarative/fixtures/ecosystem/errors/fast-build.config.json +0 -6
  210. package/test/declarative/fixtures/ecosystem/errors/index.html +0 -20
  211. package/test/declarative/fixtures/ecosystem/errors/main.ts +0 -17
  212. package/test/declarative/fixtures/ecosystem/errors/state.json +0 -1
  213. package/test/declarative/fixtures/ecosystem/errors/templates.html +0 -7
  214. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/entry.html +0 -17
  215. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/fast-build.config.json +0 -6
  216. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/index.html +0 -56
  217. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/main.ts +0 -134
  218. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/state.json +0 -12
  219. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/templates.html +0 -34
  220. package/test/declarative/fixtures/ecosystem/performance-metrics/entry.html +0 -25
  221. package/test/declarative/fixtures/ecosystem/performance-metrics/fast-build.config.json +0 -6
  222. package/test/declarative/fixtures/ecosystem/performance-metrics/fast-card.css +0 -10
  223. package/test/declarative/fixtures/ecosystem/performance-metrics/index.html +0 -181
  224. package/test/declarative/fixtures/ecosystem/performance-metrics/main.ts +0 -58
  225. package/test/declarative/fixtures/ecosystem/performance-metrics/state.json +0 -6
  226. package/test/declarative/fixtures/ecosystem/performance-metrics/templates.html +0 -15
  227. package/test/declarative/fixtures/extensions/README.md +0 -15
  228. package/test/declarative/fixtures/extensions/attribute-map/entry.html +0 -14
  229. package/test/declarative/fixtures/extensions/attribute-map/fast-build.config.json +0 -6
  230. package/test/declarative/fixtures/extensions/attribute-map/index.html +0 -31
  231. package/test/declarative/fixtures/extensions/attribute-map/main.ts +0 -40
  232. package/test/declarative/fixtures/extensions/attribute-map/state.json +0 -4
  233. package/test/declarative/fixtures/extensions/attribute-map/templates.html +0 -14
  234. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/entry.html +0 -12
  235. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/fast-build.config.json +0 -7
  236. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/index.html +0 -25
  237. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/main.ts +0 -31
  238. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/state.json +0 -5
  239. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/templates.html +0 -11
  240. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/entry.html +0 -13
  241. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/fast-build.config.json +0 -7
  242. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/index.html +0 -23
  243. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/main.ts +0 -37
  244. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/state.json +0 -1
  245. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/templates.html +0 -9
  246. package/test/declarative/fixtures/extensions/observer-map/entry.html +0 -15
  247. package/test/declarative/fixtures/extensions/observer-map/fast-build.config.json +0 -6
  248. package/test/declarative/fixtures/extensions/observer-map/index.html +0 -442
  249. package/test/declarative/fixtures/extensions/observer-map/main.ts +0 -482
  250. package/test/declarative/fixtures/extensions/observer-map/state.json +0 -158
  251. package/test/declarative/fixtures/extensions/observer-map/templates.html +0 -172
  252. package/test/declarative/fixtures/extensions/observer-map-config-object/entry.html +0 -16
  253. package/test/declarative/fixtures/extensions/observer-map-config-object/fast-build.config.json +0 -6
  254. package/test/declarative/fixtures/extensions/observer-map-config-object/index.html +0 -27
  255. package/test/declarative/fixtures/extensions/observer-map-config-object/main.ts +0 -53
  256. package/test/declarative/fixtures/extensions/observer-map-config-object/state.json +0 -9
  257. package/test/declarative/fixtures/extensions/observer-map-config-object/templates.html +0 -12
  258. package/test/declarative/fixtures/extensions/observer-map-deep-merge/README.md +0 -98
  259. package/test/declarative/fixtures/extensions/observer-map-deep-merge/entry.html +0 -156
  260. package/test/declarative/fixtures/extensions/observer-map-deep-merge/fast-build.config.json +0 -6
  261. package/test/declarative/fixtures/extensions/observer-map-deep-merge/index.html +0 -376
  262. package/test/declarative/fixtures/extensions/observer-map-deep-merge/main.ts +0 -366
  263. package/test/declarative/fixtures/extensions/observer-map-deep-merge/state.json +0 -69
  264. package/test/declarative/fixtures/extensions/observer-map-deep-merge/templates.html +0 -91
  265. package/test/declarative/fixtures/extensions/observer-map-properties/entry.html +0 -14
  266. package/test/declarative/fixtures/extensions/observer-map-properties/fast-build.config.json +0 -6
  267. package/test/declarative/fixtures/extensions/observer-map-properties/index.html +0 -110
  268. package/test/declarative/fixtures/extensions/observer-map-properties/main.ts +0 -175
  269. package/test/declarative/fixtures/extensions/observer-map-properties/state.json +0 -29
  270. package/test/declarative/fixtures/extensions/observer-map-properties/templates.html +0 -55
  271. package/test/declarative/fixtures/scenarios/README.md +0 -7
  272. package/test/declarative/fixtures/scenarios/nested-elements/entry.html +0 -16
  273. package/test/declarative/fixtures/scenarios/nested-elements/fast-build.config.json +0 -6
  274. package/test/declarative/fixtures/scenarios/nested-elements/index.html +0 -126
  275. package/test/declarative/fixtures/scenarios/nested-elements/main.ts +0 -214
  276. package/test/declarative/fixtures/scenarios/nested-elements/state.json +0 -10
  277. package/test/declarative/fixtures/scenarios/nested-elements/templates.html +0 -54
  278. package/test/declarative/index.html +0 -12
  279. package/test/declarative/vite.config.ts +0 -55
  280. package/test/declarative-main.ts +0 -6
  281. package/test/extension-subpaths-main.ts +0 -9
  282. package/test/index.html +0 -11
  283. package/test/main.ts +0 -109
  284. package/test/pure-declarative-main.ts +0 -1
  285. package/test/vite.config.ts +0 -19
  286. package/tsconfig.api-extractor.json +0 -6
@@ -1,133 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en-US">
3
- <head>
4
- <meta charset="utf-8">
5
- <title></title>
6
- </head>
7
- <body>
8
- <test-element item_parent="Bat"><template shadowrootmode="open" shadowroot="open"><ul>
9
- <!--fe:b--><!--fe:r-->
10
- <li><!--fe:b-->Foo<!--fe:/b--> - <!--fe:b-->Bat<!--fe:/b--></li>
11
- <!--fe:/r--><!--fe:r-->
12
- <li><!--fe:b-->Bar<!--fe:/b--> - <!--fe:b-->Bat<!--fe:/b--></li>
13
- <!--fe:/r--><!--fe:/b-->
14
- </ul></template></test-element>
15
- <test-element-with-observer-map item_parent="Bat"><template shadowrootmode="open" shadowroot="open"><ul>
16
- <!--fe:b--><!--fe:r-->
17
- <li><!--fe:b-->Foo<!--fe:/b--> - <!--fe:b-->Bat<!--fe:/b--></li>
18
- <!--fe:/r--><!--fe:r-->
19
- <li><!--fe:b-->Bar<!--fe:/b--> - <!--fe:b-->Bat<!--fe:/b--></li>
20
- <!--fe:/r--><!--fe:/b-->
21
- </ul></template></test-element-with-observer-map>
22
- <test-element-inner-when><template shadowrootmode="open" shadowroot="open"><ul>
23
- <!--fe:b--><!--fe:r-->
24
- <!--fe:b--><!--fe:/b-->
25
- <!--fe:/r--><!--fe:r-->
26
- <!--fe:b--><!--fe:/b-->
27
- <!--fe:/r--><!--fe:/b-->
28
- </ul></template></test-element-inner-when>
29
- <test-element-interval-updates><template shadowrootmode="open" shadowroot="open"><ul>
30
- <!--fe:b--><!--fe:r-->
31
- <li>
32
- <svg width="20px" height="20px">
33
- <use href="sprites.svg#repeat-icon" data-fe="1"></use>
34
- </svg>
35
- </li>
36
- <!--fe:/r--><!--fe:/b-->
37
-
38
- <!--fe:b--><!--fe:r-->
39
- <li>
40
- <svg width="20px" height="20px">
41
- <use href="sprites.svg#repeat-icon" data-fe="1"></use>
42
- </svg>
43
- </li>
44
- <!--fe:/r--><!--fe:/b-->
45
- </ul></template></test-element-interval-updates>
46
- <test-element-no-item-repeat-binding><template shadowrootmode="open" shadowroot="open"><ul>
47
- <!--fe:b--><!--fe:/b-->
48
- </ul></template></test-element-no-item-repeat-binding>
49
- <test-element-empty-array><template shadowrootmode="open" shadowroot="open"><ul>
50
- <!--fe:b--><!--fe:/b-->
51
- </ul></template></test-element-empty-array>
52
- <test-element-event><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:r-->
53
- <button data-fe="1">Click</button>
54
- <!--fe:/r--><!--fe:/b--></template></test-element-event>
55
- <f-template name="test-element">
56
- <template>
57
- <ul>
58
- <f-repeat value="{{item in list}}">
59
- <li>{{item}} - {{item_parent}}</li>
60
- </f-repeat>
61
- </ul>
62
- </template>
63
- </f-template>
64
- <f-template name="test-element-inner-when">
65
- <template>
66
- <ul>
67
- <f-repeat value="{{item in list}}">
68
- <f-when value="{{item.show}}">
69
- <li>{{item.text}}</li>
70
- </f-when>
71
- </f-repeat>
72
- </ul>
73
- </template>
74
- </f-template>
75
- <f-template name="test-element-with-observer-map">
76
- <template>
77
- <ul>
78
- <f-repeat value="{{item in list}}">
79
- <li>{{item}} - {{item_parent}}</li>
80
- </f-repeat>
81
- </ul>
82
- </template>
83
- </f-template>
84
- <f-template name="test-element-no-item-repeat-binding">
85
- <template>
86
- <ul>
87
- <f-repeat value="{{item in list}}">
88
- <li>{{item}}</li>
89
- </f-repeat>
90
- </ul>
91
- </template>
92
- </f-template>
93
- <f-template name="test-element-event">
94
- <template>
95
- <f-repeat value="{{item in list}}">
96
- <button @click="{handleClick()}">Click</button>
97
- </f-repeat>
98
- </template>
99
- </f-template>
100
- <f-template name="test-element-empty-array">
101
- <template>
102
- <ul>
103
- <f-repeat value="{{item in list}}">
104
- <li>{{item}}</li>
105
- </f-repeat>
106
- </ul>
107
- </template>
108
- </f-template>
109
- <f-template name="test-element-interval-updates">
110
- <template>
111
- <ul>
112
- <f-repeat value="{{item in someData.list1}}">
113
- <li>
114
- <svg width="20px" height="20px">
115
- <use href="sprites.svg#{{item.icon}}-icon"></use>
116
- </svg>
117
- </li>
118
- </f-repeat>
119
-
120
- <f-repeat value="{{item in someData.list2}}">
121
- <li>
122
- <svg width="20px" height="20px">
123
- <use href="sprites.svg#{{item.icon}}-icon"></use>
124
- </svg>
125
- </li>
126
- </f-repeat>
127
- </ul>
128
- </template>
129
- </f-template>
130
-
131
- <script type="module" src="./main.ts"></script>
132
- </body>
133
- </html>
@@ -1,110 +0,0 @@
1
- import { attr } from "@microsoft/fast-element/attr.js";
2
- import { declarativeTemplate } from "@microsoft/fast-element/declarative.js";
3
- import { deepMerge } from "@microsoft/fast-element/declarative-utilities.js";
4
- import { FASTElement } from "@microsoft/fast-element/fast-element.js";
5
- import { enableHydration } from "@microsoft/fast-element/hydration.js";
6
- import { observable } from "@microsoft/fast-element/observable.js";
7
- import { observerMap } from "@microsoft/fast-element/observer-map.js";
8
-
9
- export class TestElement extends FASTElement {
10
- @observable
11
- list: Array<string> = ["Foo", "Bar"];
12
-
13
- @attr
14
- item_parent: string = "Bat";
15
- }
16
- TestElement.define({
17
- name: "test-element",
18
- template: declarativeTemplate(),
19
- });
20
-
21
- export class TestElementInnerWhen extends FASTElement {
22
- @observable
23
- list: Array<any> = [
24
- {
25
- show: true,
26
- text: "Foo",
27
- },
28
- {
29
- show: false,
30
- text: "Bar",
31
- },
32
- ];
33
- }
34
- TestElementInnerWhen.define({
35
- name: "test-element-inner-when",
36
- template: declarativeTemplate(),
37
- });
38
-
39
- export class TestElementIntervalUpdates extends FASTElement {
40
- someData = { list1: [{ icon: "repeat" }], list2: [{ icon: "repeat" }] };
41
-
42
- updateData() {
43
- deepMerge(this.someData, {
44
- list1: [{ icon: "repeat" }],
45
- list2: [{ icon: "repeat" }],
46
- });
47
- }
48
- }
49
-
50
- TestElementIntervalUpdates.define(
51
- {
52
- name: "test-element-interval-updates",
53
- template: declarativeTemplate(),
54
- },
55
- [observerMap()],
56
- );
57
-
58
- export class TestElementNoItemRepeatBinding extends FASTElement {
59
- @observable
60
- list: Array<string> = [];
61
- }
62
- TestElementNoItemRepeatBinding.define({
63
- name: "test-element-no-item-repeat-binding",
64
- template: declarativeTemplate(),
65
- });
66
-
67
- export class TestElementEmptyArray extends FASTElement {
68
- @observable
69
- list: Array<string> = [];
70
- }
71
- TestElementEmptyArray.define({
72
- name: "test-element-empty-array",
73
- template: declarativeTemplate(),
74
- });
75
-
76
- export class TestElementEvent extends FASTElement {
77
- @observable
78
- list: Array<string> = ["A"];
79
-
80
- @observable
81
- clickCount: number = 0;
82
-
83
- public handleClick = (): void => {
84
- this.clickCount++;
85
- };
86
- }
87
- TestElementEvent.define({
88
- name: "test-element-event",
89
- template: declarativeTemplate(),
90
- });
91
-
92
- export class TestElementWithObserverMap extends FASTElement {
93
- list: Array<string> = ["Foo", "Bar"];
94
-
95
- @attr
96
- item_parent: string = "Bat";
97
- }
98
- TestElementWithObserverMap.define(
99
- {
100
- name: "test-element-with-observer-map",
101
- template: declarativeTemplate(),
102
- },
103
- [observerMap()],
104
- );
105
-
106
- enableHydration({
107
- hydrationComplete() {
108
- (window as any).hydrationCompleted = true;
109
- },
110
- });
@@ -1,8 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" style="display: none" aria-hidden="true">
2
- <symbol id="repeat-icon" viewBox="0 0 20 20" preserveAspectRatio="xMidYMid meet">
3
- <path
4
- fill="currentColor"
5
- d="M14.69 11.503c1 0 1.81.81 1.81 1.81v.689h-.005c-.034.78-.248 1.757-1.123 2.555C14.416 17.43 12.765 18 10 18c-2.766 0-4.416-.57-5.372-1.443c-.875-.798-1.089-1.776-1.123-2.555H3.5v-.69c0-.999.81-1.809 1.81-1.809h9.38ZM6.5 3A1.5 1.5 0 0 0 5 4.5v4A1.5 1.5 0 0 0 6.5 10h7A1.5 1.5 0 0 0 15 8.5v-4A1.5 1.5 0 0 0 13.5 3h-3v-.5A.48.48 0 0 0 10 2c-.276 0-.5.23-.5.5V3h-3ZM7 6.5a1 1 0 1 1 2 0a1 1 0 0 1-2 0Zm4 0a1 1 0 1 1 2 0a1 1 0 0 1-2 0Z"
6
- />
7
- </symbol>
8
- </svg>
@@ -1,10 +0,0 @@
1
- {
2
- "list": ["Foo", "Bar"],
3
- "item_parent": "Bat",
4
- "emptyList": [],
5
- "eventList": ["A"],
6
- "someData": {
7
- "list1": [{ "icon": "repeat" }],
8
- "list2": [{ "icon": "repeat" }]
9
- }
10
- }
@@ -1,75 +0,0 @@
1
- <f-template name="test-element">
2
- <template>
3
- <ul>
4
- <f-repeat value="{{item in list}}">
5
- <li>{{item}} - {{item_parent}}</li>
6
- </f-repeat>
7
- </ul>
8
- </template>
9
- </f-template>
10
- <f-template name="test-element-inner-when">
11
- <template>
12
- <ul>
13
- <f-repeat value="{{item in list}}">
14
- <f-when value="{{item.show}}">
15
- <li>{{item.text}}</li>
16
- </f-when>
17
- </f-repeat>
18
- </ul>
19
- </template>
20
- </f-template>
21
- <f-template name="test-element-with-observer-map">
22
- <template>
23
- <ul>
24
- <f-repeat value="{{item in list}}">
25
- <li>{{item}} - {{item_parent}}</li>
26
- </f-repeat>
27
- </ul>
28
- </template>
29
- </f-template>
30
- <f-template name="test-element-no-item-repeat-binding">
31
- <template>
32
- <ul>
33
- <f-repeat value="{{item in list}}">
34
- <li>{{item}}</li>
35
- </f-repeat>
36
- </ul>
37
- </template>
38
- </f-template>
39
- <f-template name="test-element-event">
40
- <template>
41
- <f-repeat value="{{item in list}}">
42
- <button @click="{handleClick()}">Click</button>
43
- </f-repeat>
44
- </template>
45
- </f-template>
46
- <f-template name="test-element-empty-array">
47
- <template>
48
- <ul>
49
- <f-repeat value="{{item in list}}">
50
- <li>{{item}}</li>
51
- </f-repeat>
52
- </ul>
53
- </template>
54
- </f-template>
55
- <f-template name="test-element-interval-updates">
56
- <template>
57
- <ul>
58
- <f-repeat value="{{item in someData.list1}}">
59
- <li>
60
- <svg width="20px" height="20px">
61
- <use href="sprites.svg#{{item.icon}}-icon"></use>
62
- </svg>
63
- </li>
64
- </f-repeat>
65
-
66
- <f-repeat value="{{item in someData.list2}}">
67
- <li>
68
- <svg width="20px" height="20px">
69
- <use href="sprites.svg#{{item.icon}}-icon"></use>
70
- </svg>
71
- </li>
72
- </f-repeat>
73
- </ul>
74
- </template>
75
- </f-template>
@@ -1,17 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en-US">
3
- <head>
4
- <meta charset="utf-8">
5
- <title></title>
6
- </head>
7
- <body>
8
- <test-element>
9
- <div>Slotted</div>
10
- Not slotted
11
- <ul slot="foo"><li>Item 1</li><li>Item 2</li></ul>
12
- <div slot="bar"></div>
13
- <p slot="bar"></p>
14
- </test-element>
15
- <script type="module" src="./main.ts"></script>
16
- </body>
17
- </html>
@@ -1,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -1,27 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en-US">
3
- <head>
4
- <meta charset="utf-8">
5
- <title></title>
6
- </head>
7
- <body>
8
- <test-element><template shadowrootmode="open" shadowroot="open"><slot data-fe="1"></slot>
9
- <slot name="foo" data-fe="1"></slot>
10
- <slot name="bar" data-fe="1"></slot></template>
11
- <div>Slotted</div>
12
- Not slotted
13
- <ul slot="foo"><li>Item 1</li><li>Item 2</li></ul>
14
- <div slot="bar"></div>
15
- <p slot="bar"></p>
16
- </test-element>
17
- <f-template name="test-element">
18
- <template>
19
- <slot f-slotted="{slottedNodes filter elements()}"></slot>
20
- <slot name="foo" f-slotted="{slottedFooNodes}"></slot>
21
- <slot name="bar" f-slotted="{slottedBarNodes filter elements(p, ol)}"></slot>
22
- </template>
23
- </f-template>
24
-
25
- <script type="module" src="./main.ts"></script>
26
- </body>
27
- </html>
@@ -1,29 +0,0 @@
1
- import { declarativeTemplate } from "@microsoft/fast-element/declarative.js";
2
- import { FASTElement } from "@microsoft/fast-element/fast-element.js";
3
- import { enableHydration } from "@microsoft/fast-element/hydration.js";
4
- import { observable } from "@microsoft/fast-element/observable.js";
5
-
6
- class TestElement extends FASTElement {
7
- @observable
8
- slottedNodes: Node[] = [];
9
-
10
- @observable
11
- slottedFooNodes: Node[] = [];
12
-
13
- slottedFooNodesChanged() {
14
- this.classList.add(`class-${this.slottedFooNodes.length}`);
15
- }
16
-
17
- @observable
18
- slottedBarNodes: Node[] = [];
19
- }
20
- TestElement.define({
21
- name: "test-element",
22
- template: declarativeTemplate(),
23
- });
24
-
25
- enableHydration({
26
- hydrationComplete() {
27
- (window as any).hydrationCompleted = true;
28
- },
29
- });
@@ -1,7 +0,0 @@
1
- <f-template name="test-element">
2
- <template>
3
- <slot f-slotted="{slottedNodes filter elements()}"></slot>
4
- <slot name="foo" f-slotted="{slottedFooNodes}"></slot>
5
- <slot name="bar" f-slotted="{slottedBarNodes filter elements(p, ol)}"></slot>
6
- </template>
7
- </f-template>
@@ -1,51 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en-US">
3
- <head>
4
- <meta charset="utf-8">
5
- <title></title>
6
- </head>
7
- <body>
8
- <!-- multiple -->
9
- <test-element-multiple id="multiple1" planet="earth"></test-element-multiple>
10
- <test-element-multiple id="multiple2" planet="pluto"></test-element-multiple>
11
- <test-element-multiple id="multiple3" planet="mars"></test-element-multiple>
12
- <!-- boolean -->
13
- <test-element id="show" show></test-element>
14
- <test-element id="hide"></test-element>
15
- <!-- not -->
16
- <test-element-not id="show-not"></test-element-not>
17
- <test-element-not id="hide-not" hide></test-element-not>
18
- <!-- equals -->
19
- <test-element-equals id="equals-true" vara="3"></test-element-equals>
20
- <test-element-equals id="equals-false" vara="4"></test-element-equals>
21
- <!-- not equals -->
22
- <test-element-not-equals id="not-equals-true" vara="4"></test-element-not-equals>
23
- <test-element-not-equals id="not-equals-false" vara="3"></test-element-not-equals>
24
- <!-- greater than or equals -->
25
- <test-element-ge id="ge-true" vara="3"></test-element-ge>
26
- <test-element-ge id="ge-false" vara="0"></test-element-ge>
27
- <!-- greater than -->
28
- <test-element-gt id="gt-true" vara="3"></test-element-gt>
29
- <test-element-gt id="gt-false" vara="0"></test-element-gt>
30
- <!-- less than or equals -->
31
- <test-element-le id="le-true" vara="2"></test-element-le>
32
- <test-element-le id="le-false" vara="4"></test-element-le>
33
- <!-- less than -->
34
- <test-element-lt id="lt-true" vara="1"></test-element-lt>
35
- <test-element-lt id="lt-false" vara="3"></test-element-lt>
36
- <!-- or -->
37
- <test-element-or id="or-true" thisvar="3"></test-element-or>
38
- <test-element-or id="or-false"></test-element-or>
39
- <!-- and -->
40
- <test-element-and id="and-true" thisvar thatvar></test-element-and>
41
- <test-element-and id="and-false" thisvar></test-element-and>
42
- <!-- nested when -->
43
- <nested-when id="nested-when" error="{{error}}"></nested-when>
44
- <!-- when false with repeat -->
45
- <test-element-when-false-repeat id="when-false-repeat"></test-element-when-false-repeat>
46
- <!-- event -->
47
- <test-element-event id="event-show" show></test-element-event>
48
- <test-element-event id="event-hide"></test-element-event>
49
- <script type="module" src="./main.ts"></script>
50
- </body>
51
- </html>
@@ -1,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -1,136 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en-US">
3
- <head>
4
- <meta charset="utf-8">
5
- <title></title>
6
- </head>
7
- <body>
8
- <!-- multiple -->
9
- <test-element-multiple id="multiple1" planet="earth"><template shadowrootmode="open" shadowroot="open">Hello <!--fe:b-->world<!--fe:/b--><!--fe:b--><!--fe:/b--><!--fe:b--><!--fe:/b--></template></test-element-multiple>
10
- <test-element-multiple id="multiple2" planet="pluto"><template shadowrootmode="open" shadowroot="open">Hello <!--fe:b--><!--fe:/b--><!--fe:b-->pluto<!--fe:/b--><!--fe:b--><!--fe:/b--></template></test-element-multiple>
11
- <test-element-multiple id="multiple3" planet="mars"><template shadowrootmode="open" shadowroot="open">Hello <!--fe:b--><!--fe:/b--><!--fe:b--><!--fe:/b--><!--fe:b-->mars<!--fe:/b--></template></test-element-multiple>
12
- <!-- boolean -->
13
- <test-element id="show" show><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Hello world<!--fe:/b--></template></test-element>
14
- <test-element id="hide"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element>
15
- <!-- not -->
16
- <test-element-not id="show-not"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Hello world<!--fe:/b--></template></test-element-not>
17
- <test-element-not id="hide-not" hide><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-not>
18
- <!-- equals -->
19
- <test-element-equals id="equals-true" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Equals 3<!--fe:/b--></template></test-element-equals>
20
- <test-element-equals id="equals-false" vara="4"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-equals>
21
- <!-- not equals -->
22
- <test-element-not-equals id="not-equals-true" vara="4"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Not equals 3<!--fe:/b--></template></test-element-not-equals>
23
- <test-element-not-equals id="not-equals-false" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-not-equals>
24
- <!-- greater than or equals -->
25
- <test-element-ge id="ge-true" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Two and Over<!--fe:/b--></template></test-element-ge>
26
- <test-element-ge id="ge-false" vara="0"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-ge>
27
- <!-- greater than -->
28
- <test-element-gt id="gt-true" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Over two<!--fe:/b--></template></test-element-gt>
29
- <test-element-gt id="gt-false" vara="0"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-gt>
30
- <!-- less than or equals -->
31
- <test-element-le id="le-true" vara="2"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Two and Under<!--fe:/b--></template></test-element-le>
32
- <test-element-le id="le-false" vara="4"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-le>
33
- <!-- less than -->
34
- <test-element-lt id="lt-true" vara="1"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->Under two<!--fe:/b--></template></test-element-lt>
35
- <test-element-lt id="lt-false" vara="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-lt>
36
- <!-- or -->
37
- <test-element-or id="or-true" thisvar="3"><template shadowrootmode="open" shadowroot="open"><!--fe:b-->This or That<!--fe:/b--></template></test-element-or>
38
- <test-element-or id="or-false"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-or>
39
- <!-- and -->
40
- <test-element-and id="and-true" thisvar thatvar><template shadowrootmode="open" shadowroot="open"><!--fe:b-->This and That<!--fe:/b--></template></test-element-and>
41
- <test-element-and id="and-false" thisvar><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-and>
42
- <!-- nested when -->
43
- <nested-when id="nested-when" error="false"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b-->
44
- <div class="buttons">
45
- <!--fe:b-->
46
- <!--fe:b-->
47
- <progress></progress>
48
- <!--fe:/b-->
49
- <!--fe:b--><!--fe:/b-->
50
- <!--fe:/b-->
51
- <!--fe:b--><!--fe:/b-->
52
- </div></template></nested-when>
53
- <!-- when false with repeat -->
54
- <test-element-when-false-repeat id="when-false-repeat"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-when-false-repeat>
55
- <!-- event -->
56
- <test-element-event id="event-show" show><template shadowrootmode="open" shadowroot="open"><!--fe:b--><button data-fe="1">Click me</button><!--fe:/b--></template></test-element-event>
57
- <test-element-event id="event-hide"><template shadowrootmode="open" shadowroot="open"><!--fe:b--><!--fe:/b--></template></test-element-event>
58
- <!-- multiple -->
59
- <f-template name="test-element-multiple">
60
- <template>Hello <f-when value="{{planet == 'earth'}}">world</f-when><f-when value="{{planet == 'pluto'}}">pluto</f-when><f-when value="{{planet == 'mars'}}">mars</f-when></template>
61
- </f-template>
62
- <!-- boolean -->
63
- <f-template name="test-element">
64
- <template><f-when value="{{show}}">Hello world</f-when></template>
65
- </f-template>
66
- <!-- not -->
67
- <f-template name="test-element-not">
68
- <template><f-when value="{{!hide}}">Hello world</f-when></template>
69
- </f-template>
70
- <!-- equals -->
71
- <f-template name="test-element-equals">
72
- <template><f-when value="{{vara == 3}}">Equals 3</f-when></template>
73
- </f-template>
74
- <!-- not equals -->
75
- <f-template name="test-element-not-equals">
76
- <template><f-when value="{{vara != 3}}">Not equals 3</f-when></template>
77
- </f-template>
78
- <!-- greater than or equals -->
79
- <f-template name="test-element-ge">
80
- <template><f-when value="{{vara >= 2}}">Two and Over</f-when></template>
81
- </f-template>
82
- <!-- greater than -->
83
- <f-template name="test-element-gt">
84
- <template><f-when value="{{vara > 2}}">Over two</f-when></template>
85
- </f-template>
86
- <!-- less than or equals -->
87
- <f-template name="test-element-le">
88
- <template><f-when value="{{vara <= 2}}">Two and Under</f-when></template>
89
- </f-template>
90
- <!-- less than -->
91
- <f-template name="test-element-lt">
92
- <template><f-when value="{{vara < 2}}">Under two</f-when></template>
93
- </f-template>
94
- <!-- or -->
95
- <f-template name="test-element-or">
96
- <template><f-when value="{{thisvar || thatvar}}">This or That</f-when></template>
97
- </f-template>
98
- <!-- and -->
99
- <f-template name="test-element-and">
100
- <template><f-when value="{{thisvar && thatvar}}">This and That</f-when></template>
101
- </f-template>
102
- <!-- nested when -->
103
- <f-template name="nested-when">
104
- <template>
105
- <f-when value="{{error}}">
106
- <div class="error" role="alert">{{strings.errorMessage}}</div>
107
- </f-when>
108
- <div class="buttons">
109
- <f-when value="{{!error}}">
110
- <f-when value="{{showProgress}}">
111
- <progress></progress>
112
- </f-when>
113
- <f-when value="{{!showProgress}}">
114
- <button ?disabled="{{!enableContinue}}" @click="{handleClick()}">
115
- {{strings.continueButtonText}}
116
- </button>
117
- </f-when>
118
- </f-when>
119
- <f-when value="{{error}}">
120
- <button>{{strings.retryButtonText}}</button>
121
- </f-when>
122
- </div>
123
- </template>
124
- </f-template>
125
- <!-- when false with repeat -->
126
- <f-template name="test-element-when-false-repeat">
127
- <template><f-when value="{{show}}"><ul><f-repeat value="{{item in list}}"><li>{{item}}</li></f-repeat></ul></f-when></template>
128
- </f-template>
129
- <!-- event -->
130
- <f-template name="test-element-event">
131
- <template><f-when value="{{show}}"><button @click="{handleClick()}">Click me</button></f-when></template>
132
- </f-template>
133
-
134
- <script type="module" src="./main.ts"></script>
135
- </body>
136
- </html>