@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,25 +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
- <naming-strategy-test id="test-element" foo-bar="default-foo" my-custom-prop="default-prop"><template shadowrootmode="open" shadowroot="open"><div class="foo-bar-value"><!--fe:b-->default-foo<!--fe:/b--></div>
9
- <div class="my-custom-prop-value"><!--fe:b-->default-prop<!--fe:/b--></div></template></naming-strategy-test>
10
- <naming-strategy-no-dash-test id="no-dash-test" label="default-label"><template shadowrootmode="open" shadowroot="open"><div class="label-value"><!--fe:b-->default-label<!--fe:/b--></div></template></naming-strategy-no-dash-test>
11
- <f-template name="naming-strategy-test">
12
- <template>
13
- <div class="foo-bar-value">{{fooBar}}</div>
14
- <div class="my-custom-prop-value">{{myCustomProp}}</div>
15
- </template>
16
- </f-template>
17
- <f-template name="naming-strategy-no-dash-test">
18
- <template>
19
- <div class="label-value">{{label}}</div>
20
- </template>
21
- </f-template>
22
-
23
- <script type="module" src="./main.ts"></script>
24
- </body>
25
- </html>
@@ -1,31 +0,0 @@
1
- import { attributeMap } from "@microsoft/fast-element/attribute-map.js";
2
- import { declarativeTemplate } from "@microsoft/fast-element/declarative.js";
3
- import { FASTElement } from "@microsoft/fast-element/fast-element.js";
4
-
5
- class NamingStrategyTestElement extends FASTElement {}
6
-
7
- NamingStrategyTestElement.define(
8
- {
9
- name: "naming-strategy-test",
10
- template: declarativeTemplate(),
11
- },
12
- [
13
- attributeMap({
14
- "attribute-name-strategy": "camelCase",
15
- }),
16
- ],
17
- );
18
-
19
- class NamingStrategyNoDashTestElement extends FASTElement {}
20
-
21
- NamingStrategyNoDashTestElement.define(
22
- {
23
- name: "naming-strategy-no-dash-test",
24
- template: declarativeTemplate(),
25
- },
26
- [
27
- attributeMap({
28
- "attribute-name-strategy": "camelCase",
29
- }),
30
- ],
31
- );
@@ -1,5 +0,0 @@
1
- {
2
- "fooBar": "default-foo",
3
- "myCustomProp": "default-prop",
4
- "label": "default-label"
5
- }
@@ -1,11 +0,0 @@
1
- <f-template name="naming-strategy-test">
2
- <template>
3
- <div class="foo-bar-value">{{fooBar}}</div>
4
- <div class="my-custom-prop-value">{{myCustomProp}}</div>
5
- </template>
6
- </f-template>
7
- <f-template name="naming-strategy-no-dash-test">
8
- <template>
9
- <div class="label-value">{{label}}</div>
10
- </template>
11
- </f-template>
@@ -1,13 +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-camel-case foo-bar="hello"></test-camel-case>
9
- <test-camel-case-multi my-custom-prop="world"></test-camel-case-multi>
10
- <test-camel-case-no-dash label="simple"></test-camel-case-no-dash>
11
- <script type="module" src="./main.ts"></script>
12
- </body>
13
- </html>
@@ -1,7 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html",
6
- "attribute-name-strategy": "camelCase"
7
- }
@@ -1,23 +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-camel-case foo-bar="hello"><template shadowrootmode="open" shadowroot="open"><span><!--fe:b-->hello<!--fe:/b--></span></template></test-camel-case>
9
- <test-camel-case-multi my-custom-prop="world"><template shadowrootmode="open" shadowroot="open"><span><!--fe:b-->world<!--fe:/b--></span></template></test-camel-case-multi>
10
- <test-camel-case-no-dash label="simple"><template shadowrootmode="open" shadowroot="open"><span><!--fe:b-->simple<!--fe:/b--></span></template></test-camel-case-no-dash>
11
- <f-template name="test-camel-case">
12
- <template> <span>{{fooBar}}</span> </template>
13
- </f-template>
14
- <f-template name="test-camel-case-multi">
15
- <template> <span>{{myCustomProp}}</span> </template>
16
- </f-template>
17
- <f-template name="test-camel-case-no-dash">
18
- <template> <span>{{label}}</span> </template>
19
- </f-template>
20
-
21
- <script type="module" src="./main.ts"></script>
22
- </body>
23
- </html>
@@ -1,37 +0,0 @@
1
- import { attr } from "@microsoft/fast-element/attr.js";
2
- import { declarativeTemplate } from "@microsoft/fast-element/declarative.js";
3
- import { FASTElement } from "@microsoft/fast-element/fast-element.js";
4
- import { enableHydration } from "@microsoft/fast-element/hydration.js";
5
-
6
- class TestCamelCase extends FASTElement {
7
- @attr({ attribute: "foo-bar" })
8
- fooBar: string = "";
9
- }
10
- TestCamelCase.define({
11
- name: "test-camel-case",
12
- template: declarativeTemplate(),
13
- });
14
-
15
- class TestCamelCaseMulti extends FASTElement {
16
- @attr({ attribute: "my-custom-prop" })
17
- myCustomProp: string = "";
18
- }
19
- TestCamelCaseMulti.define({
20
- name: "test-camel-case-multi",
21
- template: declarativeTemplate(),
22
- });
23
-
24
- class TestCamelCaseNoDash extends FASTElement {
25
- @attr
26
- label: string = "";
27
- }
28
- TestCamelCaseNoDash.define({
29
- name: "test-camel-case-no-dash",
30
- template: declarativeTemplate(),
31
- });
32
-
33
- enableHydration({
34
- hydrationComplete() {
35
- (window as any).hydrationCompleted = true;
36
- },
37
- });
@@ -1,9 +0,0 @@
1
- <f-template name="test-camel-case">
2
- <template> <span>{{fooBar}}</span> </template>
3
- </f-template>
4
- <f-template name="test-camel-case-multi">
5
- <template> <span>{{myCustomProp}}</span> </template>
6
- </f-template>
7
- <f-template name="test-camel-case-no-dash">
8
- <template> <span>{{label}}</span> </template>
9
- </f-template>
@@ -1,15 +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
- <div class="container">
9
- <observer-map-simple-array-test-element></observer-map-simple-array-test-element>
10
- <observer-map-test-element></observer-map-test-element>
11
- <observer-map-with-observables-test-element></observer-map-with-observables-test-element>
12
- </div>
13
- <script type="module" src="./main.ts"></script>
14
- </body>
15
- </html>
@@ -1,6 +0,0 @@
1
- {
2
- "entry": "entry.html",
3
- "state": "state.json",
4
- "output": "index.html",
5
- "templates": "templates.html"
6
- }
@@ -1,442 +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
- <div class="container">
9
- <observer-map-simple-array-test-element><template shadowrootmode="open" shadowroot="open"><ul>
10
- <!--fe:b--><!--fe:r-->
11
- <li class="simple-item"><!--fe:b-->foo<!--fe:/b--></li>
12
- <!--fe:/r--><!--fe:r-->
13
- <li class="simple-item"><!--fe:b-->baz<!--fe:/b--></li>
14
- <!--fe:/r--><!--fe:/b-->
15
- </ul>
16
- <button data-fe="1">Update First Item</button>
17
- <button data-fe="1">Update Second Item</button></template></observer-map-simple-array-test-element>
18
- <observer-map-test-element><template shadowrootmode="open" shadowroot="open"><observer-map-internal-test-element data-fe="3"><template shadowrootmode="open" shadowroot="open">selected user: <!--fe:b-->1<!--fe:/b--> <!-- because this is bound to an attribute property it must be lowercase -->
19
- <br>
20
- total users: <!--fe:b-->2<!--fe:/b-->
21
- <br>
22
- <div class="stats">
23
- <div class="nested-info">
24
- <strong>Engagement:</strong>
25
- Daily: <!--fe:b-->100<!--fe:/b-->,
26
- Weekly: <!--fe:b-->500<!--fe:/b-->,
27
- Monthly: <!--fe:b-->2000<!--fe:/b-->
28
- </div>
29
- </div>
30
- <!--fe:b-->
31
- <span class="nested-define"><!--fe:b--><!--fe:/b--></span>
32
- <!--fe:/b-->
33
- <button data-fe="1">Define B</button>
34
- <button data-fe="1">Update C</button>
35
- <br>
36
- <!--fe:b--><!--fe:/b-->
37
- <button data-fe="1">Define Y</button>
38
- <button data-fe="1">Update Z</button>
39
- <div>
40
- <!--fe:b--><!--fe:r-->
41
- <!--fe:b--><!--fe:r-->
42
- <div class="item"><!--fe:b-->item A<!--fe:/b--></div>
43
- <span>
44
- <!--fe:b--><!--fe:r-->
45
- <span class="action-label"><!--fe:b-->action label A<!--fe:/b--></span>
46
- <!--fe:/r--><!--fe:/b-->
47
- </span>
48
- <!--fe:/r--><!--fe:/b-->
49
- <!--fe:/r--><!--fe:/b-->
50
- </div>
51
- <button data-fe="1">Remove all items</button>
52
- <button data-fe="1">Add an item</button>
53
- <button data-fe="1">Update an item</button>
54
- <button data-fe="1">Remove groups</button>
55
- <button data-fe="1">Add group</button>
56
- <button data-fe="1">Update an action label</button></template></observer-map-internal-test-element>
57
- <div class="stats">
58
- <h2>Global Stats</h2>
59
- <div class="nested-info">
60
- <strong>Total Users:</strong> <!--fe:b-->2<!--fe:/b--> |
61
- <strong>Active Users:</strong> <!--fe:b-->1<!--fe:/b-->
62
- </div>
63
- <div class="nested-info">
64
- <strong>Performance:</strong>
65
- Load: <!--fe:b-->1.2<!--fe:/b-->s,
66
- Render: <!--fe:b-->0.8<!--fe:/b-->s
67
- </div>
68
- <div class="controls">
69
- <button data-fe="1">Update Stats</button>
70
- <button data-fe="1">Add New User</button>
71
- </div>
72
- </div>
73
-
74
- <div class="section">
75
- <h2>Users List</h2>
76
- <!--fe:b--><!--fe:r-->
77
- <div class="user-card">
78
- <h3><!--fe:b-->Alice Johnson<!--fe:/b--> (ID: <!--fe:b-->1<!--fe:/b-->)
79
- <!--fe:b-->
80
- <span>⭐ SELECTED</span>
81
- <!--fe:/b-->
82
- </h3>
83
-
84
- <div class="nested-info">
85
- <strong>Age:</strong> <!--fe:b-->28<!--fe:/b--> years old
86
- </div>
87
- <div class="nested-info">
88
- <strong>Location:</strong> <!--fe:b-->New York<!--fe:/b-->, <!--fe:b-->USA<!--fe:/b-->
89
- </div>
90
- <div class="nested-info">
91
- <strong>Coordinates:</strong>
92
- Lat: <!--fe:b-->40.7128<!--fe:/b-->,
93
- Lng: <!--fe:b-->-74.006<!--fe:/b-->
94
- </div>
95
-
96
- <div class="nested-info">
97
- <strong>Theme:</strong> <!--fe:b-->dark<!--fe:/b--> |
98
- <strong>Email Notifications:</strong> <!--fe:b-->true<!--fe:/b--> |
99
- <strong>Push Notifications:</strong> <!--fe:b-->false<!--fe:/b-->
100
- </div>
101
- <div class="nested-info">
102
- <strong>Notification Frequency:</strong> <!--fe:b-->daily<!--fe:/b-->
103
- </div>
104
- <div class="nested-info">
105
- <strong>Categories:</strong>
106
- <!--fe:b--><!--fe:r-->
107
- <span class="tag"><!--fe:b-->tech<!--fe:/b--></span>
108
- <!--fe:/r--><!--fe:r-->
109
- <span class="tag"><!--fe:b-->news<!--fe:/b--></span>
110
- <!--fe:/r--><!--fe:/b-->
111
- </div>
112
-
113
- <div class="controls">
114
- <button data-fe="1">Select User</button>
115
- <button data-fe="1">Age +1</button>
116
- <button data-fe="1">Toggle Theme</button>
117
- <button data-fe="1">Change Location</button>
118
- <button data-fe="1">Update Notifications</button>
119
- <button data-fe="1">Add Category</button>
120
- <button data-fe="1">Remove Tech Category</button>
121
- <button data-fe="1">Remove User</button>
122
- </div>
123
-
124
- <div>
125
- <h4>Posts (<!--fe:b-->2<!--fe:/b--> posts)</h4>
126
- <!--fe:b--><!--fe:r-->
127
- <div class="post-card">
128
- <div><strong><!--fe:b-->First Post<!--fe:/b--></strong> (ID: <!--fe:b-->101<!--fe:/b-->)</div>
129
- <div class="nested-info"><!--fe:b-->Hello World!<!--fe:/b--></div>
130
- <div class="nested-info">
131
- <strong>Author:</strong> <!--fe:b-->Alice Johnson<!--fe:/b-->
132
- <!--fe:b-->
133
- <span>✓ Verified</span>
134
- <!--fe:/b-->
135
- </div>
136
- <div class="nested-info">
137
- <strong>Stats:</strong> <!--fe:b-->150<!--fe:/b--> views, <!--fe:b-->25<!--fe:/b--> likes
138
- </div>
139
- <div class="nested-info">
140
- <strong>Tags:</strong>
141
- <!--fe:b--><!--fe:r-->
142
- <span class="tag"><!--fe:b-->introduction<!--fe:/b--></span>
143
- <!--fe:/r--><!--fe:r-->
144
- <span class="tag"><!--fe:b-->hello<!--fe:/b--></span>
145
- <!--fe:/r--><!--fe:/b-->
146
- </div>
147
- <div class="controls">
148
- <button data-fe="1">Like Post</button>
149
- </div>
150
- </div>
151
- <!--fe:/r--><!--fe:r-->
152
- <div class="post-card">
153
- <div><strong><!--fe:b-->Tech Update<!--fe:/b--></strong> (ID: <!--fe:b-->102<!--fe:/b-->)</div>
154
- <div class="nested-info"><!--fe:b-->Latest in technology...<!--fe:/b--></div>
155
- <div class="nested-info">
156
- <strong>Author:</strong> <!--fe:b-->Alice Johnson<!--fe:/b-->
157
- <!--fe:b-->
158
- <span>✓ Verified</span>
159
- <!--fe:/b-->
160
- </div>
161
- <div class="nested-info">
162
- <strong>Stats:</strong> <!--fe:b-->320<!--fe:/b--> views, <!--fe:b-->45<!--fe:/b--> likes
163
- </div>
164
- <div class="nested-info">
165
- <strong>Tags:</strong>
166
- <!--fe:b--><!--fe:r-->
167
- <span class="tag"><!--fe:b-->tech<!--fe:/b--></span>
168
- <!--fe:/r--><!--fe:r-->
169
- <span class="tag"><!--fe:b-->update<!--fe:/b--></span>
170
- <!--fe:/r--><!--fe:/b-->
171
- </div>
172
- <div class="controls">
173
- <button data-fe="1">Like Post</button>
174
- </div>
175
- </div>
176
- <!--fe:/r--><!--fe:/b-->
177
- <div class="controls">
178
- <button data-fe="1">Add New Post</button>
179
- </div>
180
- </div>
181
- </div>
182
- <!--fe:/r--><!--fe:r-->
183
- <div class="user-card">
184
- <h3><!--fe:b-->Bob Smith<!--fe:/b--> (ID: <!--fe:b-->2<!--fe:/b-->)
185
- <!--fe:b--><!--fe:/b-->
186
- </h3>
187
-
188
- <div class="nested-info">
189
- <strong>Age:</strong> <!--fe:b-->35<!--fe:/b--> years old
190
- </div>
191
- <div class="nested-info">
192
- <strong>Location:</strong> <!--fe:b-->London<!--fe:/b-->, <!--fe:b-->UK<!--fe:/b-->
193
- </div>
194
- <div class="nested-info">
195
- <strong>Coordinates:</strong>
196
- Lat: <!--fe:b-->51.5074<!--fe:/b-->,
197
- Lng: <!--fe:b-->-0.1278<!--fe:/b-->
198
- </div>
199
-
200
- <div class="nested-info">
201
- <strong>Theme:</strong> <!--fe:b-->light<!--fe:/b--> |
202
- <strong>Email Notifications:</strong> <!--fe:b-->false<!--fe:/b--> |
203
- <strong>Push Notifications:</strong> <!--fe:b-->true<!--fe:/b-->
204
- </div>
205
- <div class="nested-info">
206
- <strong>Notification Frequency:</strong> <!--fe:b-->weekly<!--fe:/b-->
207
- </div>
208
- <div class="nested-info">
209
- <strong>Categories:</strong>
210
- <!--fe:b--><!--fe:r-->
211
- <span class="tag"><!--fe:b-->sports<!--fe:/b--></span>
212
- <!--fe:/r--><!--fe:r-->
213
- <span class="tag"><!--fe:b-->music<!--fe:/b--></span>
214
- <!--fe:/r--><!--fe:/b-->
215
- </div>
216
-
217
- <div class="controls">
218
- <button data-fe="1">Select User</button>
219
- <button data-fe="1">Age +1</button>
220
- <button data-fe="1">Toggle Theme</button>
221
- <button data-fe="1">Change Location</button>
222
- <button data-fe="1">Update Notifications</button>
223
- <button data-fe="1">Add Category</button>
224
- <button data-fe="1">Remove Tech Category</button>
225
- <button data-fe="1">Remove User</button>
226
- </div>
227
-
228
- <div>
229
- <h4>Posts (<!--fe:b-->1<!--fe:/b--> posts)</h4>
230
- <!--fe:b--><!--fe:r-->
231
- <div class="post-card">
232
- <div><strong><!--fe:b-->Music Review<!--fe:/b--></strong> (ID: <!--fe:b-->201<!--fe:/b-->)</div>
233
- <div class="nested-info"><!--fe:b-->Amazing concert last night...<!--fe:/b--></div>
234
- <div class="nested-info">
235
- <strong>Author:</strong> <!--fe:b-->Bob Smith<!--fe:/b-->
236
- <!--fe:b--><!--fe:/b-->
237
- </div>
238
- <div class="nested-info">
239
- <strong>Stats:</strong> <!--fe:b-->89<!--fe:/b--> views, <!--fe:b-->12<!--fe:/b--> likes
240
- </div>
241
- <div class="nested-info">
242
- <strong>Tags:</strong>
243
- <!--fe:b--><!--fe:r-->
244
- <span class="tag"><!--fe:b-->music<!--fe:/b--></span>
245
- <!--fe:/r--><!--fe:r-->
246
- <span class="tag"><!--fe:b-->review<!--fe:/b--></span>
247
- <!--fe:/r--><!--fe:/b-->
248
- </div>
249
- <div class="controls">
250
- <button data-fe="1">Like Post</button>
251
- </div>
252
- </div>
253
- <!--fe:/r--><!--fe:/b-->
254
- <div class="controls">
255
- <button data-fe="1">Add New Post</button>
256
- </div>
257
- </div>
258
- </div>
259
- <!--fe:/r--><!--fe:/b-->
260
- </div></template></observer-map-test-element>
261
- <observer-map-with-observables-test-element><template shadowrootmode="open" shadowroot="open">Level 3 Value: <!--fe:b-->42<!--fe:/b-->
262
- <button data-fe="1">Update Value1</button>
263
- <br>
264
- Level 3 Value Observable: <!--fe:b-->42<!--fe:/b-->
265
- <button data-fe="1">Update Value2</button></template></observer-map-with-observables-test-element>
266
- </div>
267
- <f-template name="observer-map-test-element">
268
- <template>
269
- <observer-map-internal-test-element
270
- :selecteduserid="{{selecteduserid}}"
271
- :totalusers="{{stats.totalusers}}"
272
- :metrics="{{stats.metrics}}"
273
- ></observer-map-internal-test-element>
274
- <div class="stats">
275
- <h2>Global Stats</h2>
276
- <div class="nested-info">
277
- <strong>Total Users:</strong> {{stats.totalusers}} |
278
- <strong>Active Users:</strong> {{stats.activeusers}}
279
- </div>
280
- <div class="nested-info">
281
- <strong>Performance:</strong>
282
- Load: {{stats.metrics.performance.loadtime}}s,
283
- Render: {{stats.metrics.performance.rendertime}}s
284
- </div>
285
- <div class="controls">
286
- <button @click="{updateStats()}">Update Stats</button>
287
- <button @click="{addNewUser()}">Add New User</button>
288
- </div>
289
- </div>
290
-
291
- <div class="section">
292
- <h2>Users List</h2>
293
- <f-repeat value="{{user in users}}">
294
- <div class="user-card">
295
- <h3>{{user.name}} (ID: {{user.id}})
296
- <f-when value="{{user.id == selecteduserid}}">
297
- <span>⭐ SELECTED</span>
298
- </f-when>
299
- </h3>
300
-
301
- <div class="nested-info">
302
- <strong>Age:</strong> {{user.details.personal.age}} years old
303
- </div>
304
- <div class="nested-info">
305
- <strong>Location:</strong> {{user.details.personal.location.city}}, {{user.details.personal.location.country}}
306
- </div>
307
- <div class="nested-info">
308
- <strong>Coordinates:</strong>
309
- Lat: {{user.details.personal.location.coordinates.lat}},
310
- Lng: {{user.details.personal.location.coordinates.lng}}
311
- </div>
312
-
313
- <div class="nested-info">
314
- <strong>Theme:</strong> {{user.details.preferences.theme}} |
315
- <strong>Email Notifications:</strong> {{user.details.preferences.notifications.email}} |
316
- <strong>Push Notifications:</strong> {{user.details.preferences.notifications.push}}
317
- </div>
318
- <div class="nested-info">
319
- <strong>Notification Frequency:</strong> {{user.details.preferences.notifications.settings.frequency}}
320
- </div>
321
- <div class="nested-info">
322
- <strong>Categories:</strong>
323
- <f-repeat value="{{category in user.details.preferences.notifications.settings.categories}}">
324
- <span class="tag">{{category}}</span>
325
- </f-repeat>
326
- </div>
327
-
328
- <div class="controls">
329
- <button @click="{selectUser(user.id)}">Select User</button>
330
- <button @click="{updateUserAge(user.id)}">Age +1</button>
331
- <button @click="{toggleUserTheme(user.id)}">Toggle Theme</button>
332
- <button @click="{updateUserLocation(user.id)}">Change Location</button>
333
- <button @click="{updateNotificationSettings(user.id)}">Update Notifications</button>
334
- <button @click="{addNotificationCategory(user.id)}">Add Category</button>
335
- <button @click="{removeNotificationCategory(user.id)}">Remove Tech Category</button>
336
- <button @click="{removeUser(user.id)}">Remove User</button>
337
- </div>
338
-
339
- <div>
340
- <h4>Posts ({{user.posts.length}} posts)</h4>
341
- <f-repeat value="{{post in user.posts}}">
342
- <div class="post-card">
343
- <div><strong>{{post.title}}</strong> (ID: {{post.id}})</div>
344
- <div class="nested-info">{{post.content}}</div>
345
- <div class="nested-info">
346
- <strong>Author:</strong> {{post.metadata.author.name}}
347
- <f-when value="{{post.metadata.author.verified}}">
348
- <span>✓ Verified</span>
349
- </f-when>
350
- </div>
351
- <div class="nested-info">
352
- <strong>Stats:</strong> {{post.metadata.views}} views, {{post.metadata.likes}} likes
353
- </div>
354
- <div class="nested-info">
355
- <strong>Tags:</strong>
356
- <f-repeat value="{{tag in post.metadata.tags}}">
357
- <span class="tag">{{tag}}</span>
358
- </f-repeat>
359
- </div>
360
- <div class="controls">
361
- <button @click="{incrementPostLikes(post.id)}">Like Post</button>
362
- </div>
363
- </div>
364
- </f-repeat>
365
- <div class="controls">
366
- <button @click="{addPostToUser(user.id)}">Add New Post</button>
367
- </div>
368
- </div>
369
- </div>
370
- </f-repeat>
371
- </div>
372
- </template>
373
- </f-template>
374
- <f-template name="observer-map-internal-test-element">
375
- <template>
376
- selected user: {{selecteduserid}} <!-- because this is bound to an attribute property it must be lowercase -->
377
- <br>
378
- total users: {{totalusers}}
379
- <br>
380
- <div class="stats">
381
- <div class="nested-info">
382
- <strong>Engagement:</strong>
383
- Daily: {{metrics.engagement.daily}},
384
- Weekly: {{metrics.engagement.weekly}},
385
- Monthly: {{metrics.engagement.monthly}}
386
- </div>
387
- </div>
388
- <f-when value="{{a}}">
389
- <span class="nested-define">{{a.b.c}}</span>
390
- </f-when>
391
- <button @click="{defineB()}">Define B</button>
392
- <button @click="{updateC()}">Update C</button>
393
- <br>
394
- <f-when value="{{x}}">
395
- <span class="nested-define-2">{{x.y.z}}</span>
396
- </f-when>
397
- <button @click="{defineY()}">Define Y</button>
398
- <button @click="{updateZ()}">Update Z</button>
399
- <div>
400
- <f-repeat value="{{group in groups}}">
401
- <f-repeat value="{{item in group.items}}">
402
- <div class="item">{{item.text}}</div>
403
- <span>
404
- <f-repeat value="{{action in item.actions.trailing}}">
405
- <span class="action-label">{{action.label}}</span>
406
- </f-repeat>
407
- </span>
408
- </f-repeat>
409
- </f-repeat>
410
- </div>
411
- <button @click="{removeAllItems()}">Remove all items</button>
412
- <button @click="{addAnItem()}">Add an item</button>
413
- <button @click="{updateAnItem()}">Update an item</button>
414
- <button @click="{removeGroup()}">Remove groups</button>
415
- <button @click="{addGroup()}">Add group</button>
416
- <button @click="{updateActionLabel()}">Update an action label</button>
417
- </template>
418
- </f-template>
419
- <f-template name="observer-map-with-observables-test-element">
420
- <template>
421
- Level 3 Value: {{value1}}
422
- <button @click="{updateValue1()}">Update Value1</button>
423
- <br>
424
- Level 3 Value Observable: {{value2}}
425
- <button @click="{updateValue2()}">Update Value2</button>
426
- </template>
427
- </f-template>
428
- <f-template name="observer-map-simple-array-test-element">
429
- <template>
430
- <ul>
431
- <f-repeat value="{{item in items}}">
432
- <li class="simple-item">{{item}}</li>
433
- </f-repeat>
434
- </ul>
435
- <button @click="{updateFirstItem()}">Update First Item</button>
436
- <button @click="{updateSecondItem()}">Update Second Item</button>
437
- </template>
438
- </f-template>
439
-
440
- <script type="module" src="./main.ts"></script>
441
- </body>
442
- </html>