@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,285 @@
1
+ ## API Report File for "@microsoft/fast-element"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ // @public
8
+ export interface CaptureType {
9
+ }
10
+
11
+ // @public
12
+ export interface ContentTemplate {
13
+ create(): ContentView;
14
+ }
15
+
16
+ // @public
17
+ export interface ContentView {
18
+ bind(source: any, context?: ExecutionContext): void;
19
+ // (undocumented)
20
+ readonly context: ExecutionContext;
21
+ insertBefore(node: Node): void;
22
+ remove(): void;
23
+ unbind(): void;
24
+ }
25
+
26
+ // @public
27
+ export class DefaultExecutionContext<TParent> implements ExecutionContext<TParent> {
28
+ get event(): Event;
29
+ eventDetail<TDetail>(): TDetail;
30
+ eventTarget<TTarget extends EventTarget>(): TTarget;
31
+ index: number;
32
+ get isEven(): boolean;
33
+ get isFirst(): boolean;
34
+ get isInMiddle(): boolean;
35
+ get isLast(): boolean;
36
+ get isOdd(): boolean;
37
+ length: number;
38
+ readonly parent: TParent;
39
+ readonly parentContext: ExecutionContext<TParent>;
40
+ }
41
+
42
+ // @beta
43
+ export const deferHydrationAttribute = "defer-hydration";
44
+
45
+ // @public
46
+ interface Disposable_2 {
47
+ dispose(): void;
48
+ }
49
+ export { Disposable_2 as Disposable }
50
+
51
+ // @public
52
+ export const DOMAspect: Readonly<{
53
+ readonly none: 0;
54
+ readonly attribute: 1;
55
+ readonly booleanAttribute: 2;
56
+ readonly property: 3;
57
+ readonly content: 4;
58
+ readonly tokenList: 5;
59
+ readonly event: 6;
60
+ }>;
61
+
62
+ // @public
63
+ export type DOMAspect = (typeof DOMAspect)[Exclude<keyof typeof DOMAspect, "none">];
64
+
65
+ // @public
66
+ export interface DOMPolicy {
67
+ createHTML(value: string): string;
68
+ protect(tagName: string | null, aspect: DOMAspect, aspectName: string, sink: DOMSink): DOMSink;
69
+ }
70
+
71
+ // @public
72
+ export type DOMSink = (target: Node, aspectName: string, value: any, ...args: any[]) => void;
73
+
74
+ // @public
75
+ export interface ElementView<TSource = any, TParent = any> extends View<TSource, TParent> {
76
+ appendTo(node: Node): void;
77
+ onUnbind(behavior: {
78
+ unbind(controller: ViewController<TSource, TParent>): any;
79
+ }): void;
80
+ readonly sourceLifetime?: SourceLifetime;
81
+ }
82
+
83
+ // @public
84
+ export interface ElementViewTemplate<TSource = any, TParent = any> {
85
+ create(hostBindingTarget: Element): ElementView<TSource, TParent>;
86
+ render(source: TSource, host: Node, hostBindingTarget?: Element): ElementView<TSource, TParent>;
87
+ }
88
+
89
+ // @public
90
+ export function enableHydration(options?: HydrationOptions): void;
91
+
92
+ // @public
93
+ export interface ExecutionContext<TParent = any> {
94
+ readonly event: Event;
95
+ eventDetail<TDetail>(): TDetail;
96
+ eventTarget<TTarget extends EventTarget>(): TTarget;
97
+ index: number;
98
+ readonly isEven: boolean;
99
+ readonly isFirst: boolean;
100
+ readonly isInMiddle: boolean;
101
+ readonly isLast: boolean;
102
+ readonly isOdd: boolean;
103
+ length: number;
104
+ parent: TParent;
105
+ parentContext: ExecutionContext<TParent>;
106
+ }
107
+
108
+ // @public
109
+ export const ExecutionContext: Readonly<{
110
+ default: ExecutionContext<any>;
111
+ getEvent(): Event | null;
112
+ setEvent(event: Event | null): void;
113
+ }>;
114
+
115
+ // @public
116
+ export interface ExpressionController<TSource = any, TParent = any> {
117
+ readonly context: ExecutionContext<TParent>;
118
+ readonly isBound: boolean;
119
+ onUnbind(behavior: {
120
+ unbind(controller: ExpressionController<TSource, TParent>): any;
121
+ }): void;
122
+ readonly source: TSource;
123
+ readonly sourceLifetime?: SourceLifetime;
124
+ }
125
+
126
+ // @beta
127
+ export interface HydratableContentTemplate extends ContentTemplate {
128
+ hydrate(first: Node, last: Node): ContentView;
129
+ }
130
+
131
+ // @beta
132
+ export interface HydratableElementViewTemplate<TSource = any, TParent = any> extends ElementViewTemplate<TSource, TParent> {
133
+ // (undocumented)
134
+ hydrate(firstChild: Node, lastChild: Node, hostBindingTarget?: Element): ElementView<TSource, TParent>;
135
+ }
136
+
137
+ // @beta
138
+ export interface HydratableSyntheticViewTemplate<TSource = any, TParent = any> extends SyntheticViewTemplate {
139
+ // (undocumented)
140
+ hydrate(firstChild: Node, lastChild: Node): SyntheticView<TSource, TParent>;
141
+ }
142
+
143
+ // @public (undocumented)
144
+ export interface HydratableView<TSource = any, TParent = any> extends ElementView, SyntheticView, DefaultExecutionContext<TParent> {
145
+ // (undocumented)
146
+ [Hydratable]: symbol;
147
+ // (undocumented)
148
+ readonly bindingViewBoundaries: Record<string, ViewNodes>;
149
+ // (undocumented)
150
+ readonly hydrationStage: keyof typeof HydrationStage;
151
+ }
152
+
153
+ // @beta
154
+ export type HydratableViewController<TSource = any, TParent = any> = HydratableView<TSource, TParent> & ViewController<TSource, TParent>;
155
+
156
+ // @public (undocumented)
157
+ export class HydrationBindingError extends Error {
158
+ constructor(
159
+ message: string | undefined,
160
+ factory: ViewBehaviorFactory,
161
+ fragment: DocumentFragment,
162
+ templateString: string);
163
+ readonly factory: ViewBehaviorFactory;
164
+ readonly fragment: DocumentFragment;
165
+ readonly templateString: string;
166
+ }
167
+
168
+ // @public
169
+ export interface HydrationOptions {
170
+ hydrationComplete?(): void;
171
+ hydrationStarted?(): void;
172
+ }
173
+
174
+ // @public (undocumented)
175
+ export const HydrationStage: {
176
+ readonly unhydrated: "unhydrated";
177
+ readonly hydrating: "hydrating";
178
+ readonly hydrated: "hydrated";
179
+ };
180
+
181
+ // @public
182
+ export class HydrationTracker {
183
+ constructor(options: HydrationOptions);
184
+ add(element: HTMLElement): void;
185
+ mergeOptions(incoming: HydrationOptions): void;
186
+ remove(element: HTMLElement): void;
187
+ }
188
+
189
+ // @beta
190
+ export function isHydratable(view: ViewController): view is HydratableViewController;
191
+
192
+ // @beta (undocumented)
193
+ export function isHydratable<TSource = any, TParent = any>(template: SyntheticViewTemplate<TSource, TParent>): template is HydratableSyntheticViewTemplate<TSource, TParent>;
194
+
195
+ // @beta (undocumented)
196
+ export function isHydratable<TSource = any, TParent = any>(template: ElementViewTemplate<TSource, TParent>): template is HydratableElementViewTemplate<TSource, TParent>;
197
+
198
+ // @beta (undocumented)
199
+ export function isHydratable(template: ContentTemplate): template is HydratableContentTemplate;
200
+
201
+ // @public
202
+ export const SourceLifetime: Readonly<{
203
+ readonly unknown: undefined;
204
+ readonly coupled: 1;
205
+ }>;
206
+
207
+ // @public
208
+ export type SourceLifetime = (typeof SourceLifetime)[keyof typeof SourceLifetime];
209
+
210
+ // @public
211
+ export interface SyntheticView<TSource = any, TParent = any> extends View<TSource, TParent> {
212
+ readonly firstChild: Node;
213
+ insertBefore(node: Node): void;
214
+ readonly lastChild: Node;
215
+ remove(): void;
216
+ }
217
+
218
+ // @public
219
+ export interface SyntheticViewTemplate<TSource = any, TParent = any> {
220
+ create(): SyntheticView<TSource, TParent>;
221
+ inline(): CaptureType;
222
+ }
223
+
224
+ // @public
225
+ export interface View<TSource = any, TParent = any> extends Disposable_2 {
226
+ bind(source: TSource, context?: ExecutionContext<TParent>): void;
227
+ readonly context: ExecutionContext<TParent>;
228
+ readonly isBound: boolean;
229
+ readonly source: TSource | null;
230
+ unbind(): void;
231
+ }
232
+
233
+ // @public
234
+ export interface ViewBehavior<TSource = any, TParent = any> {
235
+ bind(controller: ViewController<TSource, TParent>): void;
236
+ }
237
+
238
+ // @public
239
+ export interface ViewBehaviorBoundaries {
240
+ // (undocumented)
241
+ [factoryId: string]: ViewBoundaries;
242
+ }
243
+
244
+ // @public
245
+ export interface ViewBehaviorFactory {
246
+ createBehavior(): ViewBehavior;
247
+ id?: string;
248
+ policy?: DOMPolicy;
249
+ targetNodeId?: string;
250
+ targetTagName?: string | null;
251
+ }
252
+
253
+ // @public
254
+ export type ViewBehaviorTargets = {
255
+ [id: string]: Node;
256
+ };
257
+
258
+ // @public
259
+ export interface ViewBoundaries {
260
+ // (undocumented)
261
+ first: Node;
262
+ // (undocumented)
263
+ last: Node;
264
+ }
265
+
266
+ // @public
267
+ export interface ViewController<TSource = any, TParent = any> extends ExpressionController<TSource, TParent> {
268
+ readonly isHydrated?: Promise<boolean>;
269
+ readonly isPrerendered?: Promise<boolean>;
270
+ // @internal
271
+ readonly _skipAttrUpdates?: boolean;
272
+ readonly targets: ViewBehaviorTargets;
273
+ }
274
+
275
+ // @public (undocumented)
276
+ export interface ViewNodes {
277
+ // (undocumented)
278
+ first: Node;
279
+ // (undocumented)
280
+ last: Node;
281
+ }
282
+
283
+ // (No @packageDocumentation comment for this package)
284
+
285
+ ```
@@ -0,0 +1,135 @@
1
+ ## API Report File for "@microsoft/fast-element"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ // @public
8
+ export type ComposableStyles = string | ElementStyles | CSSStyleSheet;
9
+
10
+ // @public
11
+ export type Constructable<T = {}> = {
12
+ new (...args: any[]): T;
13
+ };
14
+
15
+ // @public
16
+ export type ConstructibleStyleStrategy = {
17
+ new (styles: (string | CSSStyleSheet)[]): StyleStrategy;
18
+ };
19
+
20
+ // @public
21
+ export interface CSSDirective {
22
+ createCSS(): ComposableStyles;
23
+ }
24
+
25
+ // @public
26
+ export const CSSDirective: Readonly<{
27
+ getForInstance: (object: any) => CSSDirectiveDefinition<Constructable<CSSDirective>> | undefined;
28
+ getByType: (key: Function) => CSSDirectiveDefinition<Constructable<CSSDirective>> | undefined;
29
+ define<TType extends Constructable<CSSDirective>>(type: any): TType;
30
+ }>;
31
+
32
+ // @public
33
+ export function cssDirective(): (type: Constructable<CSSDirective>) => void;
34
+
35
+ // @public
36
+ export interface CSSDirectiveDefinition<TType extends Constructable<CSSDirective> = Constructable<CSSDirective>> {
37
+ readonly type: TType;
38
+ }
39
+
40
+ // @public
41
+ export class ElementStyles {
42
+ constructor(styles: ReadonlyArray<ComposableStyles>);
43
+ // @internal (undocumented)
44
+ addStylesTo(target: StyleTarget): void;
45
+ // @internal (undocumented)
46
+ isAttachedTo(target: StyleTarget): boolean;
47
+ static normalize(styles: ComposableStyles | ComposableStyles[] | undefined): ElementStyles | undefined;
48
+ // @internal (undocumented)
49
+ removeStylesFrom(target: StyleTarget): void;
50
+ static setDefaultStrategy(Strategy: ConstructibleStyleStrategy): void;
51
+ get strategy(): StyleStrategy;
52
+ // (undocumented)
53
+ readonly styles: ReadonlyArray<ComposableStyles>;
54
+ static readonly supportsAdoptedStyleSheets: boolean;
55
+ withStrategy(Strategy: ConstructibleStyleStrategy): this;
56
+ }
57
+
58
+ // @public
59
+ export interface ExecutionContext<TParent = any> {
60
+ readonly event: Event;
61
+ eventDetail<TDetail>(): TDetail;
62
+ eventTarget<TTarget extends EventTarget>(): TTarget;
63
+ index: number;
64
+ readonly isEven: boolean;
65
+ readonly isFirst: boolean;
66
+ readonly isInMiddle: boolean;
67
+ readonly isLast: boolean;
68
+ readonly isOdd: boolean;
69
+ length: number;
70
+ parent: TParent;
71
+ parentContext: ExecutionContext<TParent>;
72
+ }
73
+
74
+ // @public
75
+ export const ExecutionContext: Readonly<{
76
+ default: ExecutionContext<any>;
77
+ getEvent(): Event | null;
78
+ setEvent(event: Event | null): void;
79
+ }>;
80
+
81
+ // @public
82
+ export interface ExpressionController<TSource = any, TParent = any> {
83
+ readonly context: ExecutionContext<TParent>;
84
+ readonly isBound: boolean;
85
+ onUnbind(behavior: {
86
+ unbind(controller: ExpressionController<TSource, TParent>): any;
87
+ }): void;
88
+ readonly source: TSource;
89
+ readonly sourceLifetime?: SourceLifetime;
90
+ }
91
+
92
+ // @public
93
+ export interface HostBehavior<TSource = any> {
94
+ addedCallback?(controller: HostController<TSource>): void;
95
+ connectedCallback?(controller: HostController<TSource>): void;
96
+ disconnectedCallback?(controller: HostController<TSource>): void;
97
+ removedCallback?(controller: HostController<TSource>): void;
98
+ }
99
+
100
+ // @public
101
+ export interface HostController<TSource = any> extends ExpressionController<TSource> {
102
+ addBehavior(behavior: HostBehavior<TSource>): void;
103
+ addStyles(styles: ElementStyles | HTMLStyleElement | null | undefined): void;
104
+ readonly isConnected: boolean;
105
+ mainStyles: ElementStyles | null;
106
+ removeBehavior(behavior: HostBehavior<TSource>, force?: boolean): void;
107
+ removeStyles(styles: ElementStyles | HTMLStyleElement | null | undefined): void;
108
+ }
109
+
110
+ // @public
111
+ export const SourceLifetime: Readonly<{
112
+ readonly unknown: undefined;
113
+ readonly coupled: 1;
114
+ }>;
115
+
116
+ // @public
117
+ export type SourceLifetime = (typeof SourceLifetime)[keyof typeof SourceLifetime];
118
+
119
+ // @public
120
+ export interface StyleStrategy {
121
+ addStylesTo(target: StyleTarget): void;
122
+ removeStylesFrom(target: StyleTarget): void;
123
+ }
124
+
125
+ // @public
126
+ export interface StyleTarget extends Pick<Node, "getRootNode"> {
127
+ adoptedStyleSheets?: CSSStyleSheet[];
128
+ append(styles: HTMLStyleElement): void;
129
+ querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
130
+ removeChild(styles: HTMLStyleElement): void;
131
+ }
132
+
133
+ // (No @packageDocumentation comment for this package)
134
+
135
+ ```
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@microsoft/fast-element",
3
3
  "description": "A library for constructing Web Components",
