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

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 (351) hide show
  1. package/ARCHITECTURE_HTML_TAGGED_TEMPLATE_LITERAL.md +1 -1
  2. package/ARCHITECTURE_OVERVIEW.md +2 -2
  3. package/CHANGELOG.json +31 -1
  4. package/CHANGELOG.md +10 -2
  5. package/DECLARATIVE_DESIGN.md +806 -0
  6. package/DECLARATIVE_HTML.md +470 -0
  7. package/DECLARATIVE_MIGRATION.md +215 -0
  8. package/DECLARATIVE_RENDERING.md +530 -0
  9. package/DECLARATIVE_RENDERING_LIFECYCLE.md +288 -0
  10. package/DECLARATIVE_SCHEMA_OBSERVER_MAP.md +489 -0
  11. package/DESIGN.md +143 -34
  12. package/MIGRATION.md +387 -0
  13. package/README.md +208 -1
  14. package/SIZES.md +25 -0
  15. package/api-extractor.arrays.json +15 -0
  16. package/api-extractor.context.json +1 -0
  17. package/api-extractor.declarative.json +15 -0
  18. package/api-extractor.di.json +1 -0
  19. package/api-extractor.hydration.json +15 -0
  20. package/api-extractor.styles.json +15 -0
  21. package/dist/arrays/arrays.api.json +2621 -0
  22. package/dist/context/context.api.json +1 -1
  23. package/dist/declarative/declarative.api.json +7844 -0
  24. package/dist/di/di.api.json +2 -2
  25. package/dist/dts/array-observer.d.ts +2 -0
  26. package/dist/dts/arrays.d.ts +2 -0
  27. package/dist/dts/attr.d.ts +1 -0
  28. package/dist/dts/binding/signal.d.ts +6 -6
  29. package/dist/dts/binding/two-way.d.ts +1 -0
  30. package/dist/dts/binding.d.ts +7 -0
  31. package/dist/dts/components/attributes.d.ts +2 -5
  32. package/dist/dts/components/definition-schema-transforms.d.ts +9 -0
  33. package/dist/dts/components/element-controller.d.ts +80 -114
  34. package/dist/dts/components/element-hydration.d.ts +1 -1
  35. package/dist/dts/components/enable-hydration.d.ts +34 -0
  36. package/dist/dts/components/fast-definitions.d.ts +91 -42
  37. package/dist/dts/components/fast-element.d.ts +5 -8
  38. package/dist/dts/components/hydration-tracker.d.ts +40 -0
  39. package/dist/dts/components/hydration.d.ts +18 -53
  40. package/dist/dts/components/schema.d.ts +205 -0
  41. package/dist/dts/context.d.ts +6 -6
  42. package/dist/dts/css.d.ts +3 -0
  43. package/dist/dts/debug.d.ts +5 -1
  44. package/dist/dts/declarative/attribute-map.d.ts +58 -0
  45. package/dist/dts/declarative/debug.d.ts +5 -0
  46. package/dist/dts/declarative/index.d.ts +13 -0
  47. package/dist/dts/declarative/interfaces.d.ts +9 -0
  48. package/dist/dts/declarative/observer-map-utilities.d.ts +58 -0
  49. package/dist/dts/declarative/observer-map.d.ts +89 -0
  50. package/dist/dts/declarative/runtime.d.ts +5 -0
  51. package/dist/dts/declarative/syntax.d.ts +21 -0
  52. package/dist/dts/declarative/template-bridge.d.ts +33 -0
  53. package/dist/dts/declarative/template-parser.d.ts +98 -0
  54. package/dist/dts/declarative/template.d.ts +9 -0
  55. package/dist/dts/declarative/utilities.d.ts +312 -0
  56. package/dist/dts/di/di.d.ts +1 -1
  57. package/dist/dts/directives/children.d.ts +2 -0
  58. package/dist/dts/directives/node-observation.d.ts +2 -0
  59. package/dist/dts/directives/ref.d.ts +2 -0
  60. package/dist/dts/directives/repeat.d.ts +4 -0
  61. package/dist/dts/directives/slotted.d.ts +2 -0
  62. package/dist/dts/directives/when.d.ts +3 -0
  63. package/dist/dts/dom-policy.d.ts +1 -1
  64. package/dist/dts/html.d.ts +5 -0
  65. package/dist/dts/hydration/runtime.d.ts +7 -0
  66. package/dist/dts/hydration/target-builder.d.ts +15 -12
  67. package/dist/dts/hydration.d.ts +14 -0
  68. package/dist/dts/index.d.ts +38 -42
  69. package/dist/dts/index.debug.d.ts +0 -1
  70. package/dist/dts/index.rollup.debug.d.ts +0 -1
  71. package/dist/dts/interfaces.d.ts +1 -49
  72. package/dist/dts/observable.d.ts +3 -6
  73. package/dist/dts/observation/arrays.d.ts +1 -1
  74. package/dist/dts/observation/update-queue.d.ts +1 -1
  75. package/dist/dts/platform.d.ts +25 -4
  76. package/dist/dts/render.d.ts +7 -0
  77. package/dist/dts/schema.d.ts +1 -0
  78. package/dist/dts/state/exports.d.ts +1 -1
  79. package/dist/dts/state/state.d.ts +2 -2
  80. package/dist/dts/styles/css-directive.d.ts +5 -12
  81. package/dist/dts/styles/css.d.ts +5 -7
  82. package/dist/dts/styles/element-styles.d.ts +0 -10
  83. package/dist/dts/styles.d.ts +6 -0
  84. package/dist/dts/templating/children.d.ts +1 -1
  85. package/dist/dts/templating/html-binding-directive.d.ts +10 -0
  86. package/dist/dts/templating/html-directive.d.ts +17 -0
  87. package/dist/dts/templating/hydration-view.d.ts +109 -0
  88. package/dist/dts/templating/ref.d.ts +1 -1
  89. package/dist/dts/templating/render.d.ts +8 -2
  90. package/dist/dts/templating/repeat.d.ts +2 -2
  91. package/dist/dts/templating/slotted.d.ts +1 -1
  92. package/dist/dts/templating/template.d.ts +17 -9
  93. package/dist/dts/templating/view.d.ts +25 -102
  94. package/dist/dts/templating/when.d.ts +1 -1
  95. package/dist/dts/templating.d.ts +10 -0
  96. package/dist/dts/testing/exports.d.ts +2 -2
  97. package/dist/dts/tsdoc-metadata.json +1 -1
  98. package/dist/dts/updates.d.ts +1 -0
  99. package/dist/dts/volatile.d.ts +2 -0
  100. package/dist/esm/array-observer.js +1 -0
  101. package/dist/esm/arrays.js +1 -0
  102. package/dist/esm/attr.js +1 -0
  103. package/dist/esm/binding/normalize.js +1 -1
  104. package/dist/esm/binding/signal.js +4 -4
  105. package/dist/esm/binding/two-way.js +2 -1
  106. package/dist/esm/binding.js +4 -0
  107. package/dist/esm/components/attributes.js +8 -5
  108. package/dist/esm/components/definition-schema-transforms.js +23 -0
  109. package/dist/esm/components/element-controller.js +200 -269
  110. package/dist/esm/components/element-hydration.js +1 -1
  111. package/dist/esm/components/enable-hydration.js +100 -0
  112. package/dist/esm/components/fast-definitions.js +211 -49
  113. package/dist/esm/components/fast-element.js +18 -27
  114. package/dist/esm/components/hydration-tracker.js +93 -0
  115. package/dist/esm/components/hydration.js +62 -144
  116. package/dist/esm/components/schema.js +253 -0
  117. package/dist/esm/context.js +6 -6
  118. package/dist/esm/css.js +3 -0
  119. package/dist/esm/debug.js +26 -26
  120. package/dist/esm/declarative/attribute-map.js +121 -0
  121. package/dist/esm/declarative/debug.js +5 -0
  122. package/dist/esm/declarative/index.js +3 -0
  123. package/dist/esm/declarative/interfaces.js +10 -0
  124. package/dist/esm/declarative/observer-map-utilities.js +562 -0
  125. package/dist/esm/declarative/observer-map.js +216 -0
  126. package/dist/esm/declarative/runtime.js +14 -0
  127. package/dist/esm/declarative/syntax.js +36 -0
  128. package/dist/esm/declarative/template-bridge.js +170 -0
  129. package/dist/esm/declarative/template-parser.js +306 -0
  130. package/dist/esm/declarative/template.js +142 -0
  131. package/dist/esm/declarative/utilities.js +834 -0
  132. package/dist/esm/di/di.js +6 -8
  133. package/dist/esm/directives/children.js +1 -0
  134. package/dist/esm/directives/node-observation.js +1 -0
  135. package/dist/esm/directives/ref.js +1 -0
  136. package/dist/esm/directives/repeat.js +1 -0
  137. package/dist/esm/directives/slotted.js +1 -0
  138. package/dist/esm/directives/when.js +1 -0
  139. package/dist/esm/dom-policy.js +2 -2
  140. package/dist/esm/dom.js +1 -1
  141. package/dist/esm/html.js +2 -0
  142. package/dist/esm/hydration/runtime.js +33 -0
  143. package/dist/esm/hydration/target-builder.js +97 -90
  144. package/dist/esm/hydration.js +4 -0
  145. package/dist/esm/index.debug.js +2 -1
  146. package/dist/esm/index.js +34 -29
  147. package/dist/esm/index.rollup.debug.js +3 -2
  148. package/dist/esm/index.rollup.js +1 -1
  149. package/dist/esm/interfaces.js +1 -45
  150. package/dist/esm/observable.js +1 -4
  151. package/dist/esm/observation/arrays.js +1 -1
  152. package/dist/esm/observation/observable.js +5 -5
  153. package/dist/esm/observation/update-queue.js +47 -58
  154. package/dist/esm/platform.js +31 -30
  155. package/dist/esm/render.js +1 -0
  156. package/dist/esm/schema.js +1 -0
  157. package/dist/esm/state/exports.js +1 -1
  158. package/dist/esm/styles/css-directive.js +1 -2
  159. package/dist/esm/styles/css.js +15 -56
  160. package/dist/esm/styles/element-styles.js +69 -15
  161. package/dist/esm/styles.js +2 -0
  162. package/dist/esm/templating/html-binding-directive.js +24 -10
  163. package/dist/esm/templating/hydration-view.js +235 -0
  164. package/dist/esm/templating/render.js +13 -2
  165. package/dist/esm/templating/repeat.js +36 -34
  166. package/dist/esm/templating/template.js +7 -7
  167. package/dist/esm/templating/view.js +24 -233
  168. package/dist/esm/templating.js +7 -0
  169. package/dist/esm/testing/exports.js +2 -2
  170. package/dist/esm/updates.js +1 -0
  171. package/dist/esm/volatile.js +1 -0
  172. package/dist/fast-element.api.json +9017 -6996
  173. package/dist/fast-element.d.ts +3557 -796
  174. package/dist/fast-element.debug.js +5093 -4419
  175. package/dist/fast-element.debug.min.js +2 -2
  176. package/dist/fast-element.js +5398 -4655
  177. package/dist/fast-element.min.js +2 -2
  178. package/dist/fast-element.untrimmed.d.ts +881 -481
  179. package/dist/hydration/hydration.api.json +5237 -0
  180. package/dist/styles/styles.api.json +2672 -0
  181. package/docs/api-report.api.md +344 -167
  182. package/docs/arrays/api-report.api.md +114 -0
  183. package/docs/declarative/api-report.api.md +397 -0
  184. package/docs/hydration/api-report.api.md +285 -0
  185. package/docs/styles/api-report.api.md +135 -0
  186. package/package.json +149 -40
  187. package/playwright.declarative.config.ts +26 -0
  188. package/playwright.declarative.webui.config.ts +20 -0
  189. package/scripts/declarative/build-fixtures-with-webui.js +135 -0
  190. package/scripts/declarative/build-fixtures.js +49 -0
  191. package/scripts/declarative/build-fixtures.utilities.js +101 -0
  192. package/scripts/measure-sizes.js +219 -0
  193. package/scripts/run-api-extractor.js +39 -20
  194. package/test/declarative/fixtures/README.md +72 -0
  195. package/test/declarative/fixtures/WRITING_FIXTURES.md +330 -0
  196. package/test/declarative/fixtures/bindings/README.md +12 -0
  197. package/test/declarative/fixtures/bindings/attribute/entry.html +13 -0
  198. package/test/declarative/fixtures/bindings/attribute/fast-build.config.json +6 -0
  199. package/test/declarative/fixtures/bindings/attribute/index.html +25 -0
  200. package/test/declarative/fixtures/bindings/attribute/main.ts +41 -0
  201. package/test/declarative/fixtures/bindings/attribute/state.json +8 -0
  202. package/test/declarative/fixtures/bindings/attribute/templates.html +11 -0
  203. package/test/declarative/fixtures/bindings/content/entry.html +12 -0
  204. package/test/declarative/fixtures/bindings/content/fast-build.config.json +6 -0
  205. package/test/declarative/fixtures/bindings/content/index.html +19 -0
  206. package/test/declarative/fixtures/bindings/content/main.ts +27 -0
  207. package/test/declarative/fixtures/bindings/content/state.json +4 -0
  208. package/test/declarative/fixtures/bindings/content/templates.html +6 -0
  209. package/test/declarative/fixtures/bindings/dot-syntax/entry.html +11 -0
  210. package/test/declarative/fixtures/bindings/dot-syntax/fast-build.config.json +6 -0
  211. package/test/declarative/fixtures/bindings/dot-syntax/index.html +47 -0
  212. package/test/declarative/fixtures/bindings/dot-syntax/main.ts +59 -0
  213. package/test/declarative/fixtures/bindings/dot-syntax/state.json +16 -0
  214. package/test/declarative/fixtures/bindings/dot-syntax/templates.html +17 -0
  215. package/test/declarative/fixtures/bindings/event/entry.html +11 -0
  216. package/test/declarative/fixtures/bindings/event/fast-build.config.json +6 -0
  217. package/test/declarative/fixtures/bindings/event/index.html +43 -0
  218. package/test/declarative/fixtures/bindings/event/main.ts +43 -0
  219. package/test/declarative/fixtures/bindings/event/state.json +3 -0
  220. package/test/declarative/fixtures/bindings/event/templates.html +18 -0
  221. package/test/declarative/fixtures/bindings/host/entry.html +40 -0
  222. package/test/declarative/fixtures/bindings/host/fast-build.config.json +6 -0
  223. package/test/declarative/fixtures/bindings/host/index.html +96 -0
  224. package/test/declarative/fixtures/bindings/host/main.ts +222 -0
  225. package/test/declarative/fixtures/bindings/host/state.json +9 -0
  226. package/test/declarative/fixtures/bindings/host/templates.html +55 -0
  227. package/test/declarative/fixtures/directives/README.md +12 -0
  228. package/test/declarative/fixtures/directives/children/entry.html +11 -0
  229. package/test/declarative/fixtures/directives/children/fast-build.config.json +6 -0
  230. package/test/declarative/fixtures/directives/children/index.html +15 -0
  231. package/test/declarative/fixtures/directives/children/main.ts +22 -0
  232. package/test/declarative/fixtures/directives/children/state.json +3 -0
  233. package/test/declarative/fixtures/directives/children/templates.html +3 -0
  234. package/test/declarative/fixtures/directives/ref/entry.html +11 -0
  235. package/test/declarative/fixtures/directives/ref/fast-build.config.json +6 -0
  236. package/test/declarative/fixtures/directives/ref/index.html +15 -0
  237. package/test/declarative/fixtures/directives/ref/main.ts +17 -0
  238. package/test/declarative/fixtures/directives/ref/state.json +1 -0
  239. package/test/declarative/fixtures/directives/ref/templates.html +3 -0
  240. package/test/declarative/fixtures/directives/repeat/entry.html +21 -0
  241. package/test/declarative/fixtures/directives/repeat/fast-build.config.json +6 -0
  242. package/test/declarative/fixtures/directives/repeat/index.html +133 -0
  243. package/test/declarative/fixtures/directives/repeat/main.ts +110 -0
  244. package/test/declarative/fixtures/directives/repeat/sprites.svg +8 -0
  245. package/test/declarative/fixtures/directives/repeat/state.json +10 -0
  246. package/test/declarative/fixtures/directives/repeat/templates.html +75 -0
  247. package/test/declarative/fixtures/directives/slotted/entry.html +17 -0
  248. package/test/declarative/fixtures/directives/slotted/fast-build.config.json +6 -0
  249. package/test/declarative/fixtures/directives/slotted/index.html +27 -0
  250. package/test/declarative/fixtures/directives/slotted/main.ts +29 -0
  251. package/test/declarative/fixtures/directives/slotted/state.json +1 -0
  252. package/test/declarative/fixtures/directives/slotted/templates.html +7 -0
  253. package/test/declarative/fixtures/directives/when/entry.html +51 -0
  254. package/test/declarative/fixtures/directives/when/fast-build.config.json +6 -0
  255. package/test/declarative/fixtures/directives/when/index.html +136 -0
  256. package/test/declarative/fixtures/directives/when/main.ts +172 -0
  257. package/test/declarative/fixtures/directives/when/state.json +12 -0
  258. package/test/declarative/fixtures/directives/when/templates.html +75 -0
  259. package/test/declarative/fixtures/ecosystem/README.md +11 -0
  260. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/entry.html +12 -0
  261. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/fast-build.config.json +6 -0
  262. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/index.html +20 -0
  263. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/main.ts +68 -0
  264. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/state.json +4 -0
  265. package/test/declarative/fixtures/ecosystem/declarative-no-hydration/templates.html +7 -0
  266. package/test/declarative/fixtures/ecosystem/errors/entry.html +12 -0
  267. package/test/declarative/fixtures/ecosystem/errors/fast-build.config.json +6 -0
  268. package/test/declarative/fixtures/ecosystem/errors/index.html +20 -0
  269. package/test/declarative/fixtures/ecosystem/errors/main.ts +17 -0
  270. package/test/declarative/fixtures/ecosystem/errors/state.json +1 -0
  271. package/test/declarative/fixtures/ecosystem/errors/templates.html +7 -0
  272. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/entry.html +17 -0
  273. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/fast-build.config.json +6 -0
  274. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/index.html +56 -0
  275. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/main.ts +134 -0
  276. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/state.json +12 -0
  277. package/test/declarative/fixtures/ecosystem/lifecycle-callbacks/templates.html +34 -0
  278. package/test/declarative/fixtures/ecosystem/performance-metrics/entry.html +25 -0
  279. package/test/declarative/fixtures/ecosystem/performance-metrics/fast-build.config.json +6 -0
  280. package/test/declarative/fixtures/ecosystem/performance-metrics/fast-card.css +10 -0
  281. package/test/declarative/fixtures/ecosystem/performance-metrics/index.html +181 -0
  282. package/test/declarative/fixtures/ecosystem/performance-metrics/main.ts +58 -0
  283. package/test/declarative/fixtures/ecosystem/performance-metrics/state.json +6 -0
  284. package/test/declarative/fixtures/ecosystem/performance-metrics/templates.html +15 -0
  285. package/test/declarative/fixtures/extensions/README.md +15 -0
  286. package/test/declarative/fixtures/extensions/attribute-map/entry.html +14 -0
  287. package/test/declarative/fixtures/extensions/attribute-map/fast-build.config.json +6 -0
  288. package/test/declarative/fixtures/extensions/attribute-map/index.html +31 -0
  289. package/test/declarative/fixtures/extensions/attribute-map/main.ts +40 -0
  290. package/test/declarative/fixtures/extensions/attribute-map/state.json +4 -0
  291. package/test/declarative/fixtures/extensions/attribute-map/templates.html +14 -0
  292. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/entry.html +12 -0
  293. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/fast-build.config.json +7 -0
  294. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/index.html +25 -0
  295. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/main.ts +31 -0
  296. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/state.json +5 -0
  297. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy/templates.html +11 -0
  298. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/entry.html +13 -0
  299. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/fast-build.config.json +7 -0
  300. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/index.html +23 -0
  301. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/main.ts +37 -0
  302. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/state.json +1 -0
  303. package/test/declarative/fixtures/extensions/attribute-map-naming-strategy-camel-case/templates.html +9 -0
  304. package/test/declarative/fixtures/extensions/observer-map/entry.html +15 -0
  305. package/test/declarative/fixtures/extensions/observer-map/fast-build.config.json +6 -0
  306. package/test/declarative/fixtures/extensions/observer-map/index.html +442 -0
  307. package/test/declarative/fixtures/extensions/observer-map/main.ts +482 -0
  308. package/test/declarative/fixtures/extensions/observer-map/state.json +158 -0
  309. package/test/declarative/fixtures/extensions/observer-map/templates.html +172 -0
  310. package/test/declarative/fixtures/extensions/observer-map-config-object/entry.html +16 -0
  311. package/test/declarative/fixtures/extensions/observer-map-config-object/fast-build.config.json +6 -0
  312. package/test/declarative/fixtures/extensions/observer-map-config-object/index.html +27 -0
  313. package/test/declarative/fixtures/extensions/observer-map-config-object/main.ts +53 -0
  314. package/test/declarative/fixtures/extensions/observer-map-config-object/state.json +9 -0
  315. package/test/declarative/fixtures/extensions/observer-map-config-object/templates.html +12 -0
  316. package/test/declarative/fixtures/extensions/observer-map-deep-merge/README.md +98 -0
  317. package/test/declarative/fixtures/extensions/observer-map-deep-merge/entry.html +156 -0
  318. package/test/declarative/fixtures/extensions/observer-map-deep-merge/fast-build.config.json +6 -0
  319. package/test/declarative/fixtures/extensions/observer-map-deep-merge/index.html +376 -0
  320. package/test/declarative/fixtures/extensions/observer-map-deep-merge/main.ts +366 -0
  321. package/test/declarative/fixtures/extensions/observer-map-deep-merge/state.json +69 -0
  322. package/test/declarative/fixtures/extensions/observer-map-deep-merge/templates.html +91 -0
  323. package/test/declarative/fixtures/extensions/observer-map-properties/entry.html +14 -0
  324. package/test/declarative/fixtures/extensions/observer-map-properties/fast-build.config.json +6 -0
  325. package/test/declarative/fixtures/extensions/observer-map-properties/index.html +110 -0
  326. package/test/declarative/fixtures/extensions/observer-map-properties/main.ts +175 -0
  327. package/test/declarative/fixtures/extensions/observer-map-properties/state.json +29 -0
  328. package/test/declarative/fixtures/extensions/observer-map-properties/templates.html +55 -0
  329. package/test/declarative/fixtures/scenarios/README.md +7 -0
  330. package/test/declarative/fixtures/scenarios/nested-elements/entry.html +16 -0
  331. package/test/declarative/fixtures/scenarios/nested-elements/fast-build.config.json +6 -0
  332. package/test/declarative/fixtures/scenarios/nested-elements/index.html +126 -0
  333. package/test/declarative/fixtures/scenarios/nested-elements/main.ts +214 -0
  334. package/test/declarative/fixtures/scenarios/nested-elements/state.json +10 -0
  335. package/test/declarative/fixtures/scenarios/nested-elements/templates.html +54 -0
  336. package/test/declarative/index.html +12 -0
  337. package/test/declarative/vite.config.ts +55 -0
  338. package/test/declarative-main.ts +6 -0
  339. package/test/extension-subpaths-main.ts +9 -0
  340. package/test/main.ts +38 -33
  341. package/test/pure-declarative-main.ts +1 -0
  342. package/dist/dts/components/install-hydration.d.ts +0 -1
  343. package/dist/dts/pending-task.d.ts +0 -32
  344. package/dist/dts/polyfills.d.ts +0 -0
  345. package/dist/dts/styles/css-binding-directive.d.ts +0 -60
  346. package/dist/dts/templating/install-hydratable-view-templates.d.ts +0 -1
  347. package/dist/esm/components/install-hydration.js +0 -3
  348. package/dist/esm/pending-task.js +0 -28
  349. package/dist/esm/polyfills.js +0 -60
  350. package/dist/esm/styles/css-binding-directive.js +0 -76
  351. package/dist/esm/templating/install-hydratable-view-templates.js +0 -23
@@ -0,0 +1,442 @@
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>