4
- "version": "2.10.3",
4
+ "version": "3.0.0-rc.1",
5
5
  "author": {
6
6
  "name": "Microsoft",
7
7
  "url": "https://discord.gg/FcSNfg4"
@@ -30,17 +30,55 @@
30
30
  "types": "./dist/dts/debug.d.ts",
31
31
  "default": "./dist/esm/debug.js"
32
32
  },
33
- "./binding/two-way.js": {
33
+ "./fast-element.js": {
34
+ "types": "./dist/dts/components/fast-element.d.ts",
35
+ "test": "./src/components/fast-element.ts",
36
+ "default": "./dist/esm/components/fast-element.js"
37
+ },
38
+ "./declarative.js": {
39
+ "types": "./dist/dts/declarative/index.d.ts",
40
+ "test": "./src/declarative/index.ts",
41
+ "default": "./dist/esm/declarative/index.js"
42
+ },
43
+ "./declarative-utilities.js": {
44
+ "types": "./dist/dts/declarative/utilities.d.ts",
45
+ "test": "./src/declarative/utilities.ts",
46
+ "default": "./dist/esm/declarative/utilities.js"
47
+ },
48
+ "./attribute-map.js": {
49
+ "types": "./dist/dts/declarative/attribute-map.d.ts",
50
+ "test": "./src/declarative/attribute-map.ts",
51
+ "default": "./dist/esm/declarative/attribute-map.js"
52
+ },
53
+ "./observer-map.js": {
54
+ "types": "./dist/dts/declarative/observer-map.d.ts",
55
+ "test": "./src/declarative/observer-map.ts",
56
+ "default": "./dist/esm/declarative/observer-map.js"
57
+ },
58
+ "./hydration.js": {
59
+ "types": "./dist/dts/hydration.d.ts",
60
+ "test": "./src/hydration.ts",
61
+ "default": "./dist/esm/hydration.js"
62
+ },
63
+ "./binding.js": {
64
+ "types": "./dist/dts/binding.d.ts",
65
+ "test": "./src/binding.ts",
66
+ "default": "./dist/esm/binding.js"
67
+ },
68
+ "./two-way.js": {
34
69
  "types": "./dist/dts/binding/two-way.d.ts",
70
+ "test": "./src/binding/two-way.ts",
35
71
  "default": "./dist/esm/binding/two-way.js"
36
72
  },
37
- "./binding/signal.js": {
73
+ "./signal.js": {
38
74
  "types": "./dist/dts/binding/signal.d.ts",
75
+ "test": "./src/binding/signal.ts",
39
76
  "default": "./dist/esm/binding/signal.js"
40
77
  },
41
78
  "./render.js": {
42
- "types": "./dist/dts/templating/render.d.ts",
43
- "default": "./dist/esm/templating/render.js"
79
+ "types": "./dist/dts/render.d.ts",
80
+ "test": "./src/render.ts",
81
+ "default": "./dist/esm/render.js"
44
82
  },
45
83
  "./utilities.js": {
46
84
  "types": "./dist/dts/utilities.d.ts",
@@ -54,68 +92,139 @@
54
92
  "types": "./dist/dts/context.d.ts",
55
93
  "default": "./dist/esm/context.js"
56
94
  },
57
- "./metadata.js": {
58
- "types": "./dist/dts/metadata.d.ts",
59
- "default": "./dist/esm/metadata.js"
60
- },
61
- "./testing.js": {
62
- "types": "./dist/dts/testing/exports.d.ts",
63
- "default": "./dist/esm/testing/exports.js"
64
- },
65
95
  "./di.js": {
66
96
  "types": "./dist/dts/di/di.d.ts",
67
97
  "default": "./dist/esm/di/di.js"
68
98
  },
69
- "./element-hydration.js": {
70
- "types": "./dist/dts/components/hydration.d.ts",
71
- "default": "./dist/esm/components/hydration.js"
72
- },
73
- "./install-element-hydration.js": {
74
- "types": "./dist/dts/components/install-hydration.d.ts",
75
- "default": "./dist/esm/components/install-hydration.js"
76
- },
77
- "./install-hydratable-view-templates.js": {
78
- "types": "./dist/dts/templating/install-hydratable-view-templates.d.ts",
79
- "default": "./dist/esm/templating/install-hydratable-view-templates.js"
80
- },
81
- "./pending-task.js": {
82
- "types": "./dist/dts/pending-task.d.ts",
83
- "default": "./dist/esm/pending-task.js"
99
+ "./dom.js": {
100
+ "types": "./dist/dts/dom.d.ts",
101
+ "test": "./src/dom.ts",
102
+ "default": "./dist/esm/dom.js"
84
103
  },
85
104
  "./dom-policy.js": {
86
105
  "types": "./dist/dts/dom-policy.d.ts",
87
106
  "default": "./dist/esm/dom-policy.js"
88
107
  },
108
+ "./updates.js": {
109
+ "types": "./dist/dts/updates.d.ts",
110
+ "test": "./src/updates.ts",
111
+ "default": "./dist/esm/updates.js"
112
+ },
113
+ "./arrays.js": {
114
+ "types": "./dist/dts/arrays.d.ts",
115
+ "test": "./src/arrays.ts",
116
+ "default": "./dist/esm/arrays.js"
117
+ },
118
+ "./array-observer.js": {
119
+ "types": "./dist/dts/array-observer.d.ts",
120
+ "test": "./src/array-observer.ts",
121
+ "default": "./dist/esm/array-observer.js"
122
+ },
123
+ "./schema.js": {
124
+ "types": "./dist/dts/schema.d.ts",
125
+ "test": "./src/schema.ts",
126
+ "default": "./dist/esm/schema.js"
127
+ },
89
128
  "./observable.js": {
90
- "types": "./dist/dts/observation/observable.d.ts",
91
- "default": "./dist/esm/observation/observable.js"
129
+ "types": "./dist/dts/observable.d.ts",
130
+ "test": "./src/observable.ts",
131
+ "default": "./dist/esm/observable.js"
132
+ },
133
+ "./volatile.js": {
134
+ "types": "./dist/dts/volatile.d.ts",
135
+ "test": "./src/volatile.ts",
136
+ "default": "./dist/esm/volatile.js"
137
+ },
138
+ "./attr.js": {
139
+ "types": "./dist/dts/attr.d.ts",
140
+ "test": "./src/attr.ts",
141
+ "default": "./dist/esm/attr.js"
142
+ },
143
+ "./css.js": {
144
+ "types": "./dist/dts/css.d.ts",
145
+ "test": "./src/css.ts",
146
+ "default": "./dist/esm/css.js"
147
+ },
148
+ "./html.js": {
149
+ "types": "./dist/dts/html.d.ts",
150
+ "test": "./src/html.ts",
151
+ "default": "./dist/esm/html.js"
152
+ },
153
+ "./templating.js": {
154
+ "types": "./dist/dts/templating.d.ts",
155
+ "test": "./src/templating.ts",
156
+ "default": "./dist/esm/templating.js"
157
+ },
158
+ "./children.js": {
159
+ "types": "./dist/dts/directives/children.d.ts",
160
+ "test": "./src/directives/children.ts",
161
+ "default": "./dist/esm/directives/children.js"
162
+ },
163
+ "./node-observation.js": {
164
+ "types": "./dist/dts/directives/node-observation.d.ts",
165
+ "test": "./src/directives/node-observation.ts",
166
+ "default": "./dist/esm/directives/node-observation.js"
167
+ },
168
+ "./ref.js": {
169
+ "types": "./dist/dts/directives/ref.d.ts",
170
+ "test": "./src/directives/ref.ts",
171
+ "default": "./dist/esm/directives/ref.js"
172
+ },
173
+ "./slotted.js": {
174
+ "types": "./dist/dts/directives/slotted.d.ts",
175
+ "test": "./src/directives/slotted.ts",
176
+ "default": "./dist/esm/directives/slotted.js"
177
+ },
178
+ "./when.js": {
179
+ "types": "./dist/dts/directives/when.d.ts",
180
+ "test": "./src/directives/when.ts",
181
+ "default": "./dist/esm/directives/when.js"
182
+ },
183
+ "./repeat.js": {
184
+ "types": "./dist/dts/directives/repeat.d.ts",
185
+ "test": "./src/directives/repeat.ts",
186
+ "default": "./dist/esm/directives/repeat.js"
187
+ },
188
+ "./styles.js": {
189
+ "types": "./dist/dts/styles.d.ts",
190
+ "test": "./src/styles.ts",
191
+ "default": "./dist/esm/styles.js"
92
192
  },
93
193
  "./package.json": "./package.json"
94
194
  },
95
195
  "unpkg": "dist/fast-element.min.js",
96
- "sideEffects": [
97
- "./dist/esm/debug.js",
98
- "./dist/esm/polyfills.js",
99
- "./dist/esm/components/install-hydration.js",
100
- "./dist/esm/templating/install-hydratable-view-templates.js",
101
- "./dist/esm/interfaces.js"
102
- ],
196
+ "sideEffects": false,
103
197
  "scripts": {
104
198
  "clean": "clean dist temp test-results",
105
199
  "doc": "api-extractor run --local",
106
200
  "doc:ci": "api-extractor run",
107
201
  "doc:exports": "node ./scripts/run-api-extractor.js",
108
202
  "doc:exports:ci": "node ./scripts/run-api-extractor.js ci",
109
- "build": "npm run build:tsc && npm run build:rollup && npm run doc && npm run doc:exports",
203
+ "build": "npm run build:tsc && npm run build:rollup && npm run build:sizes && npm run doc && npm run doc:exports && npm run build:fixtures",
204
+ "build:fixtures": "node scripts/declarative/build-fixtures.js",
205
+ "build:fixtures:webui": "node scripts/declarative/build-fixtures-with-webui.js",
110
206
  "build:rollup": "rollup -c",
207
+ "build:sizes": "node scripts/measure-sizes.js",
111
208
  "build:tsc": "tsc -p ./tsconfig.json",
112
209
  "dev": "tsc -p ./tsconfig.json -w",
210
+ "dev:declarative": "concurrently -k -n tsc,server \"npm run dev\" \"npm run test-server:declarative\"",
113
211
  "prepublishOnly": "npm run clean && npm run build",
114
212
  "lint": "biome-changed",
115
213
  "lint:fix": "biome-changed -- --fix",
116
- "test:playwright": "playwright test",
214
+ "test:playwright": "playwright test && npm run test:playwright:declarative",
215
+ "test:playwright:declarative": "playwright test --config=playwright.declarative.config.ts",
216
+ "test:chromium": "playwright test --project=chromium && npm run test:chromium:declarative",
217
+ "test:chromium:declarative": "playwright test --config=playwright.declarative.config.ts --project=chromium",
117
218
  "test-server": "npx vite test/ --clearScreen false",
219
+ "test-server:declarative": "npx vite test/declarative --clearScreen false --port 5174 --strictPort",
220
+ "test-server:declarative:webui": "npx vite temp/integrations/webui --clearScreen false --port 5174 --strictPort",
118
221
  "test": "npm run lint && npm run doc:ci && npm run doc:exports:ci && npm run test:playwright",
119
- "test:ci": "npm run doc:ci && npm run doc:exports:ci && npm run test:playwright"
222
+ "test:ci": "npm run doc:ci && npm run doc:exports:ci && npm run test:playwright",
223
+ "test:ui:declarative": "concurrently -k -n tsc,playwright \"npm run dev\" \"npx playwright test --config=playwright.declarative.config.ts --ui\"",
224
+ "test:webui-integration": "npm run build:fixtures:webui && playwright test --config=playwright.declarative.webui.config.ts"
225
+ },
226
+ "devDependencies": {
227
+ "@microsoft/fast-build": "*",
228
+ "@microsoft/webui": "0.0.10"
120
229
  }
121
230
  }
@@ -0,0 +1,26 @@
1
+ import { defineConfig, devices } from "@playwright/test";
2
+
3
+ export default defineConfig({
4
+ testDir: "./test/declarative/fixtures",
5
+ testMatch: "**/*.spec.ts",
6
+ retries: 3,
7
+ projects: [
8
+ {
9
+ name: "chromium",
10
+ use: { ...devices["Desktop Chrome"] },
11
+ },
12
+ {
13
+ name: "firefox",
14
+ use: { ...devices["Desktop Firefox"] },
15
+ },
16
+ {
17
+ name: "webkit",
18
+ use: { ...devices["Desktop Safari"] },
19
+ },
20
+ ],
21
+ webServer: {
22
+ command: "npm run test-server:declarative",
23
+ port: 5174,
24
+ reuseExistingServer: true,
25
+ },
26
+ });