@askrjs/askr 0.0.51 → 0.0.52

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 (593) hide show
  1. package/dist/bench/components/benchmark-row.d.ts +2 -2
  2. package/dist/bench/components/benchmark-row.js +0 -2
  3. package/dist/bench/components/benchmark-table.js +0 -2
  4. package/dist/benchmark.d.ts +1 -2
  5. package/dist/benchmark.js +2 -4
  6. package/dist/bin/askr-ssg.d.ts +1 -2
  7. package/dist/bin/askr-ssg.js +21 -6
  8. package/dist/boot/hydration.js +10 -11
  9. package/dist/boot/index.d.ts +1 -2
  10. package/dist/boot/index.js +20 -11
  11. package/dist/boot/root-lifecycle.d.ts +6 -3
  12. package/dist/boot/root-lifecycle.js +14 -10
  13. package/dist/boot/route-startup.js +13 -4
  14. package/dist/boot/types.d.ts +1 -2
  15. package/dist/common/attr-names.js +0 -2
  16. package/dist/common/component.d.ts +1 -2
  17. package/dist/common/control.d.ts +1 -2
  18. package/dist/common/control.js +0 -2
  19. package/dist/common/dom-range.d.ts +13 -0
  20. package/dist/common/env.js +1 -7
  21. package/dist/common/error-boundary.d.ts +1 -2
  22. package/dist/common/invariant.js +0 -2
  23. package/dist/common/jsx.d.ts +1 -2
  24. package/dist/common/jsx.js +0 -2
  25. package/dist/common/logger.js +0 -2
  26. package/dist/common/promise.js +0 -2
  27. package/dist/common/props.d.ts +1 -2
  28. package/dist/common/render-context.js +0 -2
  29. package/dist/common/route-activity.js +0 -2
  30. package/dist/common/router-internal.js +0 -2
  31. package/dist/common/router.d.ts +1 -2
  32. package/dist/common/ssr-errors.d.ts +1 -2
  33. package/dist/common/ssr-errors.js +0 -2
  34. package/dist/common/ssr.d.ts +1 -2
  35. package/dist/common/ssr.js +0 -2
  36. package/dist/common/vnode.d.ts +1 -2
  37. package/dist/common/vnode.js +0 -2
  38. package/dist/components/error-boundary.d.ts +1 -2
  39. package/dist/components/error-boundary.js +0 -2
  40. package/dist/components/link.d.ts +2 -2
  41. package/dist/components/link.js +0 -2
  42. package/dist/control/case.d.ts +1 -2
  43. package/dist/control/case.js +0 -2
  44. package/dist/control/for.d.ts +1 -2
  45. package/dist/control/for.js +0 -2
  46. package/dist/control/shared.d.ts +1 -2
  47. package/dist/control/shared.js +0 -2
  48. package/dist/control/show.d.ts +1 -2
  49. package/dist/control/show.js +0 -2
  50. package/dist/data/data-runtime.d.ts +1 -2
  51. package/dist/data/data-runtime.js +3 -5
  52. package/dist/data/invalidation-listeners.js +0 -2
  53. package/dist/data/invalidation.d.ts +1 -2
  54. package/dist/data/invalidation.js +0 -2
  55. package/dist/data/mutation-cell.d.ts +1 -2
  56. package/dist/data/mutation-cell.js +6 -5
  57. package/dist/data/query-cell.d.ts +3 -2
  58. package/dist/data/query-cell.js +43 -9
  59. package/dist/data/query-key.js +0 -2
  60. package/dist/data/shared.js +2 -3
  61. package/dist/data/types.d.ts +1 -2
  62. package/dist/foundations/icon/icon.d.ts +1 -2
  63. package/dist/foundations/icon/icon.js +0 -2
  64. package/dist/foundations/icon/icon.types.d.ts +1 -2
  65. package/dist/foundations/interactions/dismissable.d.ts +1 -2
  66. package/dist/foundations/interactions/dismissable.js +0 -2
  67. package/dist/foundations/interactions/focusable.d.ts +1 -2
  68. package/dist/foundations/interactions/focusable.js +0 -2
  69. package/dist/foundations/interactions/hoverable.d.ts +1 -2
  70. package/dist/foundations/interactions/hoverable.js +0 -2
  71. package/dist/foundations/interactions/interaction-policy.d.ts +1 -2
  72. package/dist/foundations/interactions/interaction-policy.js +0 -2
  73. package/dist/foundations/interactions/pressable.d.ts +1 -2
  74. package/dist/foundations/interactions/pressable.js +0 -2
  75. package/dist/foundations/interactions/roving-focus.d.ts +1 -2
  76. package/dist/foundations/interactions/roving-focus.js +0 -2
  77. package/dist/foundations/state/controllable.d.ts +1 -2
  78. package/dist/foundations/state/controllable.js +0 -2
  79. package/dist/foundations/structures/collection.d.ts +1 -2
  80. package/dist/foundations/structures/collection.js +0 -2
  81. package/dist/foundations/structures/layer.d.ts +1 -2
  82. package/dist/foundations/structures/layer.js +0 -2
  83. package/dist/foundations/structures/layout.d.ts +1 -2
  84. package/dist/foundations/structures/layout.js +0 -2
  85. package/dist/foundations/structures/presence.d.ts +1 -2
  86. package/dist/foundations/structures/presence.js +0 -2
  87. package/dist/foundations/structures/slot.d.ts +1 -2
  88. package/dist/foundations/structures/slot.js +0 -2
  89. package/dist/foundations/utilities/aria.d.ts +1 -2
  90. package/dist/foundations/utilities/aria.js +0 -2
  91. package/dist/foundations/utilities/compose-handlers.d.ts +1 -2
  92. package/dist/foundations/utilities/compose-handlers.js +0 -2
  93. package/dist/foundations/utilities/compose-ref.d.ts +1 -2
  94. package/dist/foundations/utilities/compose-ref.js +0 -2
  95. package/dist/foundations/utilities/event-types.d.ts +1 -2
  96. package/dist/foundations/utilities/merge-props.d.ts +1 -2
  97. package/dist/foundations/utilities/merge-props.js +0 -2
  98. package/dist/foundations/utilities/use-id.d.ts +1 -2
  99. package/dist/foundations/utilities/use-id.js +0 -2
  100. package/dist/fx/fx.d.ts +1 -2
  101. package/dist/fx/fx.js +0 -2
  102. package/dist/fx/noop.js +0 -2
  103. package/dist/fx/timing.d.ts +1 -2
  104. package/dist/fx/timing.js +0 -2
  105. package/dist/index.d.ts +1 -1
  106. package/dist/index.js +0 -2
  107. package/dist/jsx/types.d.ts +1 -2
  108. package/dist/jsx/utils.d.ts +1 -2
  109. package/dist/jsx/utils.js +0 -2
  110. package/dist/jsx-dev-runtime.d.ts +16 -2
  111. package/dist/jsx-dev-runtime.js +3 -12
  112. package/dist/jsx-runtime.d.ts +16 -2
  113. package/dist/jsx-runtime.js +15 -24
  114. package/dist/jsx-runtime2.d.ts +1 -1
  115. package/dist/renderer/attributes.js +28 -6
  116. package/dist/renderer/boundaries.js +48 -172
  117. package/dist/renderer/boundary-materialization.js +72 -0
  118. package/dist/renderer/boundary-range-adoption.js +76 -0
  119. package/dist/renderer/boundary-range-sync.js +101 -0
  120. package/dist/renderer/boundary-state.js +50 -0
  121. package/dist/renderer/child-shape.js +0 -2
  122. package/dist/renderer/children-fastpath.js +3 -3
  123. package/dist/renderer/children.js +0 -2
  124. package/dist/renderer/cleanup.js +70 -13
  125. package/dist/renderer/component-host-cleanup.js +123 -48
  126. package/dist/renderer/component-host-instances.js +59 -8
  127. package/dist/renderer/component-host-replacement.js +105 -0
  128. package/dist/renderer/component-host-results.js +138 -0
  129. package/dist/renderer/component-host.js +94 -169
  130. package/dist/renderer/dom-host.js +0 -2
  131. package/dist/renderer/dom-internal.js +110 -53
  132. package/dist/renderer/dom-range.js +161 -0
  133. package/dist/renderer/dom.js +5 -4
  134. package/dist/renderer/element-children.js +112 -32
  135. package/dist/renderer/error-boundary-dom.js +19 -11
  136. package/dist/renderer/evaluate-dom-range.js +3 -4
  137. package/dist/renderer/evaluate-reconcile.js +12 -37
  138. package/dist/renderer/evaluate.js +14 -3
  139. package/dist/renderer/fastpath.js +4 -12
  140. package/dist/renderer/for-commit-dom-map.js +6 -18
  141. package/dist/renderer/for-commit-removal.js +7 -16
  142. package/dist/renderer/for-commit-reorder.js +0 -2
  143. package/dist/renderer/for-commit.js +172 -44
  144. package/dist/renderer/hydration-boundaries.js +60 -0
  145. package/dist/renderer/hydration-listener-transaction.js +49 -0
  146. package/dist/renderer/index.js +8 -7
  147. package/dist/renderer/intrinsic-blueprint-analysis.js +202 -0
  148. package/dist/renderer/intrinsic-blueprint-bindings.js +152 -0
  149. package/dist/renderer/intrinsic-blueprint-materialization.js +100 -0
  150. package/dist/renderer/intrinsic-blueprint.js +30 -0
  151. package/dist/renderer/intrinsic-hydration-adoption.js +66 -0
  152. package/dist/renderer/keyed-children.js +3 -9
  153. package/dist/renderer/keyed.js +10 -10
  154. package/dist/renderer/namespaces.js +0 -2
  155. package/dist/renderer/prop-bindings.js +56 -21
  156. package/dist/renderer/reactive-child-dom.js +10 -4
  157. package/dist/renderer/reactive-child-sources.js +0 -2
  158. package/dist/renderer/reactive-children.js +29 -20
  159. package/dist/renderer/reconcile-commit.js +0 -2
  160. package/dist/renderer/reconcile-fastpaths.js +4 -11
  161. package/dist/renderer/reconcile-resolution.js +31 -55
  162. package/dist/renderer/reconcile.js +0 -2
  163. package/dist/renderer/retained-element-rollback.js +159 -148
  164. package/dist/renderer/stable-patch.js +3 -4
  165. package/dist/renderer/static-reuse.js +0 -2
  166. package/dist/renderer/utils.js +18 -9
  167. package/dist/router/access.js +0 -2
  168. package/dist/router/activity.d.ts +1 -2
  169. package/dist/router/activity.js +0 -2
  170. package/dist/router/authoring.d.ts +1 -2
  171. package/dist/router/authoring.js +0 -2
  172. package/dist/router/internal-types.d.ts +1 -2
  173. package/dist/router/lazy.d.ts +1 -2
  174. package/dist/router/lazy.js +0 -2
  175. package/dist/router/manifest.d.ts +1 -2
  176. package/dist/router/manifest.js +0 -2
  177. package/dist/router/match.js +0 -2
  178. package/dist/router/navigate.d.ts +1 -2
  179. package/dist/router/navigate.js +4 -7
  180. package/dist/router/navigation-registry.d.ts +1 -2
  181. package/dist/router/navigation-registry.js +0 -2
  182. package/dist/router/navigation-scroll.d.ts +1 -2
  183. package/dist/router/navigation-scroll.js +0 -2
  184. package/dist/router/navigation-targets.d.ts +3 -4
  185. package/dist/router/navigation-targets.js +419 -40
  186. package/dist/router/policy.d.ts +1 -2
  187. package/dist/router/policy.js +0 -2
  188. package/dist/router/rendering.d.ts +1 -2
  189. package/dist/router/rendering.js +4 -3
  190. package/dist/router/resolution.d.ts +1 -2
  191. package/dist/router/resolution.js +0 -2
  192. package/dist/router/route-context.js +0 -2
  193. package/dist/router/route-matching.d.ts +1 -2
  194. package/dist/router/route-matching.js +0 -2
  195. package/dist/router/route-query.d.ts +1 -2
  196. package/dist/router/route-query.js +1 -3
  197. package/dist/router/store.d.ts +1 -2
  198. package/dist/router/store.js +0 -2
  199. package/dist/runtime/access.d.ts +1 -2
  200. package/dist/runtime/access.js +0 -2
  201. package/dist/runtime/child-scope.d.ts +21 -2
  202. package/dist/runtime/child-scope.js +101 -54
  203. package/dist/runtime/component-cleanup.d.ts +1 -2
  204. package/dist/runtime/component-cleanup.js +2 -4
  205. package/dist/runtime/component-commit.js +25 -23
  206. package/dist/runtime/component-facade.js +5 -3
  207. package/dist/runtime/component-internal.d.ts +11 -6
  208. package/dist/runtime/component-internal.js +63 -45
  209. package/dist/runtime/component-lifecycle.d.ts +2 -41
  210. package/dist/runtime/component-lifecycle.js +6 -149
  211. package/dist/runtime/component-scope.d.ts +3 -4
  212. package/dist/runtime/component-scope.js +27 -8
  213. package/dist/runtime/component.js +4 -3
  214. package/dist/runtime/context.d.ts +5 -2
  215. package/dist/runtime/context.js +29 -3
  216. package/dist/runtime/control.d.ts +22 -3
  217. package/dist/runtime/control.js +168 -55
  218. package/dist/runtime/derive.d.ts +1 -2
  219. package/dist/runtime/derive.js +0 -2
  220. package/dist/runtime/dev-namespace.d.ts +5 -6
  221. package/dist/runtime/dev-namespace.js +32 -25
  222. package/dist/runtime/effect.d.ts +8 -5
  223. package/dist/runtime/effect.js +158 -75
  224. package/dist/runtime/error-boundary.d.ts +1 -2
  225. package/dist/runtime/error-boundary.js +0 -2
  226. package/dist/runtime/events.d.ts +3 -3
  227. package/dist/runtime/events.js +66 -69
  228. package/dist/runtime/execution-model.d.ts +1 -2
  229. package/dist/runtime/execution-model.js +0 -2
  230. package/dist/runtime/fastlane.d.ts +1 -2
  231. package/dist/runtime/fastlane.js +0 -2
  232. package/dist/runtime/for-bench.d.ts +1 -2
  233. package/dist/runtime/for-bench.js +9 -167
  234. package/dist/runtime/for-internal.d.ts +68 -5
  235. package/dist/runtime/for-internal.js +201 -14
  236. package/dist/runtime/for-reconcile.d.ts +1 -2
  237. package/dist/runtime/for-reconcile.js +76 -23
  238. package/dist/runtime/for-scopes.d.ts +5 -5
  239. package/dist/runtime/for-scopes.js +168 -48
  240. package/dist/runtime/for-signals.d.ts +13 -4
  241. package/dist/runtime/for-signals.js +155 -81
  242. package/dist/runtime/for-types.d.ts +1 -2
  243. package/dist/runtime/for.d.ts +2 -2
  244. package/dist/runtime/for.js +3 -3
  245. package/dist/runtime/index.d.ts +5 -5
  246. package/dist/runtime/index.js +12 -10
  247. package/dist/runtime/lifecycle-batch.d.ts +59 -0
  248. package/dist/runtime/lifecycle-batch.js +178 -0
  249. package/dist/runtime/lifecycle-operation-settlement.d.ts +5 -0
  250. package/dist/runtime/lifecycle-operation-settlement.js +51 -0
  251. package/dist/runtime/lifecycle-operations.d.ts +1 -2
  252. package/dist/runtime/lifecycle-operations.js +5 -6
  253. package/dist/runtime/perf-metrics.d.ts +8 -7
  254. package/dist/runtime/perf-metrics.js +4 -68
  255. package/dist/runtime/portal.d.ts +1 -2
  256. package/dist/runtime/portal.js +103 -11
  257. package/dist/runtime/readable.d.ts +9 -4
  258. package/dist/runtime/readable.js +41 -17
  259. package/dist/runtime/resource-cell.js +2 -4
  260. package/dist/runtime/resource-operation.d.ts +1 -2
  261. package/dist/runtime/resource-operation.js +37 -34
  262. package/dist/runtime/runtime.d.ts +1 -2
  263. package/dist/runtime/runtime.js +0 -2
  264. package/dist/runtime/scheduler.d.ts +1 -2
  265. package/dist/runtime/scheduler.js +8 -11
  266. package/dist/runtime/selector-store.js +0 -2
  267. package/dist/runtime/selector.d.ts +1 -2
  268. package/dist/runtime/selector.js +3 -11
  269. package/dist/runtime/snapshot-source.d.ts +1 -2
  270. package/dist/runtime/snapshot-source.js +0 -2
  271. package/dist/runtime/state.d.ts +1 -2
  272. package/dist/runtime/state.js +1 -3
  273. package/dist/ssg/batch-render.js +0 -2
  274. package/dist/ssg/create-static-gen.d.ts +4 -2
  275. package/dist/ssg/create-static-gen.js +65 -14
  276. package/dist/ssg/generate-metadata.js +0 -2
  277. package/dist/ssg/generation-plan.js +0 -2
  278. package/dist/ssg/incremental-manifest.js +1 -3
  279. package/dist/ssg/resolve-ssg-data.js +0 -2
  280. package/dist/ssg/route-utils.js +0 -2
  281. package/dist/ssg/static-routes.js +0 -2
  282. package/dist/ssg/types.d.ts +2 -3
  283. package/dist/ssg/write-static-files.js +16 -12
  284. package/dist/ssr/attrs.js +0 -2
  285. package/dist/ssr/boundaries.js +16 -5
  286. package/dist/ssr/component-runtime.js +1 -27
  287. package/dist/ssr/context.d.ts +1 -2
  288. package/dist/ssr/context.js +0 -2
  289. package/dist/ssr/errors.d.ts +1 -2
  290. package/dist/ssr/errors.js +0 -2
  291. package/dist/ssr/escape.js +0 -2
  292. package/dist/ssr/hydration-data.js +0 -2
  293. package/dist/ssr/hydration-verify.d.ts +1 -2
  294. package/dist/ssr/hydration-verify.js +34 -7
  295. package/dist/ssr/index-internal.d.ts +1 -2
  296. package/dist/ssr/index-internal.js +0 -2
  297. package/dist/ssr/render-keys.js +0 -2
  298. package/dist/ssr/render-resolved.d.ts +1 -2
  299. package/dist/ssr/render-resolved.js +0 -2
  300. package/dist/ssr/render-sync.d.ts +1 -2
  301. package/dist/ssr/render-sync.js +27 -19
  302. package/dist/ssr/route-policy-resolution.js +0 -2
  303. package/dist/ssr/route-render.d.ts +1 -2
  304. package/dist/ssr/route-render.js +0 -2
  305. package/dist/ssr/sink.d.ts +1 -2
  306. package/dist/ssr/sink.js +0 -2
  307. package/dist/ssr/types.d.ts +1 -2
  308. package/dist/ssr/verify-hydration.js +0 -2
  309. package/dist/testing/index.d.ts +1 -2
  310. package/dist/testing/index.js +0 -2
  311. package/package.json +57 -44
  312. package/dist/bench/components/benchmark-row.d.ts.map +0 -1
  313. package/dist/bench/components/benchmark-row.js.map +0 -1
  314. package/dist/bench/components/benchmark-table.js.map +0 -1
  315. package/dist/benchmark.d.ts.map +0 -1
  316. package/dist/benchmark.js.map +0 -1
  317. package/dist/bin/askr-ssg.d.ts.map +0 -1
  318. package/dist/bin/askr-ssg.js.map +0 -1
  319. package/dist/boot/hydration.js.map +0 -1
  320. package/dist/boot/index.d.ts.map +0 -1
  321. package/dist/boot/index.js.map +0 -1
  322. package/dist/boot/root-lifecycle.d.ts.map +0 -1
  323. package/dist/boot/root-lifecycle.js.map +0 -1
  324. package/dist/boot/route-startup.js.map +0 -1
  325. package/dist/boot/types.d.ts.map +0 -1
  326. package/dist/common/attr-names.js.map +0 -1
  327. package/dist/common/component.d.ts.map +0 -1
  328. package/dist/common/control.d.ts.map +0 -1
  329. package/dist/common/control.js.map +0 -1
  330. package/dist/common/env.js.map +0 -1
  331. package/dist/common/error-boundary.d.ts.map +0 -1
  332. package/dist/common/invariant.js.map +0 -1
  333. package/dist/common/jsx.d.ts.map +0 -1
  334. package/dist/common/jsx.js.map +0 -1
  335. package/dist/common/logger.js.map +0 -1
  336. package/dist/common/promise.js.map +0 -1
  337. package/dist/common/props.d.ts.map +0 -1
  338. package/dist/common/render-context.js.map +0 -1
  339. package/dist/common/route-activity.js.map +0 -1
  340. package/dist/common/router-internal.js.map +0 -1
  341. package/dist/common/router.d.ts.map +0 -1
  342. package/dist/common/ssr-errors.d.ts.map +0 -1
  343. package/dist/common/ssr-errors.js.map +0 -1
  344. package/dist/common/ssr.d.ts.map +0 -1
  345. package/dist/common/ssr.js.map +0 -1
  346. package/dist/common/vnode.d.ts.map +0 -1
  347. package/dist/common/vnode.js.map +0 -1
  348. package/dist/components/error-boundary.d.ts.map +0 -1
  349. package/dist/components/error-boundary.js.map +0 -1
  350. package/dist/components/link.d.ts.map +0 -1
  351. package/dist/components/link.js.map +0 -1
  352. package/dist/control/case.d.ts.map +0 -1
  353. package/dist/control/case.js.map +0 -1
  354. package/dist/control/for.d.ts.map +0 -1
  355. package/dist/control/for.js.map +0 -1
  356. package/dist/control/shared.d.ts.map +0 -1
  357. package/dist/control/shared.js.map +0 -1
  358. package/dist/control/show.d.ts.map +0 -1
  359. package/dist/control/show.js.map +0 -1
  360. package/dist/data/data-runtime.d.ts.map +0 -1
  361. package/dist/data/data-runtime.js.map +0 -1
  362. package/dist/data/invalidation-listeners.js.map +0 -1
  363. package/dist/data/invalidation.d.ts.map +0 -1
  364. package/dist/data/invalidation.js.map +0 -1
  365. package/dist/data/mutation-cell.d.ts.map +0 -1
  366. package/dist/data/mutation-cell.js.map +0 -1
  367. package/dist/data/query-cell.d.ts.map +0 -1
  368. package/dist/data/query-cell.js.map +0 -1
  369. package/dist/data/query-key.js.map +0 -1
  370. package/dist/data/shared.js.map +0 -1
  371. package/dist/data/types.d.ts.map +0 -1
  372. package/dist/foundations/icon/icon.d.ts.map +0 -1
  373. package/dist/foundations/icon/icon.js.map +0 -1
  374. package/dist/foundations/icon/icon.types.d.ts.map +0 -1
  375. package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
  376. package/dist/foundations/interactions/dismissable.js.map +0 -1
  377. package/dist/foundations/interactions/focusable.d.ts.map +0 -1
  378. package/dist/foundations/interactions/focusable.js.map +0 -1
  379. package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
  380. package/dist/foundations/interactions/hoverable.js.map +0 -1
  381. package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
  382. package/dist/foundations/interactions/interaction-policy.js.map +0 -1
  383. package/dist/foundations/interactions/pressable.d.ts.map +0 -1
  384. package/dist/foundations/interactions/pressable.js.map +0 -1
  385. package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
  386. package/dist/foundations/interactions/roving-focus.js.map +0 -1
  387. package/dist/foundations/state/controllable.d.ts.map +0 -1
  388. package/dist/foundations/state/controllable.js.map +0 -1
  389. package/dist/foundations/structures/collection.d.ts.map +0 -1
  390. package/dist/foundations/structures/collection.js.map +0 -1
  391. package/dist/foundations/structures/layer.d.ts.map +0 -1
  392. package/dist/foundations/structures/layer.js.map +0 -1
  393. package/dist/foundations/structures/layout.d.ts.map +0 -1
  394. package/dist/foundations/structures/layout.js.map +0 -1
  395. package/dist/foundations/structures/presence.d.ts.map +0 -1
  396. package/dist/foundations/structures/presence.js.map +0 -1
  397. package/dist/foundations/structures/slot.d.ts.map +0 -1
  398. package/dist/foundations/structures/slot.js.map +0 -1
  399. package/dist/foundations/utilities/aria.d.ts.map +0 -1
  400. package/dist/foundations/utilities/aria.js.map +0 -1
  401. package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
  402. package/dist/foundations/utilities/compose-handlers.js.map +0 -1
  403. package/dist/foundations/utilities/compose-ref.d.ts.map +0 -1
  404. package/dist/foundations/utilities/compose-ref.js.map +0 -1
  405. package/dist/foundations/utilities/event-types.d.ts.map +0 -1
  406. package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
  407. package/dist/foundations/utilities/merge-props.js.map +0 -1
  408. package/dist/foundations/utilities/use-id.d.ts.map +0 -1
  409. package/dist/foundations/utilities/use-id.js.map +0 -1
  410. package/dist/fx/fx.d.ts.map +0 -1
  411. package/dist/fx/fx.js.map +0 -1
  412. package/dist/fx/noop.js.map +0 -1
  413. package/dist/fx/timing.d.ts.map +0 -1
  414. package/dist/fx/timing.js.map +0 -1
  415. package/dist/index.js.map +0 -1
  416. package/dist/jsx/types.d.ts.map +0 -1
  417. package/dist/jsx/utils.d.ts.map +0 -1
  418. package/dist/jsx/utils.js.map +0 -1
  419. package/dist/jsx-dev-runtime.d.ts.map +0 -1
  420. package/dist/jsx-dev-runtime.js.map +0 -1
  421. package/dist/jsx-runtime.d.ts.map +0 -1
  422. package/dist/jsx-runtime.js.map +0 -1
  423. package/dist/renderer/attributes.js.map +0 -1
  424. package/dist/renderer/boundaries.js.map +0 -1
  425. package/dist/renderer/child-shape.js.map +0 -1
  426. package/dist/renderer/children-fastpath.js.map +0 -1
  427. package/dist/renderer/children.js.map +0 -1
  428. package/dist/renderer/cleanup.js.map +0 -1
  429. package/dist/renderer/component-host-cleanup.js.map +0 -1
  430. package/dist/renderer/component-host-instances.js.map +0 -1
  431. package/dist/renderer/component-host.js.map +0 -1
  432. package/dist/renderer/dom-host.js.map +0 -1
  433. package/dist/renderer/dom-internal.js.map +0 -1
  434. package/dist/renderer/element-children.js.map +0 -1
  435. package/dist/renderer/error-boundary-dom.js.map +0 -1
  436. package/dist/renderer/evaluate-dom-range.js.map +0 -1
  437. package/dist/renderer/evaluate-reconcile.js.map +0 -1
  438. package/dist/renderer/evaluate.js.map +0 -1
  439. package/dist/renderer/fastpath.js.map +0 -1
  440. package/dist/renderer/for-commit-dom-map.js.map +0 -1
  441. package/dist/renderer/for-commit-removal.js.map +0 -1
  442. package/dist/renderer/for-commit-reorder.js.map +0 -1
  443. package/dist/renderer/for-commit.js.map +0 -1
  444. package/dist/renderer/index.js.map +0 -1
  445. package/dist/renderer/keyed-children.js.map +0 -1
  446. package/dist/renderer/keyed.js.map +0 -1
  447. package/dist/renderer/namespaces.js.map +0 -1
  448. package/dist/renderer/prop-bindings.js.map +0 -1
  449. package/dist/renderer/reactive-child-dom.js.map +0 -1
  450. package/dist/renderer/reactive-child-sources.js.map +0 -1
  451. package/dist/renderer/reactive-children.js.map +0 -1
  452. package/dist/renderer/reconcile-commit.js.map +0 -1
  453. package/dist/renderer/reconcile-fastpaths.js.map +0 -1
  454. package/dist/renderer/reconcile-resolution.js.map +0 -1
  455. package/dist/renderer/reconcile.js.map +0 -1
  456. package/dist/renderer/retained-element-rollback.js.map +0 -1
  457. package/dist/renderer/stable-patch.js.map +0 -1
  458. package/dist/renderer/static-reuse.js.map +0 -1
  459. package/dist/renderer/utils.js.map +0 -1
  460. package/dist/router/access.js.map +0 -1
  461. package/dist/router/activity.d.ts.map +0 -1
  462. package/dist/router/activity.js.map +0 -1
  463. package/dist/router/authoring.d.ts.map +0 -1
  464. package/dist/router/authoring.js.map +0 -1
  465. package/dist/router/internal-types.d.ts.map +0 -1
  466. package/dist/router/lazy.d.ts.map +0 -1
  467. package/dist/router/lazy.js.map +0 -1
  468. package/dist/router/manifest.d.ts.map +0 -1
  469. package/dist/router/manifest.js.map +0 -1
  470. package/dist/router/match.js.map +0 -1
  471. package/dist/router/navigate.d.ts.map +0 -1
  472. package/dist/router/navigate.js.map +0 -1
  473. package/dist/router/navigation-registry.d.ts.map +0 -1
  474. package/dist/router/navigation-registry.js.map +0 -1
  475. package/dist/router/navigation-scroll.d.ts.map +0 -1
  476. package/dist/router/navigation-scroll.js.map +0 -1
  477. package/dist/router/navigation-targets.d.ts.map +0 -1
  478. package/dist/router/navigation-targets.js.map +0 -1
  479. package/dist/router/policy.d.ts.map +0 -1
  480. package/dist/router/policy.js.map +0 -1
  481. package/dist/router/rendering.d.ts.map +0 -1
  482. package/dist/router/rendering.js.map +0 -1
  483. package/dist/router/resolution.d.ts.map +0 -1
  484. package/dist/router/resolution.js.map +0 -1
  485. package/dist/router/route-context.js.map +0 -1
  486. package/dist/router/route-matching.d.ts.map +0 -1
  487. package/dist/router/route-matching.js.map +0 -1
  488. package/dist/router/route-query.d.ts.map +0 -1
  489. package/dist/router/route-query.js.map +0 -1
  490. package/dist/router/store.d.ts.map +0 -1
  491. package/dist/router/store.js.map +0 -1
  492. package/dist/runtime/access.d.ts.map +0 -1
  493. package/dist/runtime/access.js.map +0 -1
  494. package/dist/runtime/child-scope.d.ts.map +0 -1
  495. package/dist/runtime/child-scope.js.map +0 -1
  496. package/dist/runtime/component-cleanup.d.ts.map +0 -1
  497. package/dist/runtime/component-cleanup.js.map +0 -1
  498. package/dist/runtime/component-commit.js.map +0 -1
  499. package/dist/runtime/component-internal.d.ts.map +0 -1
  500. package/dist/runtime/component-internal.js.map +0 -1
  501. package/dist/runtime/component-lifecycle.d.ts.map +0 -1
  502. package/dist/runtime/component-lifecycle.js.map +0 -1
  503. package/dist/runtime/component-scope.d.ts.map +0 -1
  504. package/dist/runtime/component-scope.js.map +0 -1
  505. package/dist/runtime/context.d.ts.map +0 -1
  506. package/dist/runtime/context.js.map +0 -1
  507. package/dist/runtime/control.d.ts.map +0 -1
  508. package/dist/runtime/control.js.map +0 -1
  509. package/dist/runtime/derive.d.ts.map +0 -1
  510. package/dist/runtime/derive.js.map +0 -1
  511. package/dist/runtime/dev-namespace.d.ts.map +0 -1
  512. package/dist/runtime/dev-namespace.js.map +0 -1
  513. package/dist/runtime/effect.d.ts.map +0 -1
  514. package/dist/runtime/effect.js.map +0 -1
  515. package/dist/runtime/error-boundary.d.ts.map +0 -1
  516. package/dist/runtime/error-boundary.js.map +0 -1
  517. package/dist/runtime/events.d.ts.map +0 -1
  518. package/dist/runtime/events.js.map +0 -1
  519. package/dist/runtime/execution-model.d.ts.map +0 -1
  520. package/dist/runtime/execution-model.js.map +0 -1
  521. package/dist/runtime/fastlane.d.ts.map +0 -1
  522. package/dist/runtime/fastlane.js.map +0 -1
  523. package/dist/runtime/for-bench.d.ts.map +0 -1
  524. package/dist/runtime/for-bench.js.map +0 -1
  525. package/dist/runtime/for-internal.d.ts.map +0 -1
  526. package/dist/runtime/for-internal.js.map +0 -1
  527. package/dist/runtime/for-reconcile.d.ts.map +0 -1
  528. package/dist/runtime/for-reconcile.js.map +0 -1
  529. package/dist/runtime/for-scopes.d.ts.map +0 -1
  530. package/dist/runtime/for-scopes.js.map +0 -1
  531. package/dist/runtime/for-signals.d.ts.map +0 -1
  532. package/dist/runtime/for-signals.js.map +0 -1
  533. package/dist/runtime/for-types.d.ts.map +0 -1
  534. package/dist/runtime/lifecycle-operations.d.ts.map +0 -1
  535. package/dist/runtime/lifecycle-operations.js.map +0 -1
  536. package/dist/runtime/perf-metrics.d.ts.map +0 -1
  537. package/dist/runtime/perf-metrics.js.map +0 -1
  538. package/dist/runtime/portal.d.ts.map +0 -1
  539. package/dist/runtime/portal.js.map +0 -1
  540. package/dist/runtime/readable.d.ts.map +0 -1
  541. package/dist/runtime/readable.js.map +0 -1
  542. package/dist/runtime/resource-cell.js.map +0 -1
  543. package/dist/runtime/resource-operation.d.ts.map +0 -1
  544. package/dist/runtime/resource-operation.js.map +0 -1
  545. package/dist/runtime/runtime.d.ts.map +0 -1
  546. package/dist/runtime/runtime.js.map +0 -1
  547. package/dist/runtime/scheduler.d.ts.map +0 -1
  548. package/dist/runtime/scheduler.js.map +0 -1
  549. package/dist/runtime/selector-store.js.map +0 -1
  550. package/dist/runtime/selector.d.ts.map +0 -1
  551. package/dist/runtime/selector.js.map +0 -1
  552. package/dist/runtime/snapshot-source.d.ts.map +0 -1
  553. package/dist/runtime/snapshot-source.js.map +0 -1
  554. package/dist/runtime/state.d.ts.map +0 -1
  555. package/dist/runtime/state.js.map +0 -1
  556. package/dist/ssg/batch-render.js.map +0 -1
  557. package/dist/ssg/create-static-gen.d.ts.map +0 -1
  558. package/dist/ssg/create-static-gen.js.map +0 -1
  559. package/dist/ssg/generate-metadata.js.map +0 -1
  560. package/dist/ssg/generation-plan.js.map +0 -1
  561. package/dist/ssg/incremental-manifest.js.map +0 -1
  562. package/dist/ssg/resolve-ssg-data.js.map +0 -1
  563. package/dist/ssg/route-utils.js.map +0 -1
  564. package/dist/ssg/static-routes.js.map +0 -1
  565. package/dist/ssg/types.d.ts.map +0 -1
  566. package/dist/ssg/write-static-files.js.map +0 -1
  567. package/dist/ssr/attrs.js.map +0 -1
  568. package/dist/ssr/boundaries.js.map +0 -1
  569. package/dist/ssr/component-runtime.js.map +0 -1
  570. package/dist/ssr/context.d.ts.map +0 -1
  571. package/dist/ssr/context.js.map +0 -1
  572. package/dist/ssr/errors.d.ts.map +0 -1
  573. package/dist/ssr/errors.js.map +0 -1
  574. package/dist/ssr/escape.js.map +0 -1
  575. package/dist/ssr/hydration-data.js.map +0 -1
  576. package/dist/ssr/hydration-verify.d.ts.map +0 -1
  577. package/dist/ssr/hydration-verify.js.map +0 -1
  578. package/dist/ssr/index-internal.d.ts.map +0 -1
  579. package/dist/ssr/index-internal.js.map +0 -1
  580. package/dist/ssr/render-keys.js.map +0 -1
  581. package/dist/ssr/render-resolved.d.ts.map +0 -1
  582. package/dist/ssr/render-resolved.js.map +0 -1
  583. package/dist/ssr/render-sync.d.ts.map +0 -1
  584. package/dist/ssr/render-sync.js.map +0 -1
  585. package/dist/ssr/route-policy-resolution.js.map +0 -1
  586. package/dist/ssr/route-render.d.ts.map +0 -1
  587. package/dist/ssr/route-render.js.map +0 -1
  588. package/dist/ssr/sink.d.ts.map +0 -1
  589. package/dist/ssr/sink.js.map +0 -1
  590. package/dist/ssr/types.d.ts.map +0 -1
  591. package/dist/ssr/verify-hydration.js.map +0 -1
  592. package/dist/testing/index.d.ts.map +0 -1
  593. package/dist/testing/index.js.map +0 -1
@@ -0,0 +1,202 @@
1
+ import { _isDOMElement } from "../common/vnode.js";
2
+ import "./types.js";
3
+ import { extractKey, tagNamesEqualIgnoreCase } from "./utils.js";
4
+ import { applyScalarPropValue } from "./attributes.js";
5
+ import { isFragmentVNode } from "./child-shape.js";
6
+ //#region src/renderer/intrinsic-blueprint-analysis.ts
7
+ function getVNodeChildren(vnode) {
8
+ return vnode.props?.children ?? vnode.children;
9
+ }
10
+ function getDirectReactiveCompute(value) {
11
+ if (typeof value === "function") return value;
12
+ if (Array.isArray(value)) return value.length === 1 ? getDirectReactiveCompute(value[0]) : null;
13
+ if (typeof value === "object" && value !== null && isFragmentVNode(value)) return getDirectReactiveCompute(getVNodeChildren(value));
14
+ return null;
15
+ }
16
+ const ownerBlueprints = /* @__PURE__ */ new WeakMap();
17
+ function getBlueprintKey(parentNamespace) {
18
+ return parentNamespace ?? "";
19
+ }
20
+ function getBlueprint(owner, ownerDocument, parentNamespace) {
21
+ return ownerBlueprints.get(owner)?.get(ownerDocument)?.get(getBlueprintKey(parentNamespace));
22
+ }
23
+ function cacheBlueprint(owner, ownerDocument, parentNamespace, blueprint) {
24
+ let byDocument = ownerBlueprints.get(owner);
25
+ if (!byDocument) {
26
+ byDocument = /* @__PURE__ */ new WeakMap();
27
+ ownerBlueprints.set(owner, byDocument);
28
+ }
29
+ let byNamespace = byDocument.get(ownerDocument);
30
+ if (!byNamespace) {
31
+ byNamespace = /* @__PURE__ */ new Map();
32
+ byDocument.set(ownerDocument, byNamespace);
33
+ }
34
+ const key = getBlueprintKey(parentNamespace);
35
+ if (!byNamespace.has(key)) byNamespace.set(key, blueprint);
36
+ }
37
+ function isBlueprintKeyProp(key) {
38
+ return key === "key" || key === "data-key" || key === "data-askr-key-kind";
39
+ }
40
+ function classifyProp(value, key) {
41
+ if (key === "ref") return { kind: "ref" };
42
+ if (key.startsWith("on") && key.length > 2) return typeof value === "function" ? { kind: "event" } : null;
43
+ if (typeof value === "function") return { kind: "reactive" };
44
+ if (value === void 0 || value === null || value === false) return { kind: "empty" };
45
+ if (typeof value === "object") return null;
46
+ return {
47
+ kind: "static",
48
+ value
49
+ };
50
+ }
51
+ function collectReactiveSlotShapes(value, slots) {
52
+ if (Array.isArray(value)) {
53
+ for (const child of value) if (!collectReactiveSlotShapes(child, slots)) return false;
54
+ return true;
55
+ }
56
+ if (value === null || value === void 0 || value === false) return true;
57
+ if (typeof value === "function") {
58
+ slots.push({ kind: "dynamic" });
59
+ return true;
60
+ }
61
+ if (typeof value === "string" || typeof value === "number") {
62
+ slots.push({
63
+ kind: "static",
64
+ value: String(value)
65
+ });
66
+ return true;
67
+ }
68
+ if (typeof value === "object" && value !== null && isFragmentVNode(value)) return collectReactiveSlotShapes(getVNodeChildren(value), slots);
69
+ return false;
70
+ }
71
+ function collectStaticVNodeChildren(value, children) {
72
+ if (Array.isArray(value)) {
73
+ for (const child of value) if (!collectStaticVNodeChildren(child, children)) return false;
74
+ return true;
75
+ }
76
+ if (value === null || value === void 0 || typeof value === "boolean") return true;
77
+ if (typeof value === "string" || typeof value === "number") {
78
+ children.push(String(value));
79
+ return true;
80
+ }
81
+ if (_isDOMElement(value)) {
82
+ if (typeof value.type === "string") {
83
+ children.push(value);
84
+ return true;
85
+ }
86
+ if (typeof value.type === "symbol" && isFragmentVNode(value)) return collectStaticVNodeChildren(getVNodeChildren(value), children);
87
+ }
88
+ return false;
89
+ }
90
+ function buildElementShape(template, vnode) {
91
+ if (typeof vnode.type !== "string" || !tagNamesEqualIgnoreCase(template.tagName, vnode.type)) return null;
92
+ const props = vnode.props ?? {};
93
+ const propShapes = Object.create(null);
94
+ let propCount = 0;
95
+ for (const key in props) {
96
+ if (key === "children" || isBlueprintKeyProp(key)) continue;
97
+ const propShape = classifyProp(props[key], key);
98
+ if (!propShape) return null;
99
+ propShapes[key] = propShape;
100
+ propCount += 1;
101
+ if (propShape.kind === "reactive") applyScalarPropValue(template, key, null, vnode.type);
102
+ }
103
+ if (extractKey(vnode) !== void 0) template.removeAttribute("data-key");
104
+ const children = vnode.props?.children ?? vnode.children;
105
+ const reactiveSlots = [];
106
+ if (collectReactiveSlotShapes(children, reactiveSlots)) {
107
+ if (reactiveSlots.some((slot) => slot.kind === "dynamic")) {
108
+ if (template.childNodes.length !== reactiveSlots.length) return null;
109
+ for (let index = 0; index < reactiveSlots.length; index += 1) {
110
+ const child = template.childNodes[index];
111
+ const slot = reactiveSlots[index];
112
+ if (!child || child.nodeType !== Node.TEXT_NODE) return null;
113
+ if (slot.kind === "static" && child.data !== slot.value) return null;
114
+ if (slot.kind === "dynamic") child.data = "";
115
+ }
116
+ return {
117
+ tagName: vnode.type,
118
+ namespaceURI: template.namespaceURI,
119
+ propCount,
120
+ props: propShapes,
121
+ children: {
122
+ kind: "reactive",
123
+ slots: reactiveSlots
124
+ }
125
+ };
126
+ }
127
+ }
128
+ const staticChildren = [];
129
+ if (!collectStaticVNodeChildren(children, staticChildren)) return null;
130
+ if (template.childNodes.length !== staticChildren.length) return null;
131
+ const childShapes = [];
132
+ for (let index = 0; index < staticChildren.length; index += 1) {
133
+ const child = staticChildren[index];
134
+ const templateChild = template.childNodes[index];
135
+ if (typeof child === "string") {
136
+ if (templateChild.nodeType !== Node.TEXT_NODE || templateChild.data !== child) return null;
137
+ childShapes.push({
138
+ kind: "text",
139
+ value: child
140
+ });
141
+ continue;
142
+ }
143
+ if (!(templateChild instanceof Element)) return null;
144
+ const shape = buildElementShape(templateChild, child);
145
+ if (!shape) return null;
146
+ childShapes.push({
147
+ kind: "element",
148
+ shape
149
+ });
150
+ }
151
+ return {
152
+ tagName: vnode.type,
153
+ namespaceURI: template.namespaceURI,
154
+ propCount,
155
+ props: propShapes,
156
+ children: {
157
+ kind: "static",
158
+ slots: childShapes
159
+ }
160
+ };
161
+ }
162
+ function buildBlueprint(element, vnode) {
163
+ const template = element.cloneNode(true);
164
+ const shape = buildElementShape(template, vnode);
165
+ return shape ? {
166
+ template,
167
+ shape,
168
+ elementCount: countBlueprintElements(shape)
169
+ } : null;
170
+ }
171
+ function countBlueprintElements(shape) {
172
+ if (shape.children.kind === "reactive") return 1;
173
+ return 1 + shape.children.slots.reduce((count, slot) => count + (slot.kind === "element" ? countBlueprintElements(slot.shape) : 0), 0);
174
+ }
175
+ function matchPropShape(expected, value, key) {
176
+ switch (expected.kind) {
177
+ case "ref": return key === "ref";
178
+ case "event": return key.startsWith("on") && key.length > 2 && typeof value === "function";
179
+ case "reactive": return !(key.startsWith("on") && key.length > 2) && typeof value === "function";
180
+ case "empty": return value === void 0 || value === null || value === false;
181
+ case "static": return typeof value !== "object" && Object.is(value, expected.value);
182
+ }
183
+ }
184
+ function matchReactiveSlots(value, slots, startIndex) {
185
+ if (Array.isArray(value)) {
186
+ let index = startIndex;
187
+ for (const child of value) {
188
+ index = matchReactiveSlots(child, slots, index);
189
+ if (index < 0) return -1;
190
+ }
191
+ return index;
192
+ }
193
+ if (value === null || value === void 0 || value === false) return startIndex;
194
+ const slot = slots[startIndex];
195
+ if (!slot) return -1;
196
+ if (typeof value === "function") return slot.kind === "dynamic" ? startIndex + 1 : -1;
197
+ if (typeof value === "string" || typeof value === "number") return slot.kind === "static" && slot.value === String(value) ? startIndex + 1 : -1;
198
+ if (typeof value === "object" && value !== null && isFragmentVNode(value)) return matchReactiveSlots(getVNodeChildren(value), slots, startIndex);
199
+ return -1;
200
+ }
201
+ //#endregion
202
+ export { buildBlueprint, cacheBlueprint, getBlueprint, getDirectReactiveCompute, getVNodeChildren, isBlueprintKeyProp, matchPropShape, matchReactiveSlots };
@@ -0,0 +1,152 @@
1
+ import { getRuntimeEnv } from "../common/env.js";
2
+ import { logger } from "../common/logger.js";
3
+ import { incrementPerfMetric } from "../runtime/perf-metrics.js";
4
+ import "../runtime/dev-namespace.js";
5
+ import { createOwnedFineGrainedEffect } from "../runtime/effect.js";
6
+ import "../runtime/index.js";
7
+ import { REACTIVE_CHILDREN_KEY, setDirectElementReactivePropCleanup, setFreshElementReactivePropCleanup, teardownNodeSubtree } from "./cleanup.js";
8
+ import "./env.js";
9
+ import { applyScalarPropValue } from "./attributes.js";
10
+ import { normalizeOwnedReactiveTextValue } from "./reactive-child-sources.js";
11
+ import { createReactiveScalarChildCleanupEntry, syncReactiveScalarChild } from "./reactive-children.js";
12
+ import { applyFreshElementBindings, createReactivePropCleanupEntry } from "./prop-bindings.js";
13
+ const EMPTY_CLASS_TOKENS = [];
14
+ var BlueprintBinding = class {
15
+ constructor(kind, element, compute, propName, tagName, textNode) {
16
+ this.kind = kind;
17
+ this.element = element;
18
+ this.propName = propName;
19
+ this.tagName = tagName;
20
+ this.textNode = textNode;
21
+ this.active = true;
22
+ this.group = null;
23
+ this.lastClassTokens = null;
24
+ this.hasValue = false;
25
+ this.lastValue = void 0;
26
+ this.nextValue = void 0;
27
+ this.compute = compute;
28
+ }
29
+ get fnRef() {
30
+ return this.compute;
31
+ }
32
+ set fnRef(nextValue) {
33
+ this.compute = nextValue;
34
+ }
35
+ get groupedScalar() {
36
+ return this.kind === "text";
37
+ }
38
+ cleanup() {
39
+ if (this.group) cleanupGroupedBinding(this.group, this);
40
+ }
41
+ updateFn(nextValue) {
42
+ if (this.group) updateGroupedBinding(this.group, this, nextValue);
43
+ }
44
+ restoreFn(nextValue) {
45
+ const group = this.group;
46
+ if (this.kind === "text") return createReactiveScalarChildCleanupEntry(this.element, [{
47
+ kind: "dynamic",
48
+ compute: nextValue
49
+ }], group.host);
50
+ return createReactivePropCleanupEntry(this.element, this.propName, nextValue, this.tagName);
51
+ }
52
+ };
53
+ function commitBlueprintBinding(binding, value, host) {
54
+ const previousValue = binding.lastValue;
55
+ if (binding.hasValue && Object.is(previousValue, value)) return;
56
+ if (!binding.hasValue && binding.kind === "text" && binding.textNode) {
57
+ const normalized = normalizeOwnedReactiveTextValue(value);
58
+ if (normalized !== null) {
59
+ if (binding.textNode.data !== normalized) binding.textNode.data = normalized;
60
+ binding.lastValue = value;
61
+ binding.hasValue = true;
62
+ return;
63
+ }
64
+ }
65
+ if (binding.kind === "prop") {
66
+ incrementPerfMetric("reactivePropReevaluations");
67
+ if (!binding.hasValue && (binding.propName === "class" || binding.propName === "className") && (value === "" || value === void 0 || value === null || value === false)) binding.lastClassTokens = EMPTY_CLASS_TOKENS;
68
+ else applyScalarPropValue(binding.element, binding.propName, value, binding.tagName, binding.hasValue ? previousValue : void 0, binding);
69
+ } else {
70
+ const normalized = normalizeOwnedReactiveTextValue(value);
71
+ if (normalized === null) {
72
+ binding.textNode = null;
73
+ host.updateElementChildren(binding.element, value);
74
+ } else {
75
+ let textNode = binding.textNode;
76
+ if (!textNode || binding.element.firstChild !== textNode || binding.element.lastChild !== textNode) {
77
+ host.updateElementChildren(binding.element, normalized);
78
+ textNode = binding.element.childNodes.length === 1 && binding.element.firstChild?.nodeType === Node.TEXT_NODE ? binding.element.firstChild : null;
79
+ binding.textNode = textNode;
80
+ }
81
+ if (textNode && textNode.data !== normalized) textNode.data = normalized;
82
+ }
83
+ }
84
+ binding.lastValue = value;
85
+ binding.hasValue = true;
86
+ }
87
+ function updateGroupedBinding(group, binding, nextValue) {
88
+ if (!binding.active || !group.effect) return;
89
+ if (binding.kind === "text") {
90
+ const nextSlot = nextValue[0];
91
+ const nextCompute = typeof nextValue === "function" ? nextValue : nextSlot?.kind === "dynamic" ? nextSlot.compute : null;
92
+ if (!nextCompute) return;
93
+ binding.compute = nextCompute;
94
+ } else binding.compute = nextValue;
95
+ group.effect.flush();
96
+ }
97
+ function cleanupGroupedBinding(group, binding) {
98
+ if (!binding.active) return;
99
+ binding.active = false;
100
+ group.activeCount -= 1;
101
+ if (group.activeCount === 0) {
102
+ group.effect?.cleanup();
103
+ group.effect = null;
104
+ }
105
+ }
106
+ function computeBlueprintBindings() {
107
+ const group = this._owner;
108
+ for (const binding of group.bindings) if (binding.active) binding.nextValue = binding.compute();
109
+ return group.bindings;
110
+ }
111
+ function commitBlueprintBindings(_bindings, _previousBindings) {
112
+ const group = this._owner;
113
+ for (const binding of group.bindings) if (binding.active) commitBlueprintBinding(binding, binding.nextValue, group.host);
114
+ }
115
+ function blueprintBindingsChanged(_previousBindings, _nextBindings) {
116
+ return false;
117
+ }
118
+ function reportBlueprintBindingError(error) {
119
+ if (getRuntimeEnv().NODE_ENV !== "production") logger.warn("[Askr] Blueprint reactive update failed:", error);
120
+ }
121
+ function mountBlueprintBindingGroup(bindings, host) {
122
+ if (bindings.length === 0) return;
123
+ const group = {
124
+ _coalesceForItemReads: true,
125
+ bindings,
126
+ activeCount: bindings.length,
127
+ effect: null,
128
+ host
129
+ };
130
+ group.effect = createOwnedFineGrainedEffect("reactive", computeBlueprintBindings, commitBlueprintBindings, blueprintBindingsChanged, reportBlueprintBindingError, group);
131
+ let previousElement = null;
132
+ for (const binding of bindings) {
133
+ binding.group = group;
134
+ const bindingKey = binding.kind === "text" ? REACTIVE_CHILDREN_KEY : binding.propName;
135
+ if (binding.element === previousElement) setDirectElementReactivePropCleanup(binding.element, bindingKey, binding);
136
+ else {
137
+ setFreshElementReactivePropCleanup(binding.element, bindingKey, binding);
138
+ previousElement = binding.element;
139
+ }
140
+ }
141
+ }
142
+ function publishPreparedBlueprintBindings(element, props) {
143
+ applyFreshElementBindings(element, props);
144
+ }
145
+ function cleanupBlueprintElement(element) {
146
+ teardownNodeSubtree(element);
147
+ }
148
+ function syncPreparedBlueprintChild(element, value, host) {
149
+ return syncReactiveScalarChild(element, value, host);
150
+ }
151
+ //#endregion
152
+ export { BlueprintBinding, cleanupBlueprintElement, mountBlueprintBindingGroup, publishPreparedBlueprintBindings, syncPreparedBlueprintChild };
@@ -0,0 +1,100 @@
1
+ import { _isDOMElement } from "../common/vnode.js";
2
+ import "./types.js";
3
+ import { isBenchMetricScopeActive, recordBenchCounter } from "../runtime/for-bench.js";
4
+ import "../runtime/index.js";
5
+ import { materializeFreshKey } from "./attributes.js";
6
+ import { isFragmentVNode } from "./child-shape.js";
7
+ import { getDirectReactiveCompute, getVNodeChildren, isBlueprintKeyProp, matchPropShape, matchReactiveSlots } from "./intrinsic-blueprint-analysis.js";
8
+ import { BlueprintBinding, cleanupBlueprintElement, mountBlueprintBindingGroup, publishPreparedBlueprintBindings, syncPreparedBlueprintChild } from "./intrinsic-blueprint-bindings.js";
9
+ //#region src/renderer/intrinsic-blueprint-materialization.ts
10
+ const BLUEPRINT_PUBLISH_BINDINGS = 0;
11
+ const BLUEPRINT_SYNC_REACTIVE_CHILD = 1;
12
+ function prepareElementBlueprint(element, vnode, shape, bindings, deferred) {
13
+ const vnodeType = vnode.type;
14
+ if (typeof vnodeType !== "string" || shape.tagName !== vnodeType && shape.tagName.toLowerCase() !== vnodeType.toLowerCase()) return false;
15
+ const props = vnode.props ?? {};
16
+ let propCount = 0;
17
+ let shouldPublishBindings = false;
18
+ for (const key in props) {
19
+ if (key === "children" || isBlueprintKeyProp(key)) continue;
20
+ const expected = shape.props[key];
21
+ if (!expected || !matchPropShape(expected, props[key], key)) return false;
22
+ propCount += 1;
23
+ if (expected.kind === "reactive") bindings.push(new BlueprintBinding("prop", element, props[key], key, vnodeType, null));
24
+ else if (expected.kind === "event" || expected.kind === "ref") shouldPublishBindings = true;
25
+ }
26
+ if (propCount !== shape.propCount) return false;
27
+ materializeFreshKey(element, vnode, props);
28
+ if (shouldPublishBindings) deferred.push(BLUEPRINT_PUBLISH_BINDINGS, element, props);
29
+ const children = vnode.props?.children ?? vnode.children;
30
+ if (shape.children.kind === "reactive") {
31
+ if (shape.children.slots.length === 1 && shape.children.slots[0]?.kind === "dynamic") {
32
+ const compute = getDirectReactiveCompute(children);
33
+ const textNode = element.firstChild;
34
+ if (compute) {
35
+ bindings.push(new BlueprintBinding("text", element, compute, null, null, textNode));
36
+ return true;
37
+ }
38
+ }
39
+ if (matchReactiveSlots(children, shape.children.slots, 0) !== shape.children.slots.length) return false;
40
+ deferred.push(BLUEPRINT_SYNC_REACTIVE_CHILD, element, children);
41
+ return true;
42
+ }
43
+ if (shape.children.slots.length === 0 && (children === null || children === void 0 || typeof children === "boolean")) return true;
44
+ const staticSlot = shape.children.slots.length === 1 ? shape.children.slots[0] : void 0;
45
+ if (staticSlot?.kind === "element" && _isDOMElement(children) && typeof children.type === "string") {
46
+ const childNode = element.firstChild;
47
+ if (!(childNode instanceof Element)) return false;
48
+ return prepareElementBlueprint(childNode, children, staticSlot.shape, bindings, deferred);
49
+ }
50
+ return prepareStaticSlots(element, children, shape.children.slots, 0, bindings, deferred) === shape.children.slots.length;
51
+ }
52
+ function prepareStaticSlots(element, value, slots, startIndex, bindings, deferred) {
53
+ if (Array.isArray(value)) {
54
+ let index = startIndex;
55
+ for (const child of value) {
56
+ index = prepareStaticSlots(element, child, slots, index, bindings, deferred);
57
+ if (index < 0) return -1;
58
+ }
59
+ return index;
60
+ }
61
+ if (value === null || value === void 0 || typeof value === "boolean") return startIndex;
62
+ const slot = slots[startIndex];
63
+ const childNode = element.childNodes[startIndex];
64
+ if (typeof value === "string" || typeof value === "number") return slot?.kind === "text" && slot.value === String(value) ? startIndex + 1 : -1;
65
+ if (!_isDOMElement(value)) return -1;
66
+ if (typeof value.type === "symbol") return isFragmentVNode(value) ? prepareStaticSlots(element, getVNodeChildren(value), slots, startIndex, bindings, deferred) : -1;
67
+ if (slot?.kind === "element" && childNode !== void 0) return prepareElementBlueprint(childNode, value, slot.shape, bindings, deferred) ? startIndex + 1 : -1;
68
+ return -1;
69
+ }
70
+ function publishPreparedBlueprint(deferred, host) {
71
+ for (let index = 0; index < deferred.length; index += 3) {
72
+ const operation = deferred[index];
73
+ const element = deferred[index + 1];
74
+ const value = deferred[index + 2];
75
+ if (operation === BLUEPRINT_PUBLISH_BINDINGS) publishPreparedBlueprintBindings(element, value);
76
+ else if (!syncPreparedBlueprintChild(element, value, host)) throw new Error("[askr] Component blueprint reactive shape changed.");
77
+ }
78
+ }
79
+ function instantiateBlueprint(blueprint, vnode, host) {
80
+ const element = blueprint.template.cloneNode(true);
81
+ const bindings = [];
82
+ const deferred = [];
83
+ if (!prepareElementBlueprint(element, vnode, blueprint.shape, bindings, deferred)) return null;
84
+ try {
85
+ publishPreparedBlueprint(deferred, host);
86
+ mountBlueprintBindingGroup(bindings, host);
87
+ if (isBenchMetricScopeActive("coldCreate")) {
88
+ recordBenchCounter("domNodesCreated", blueprint.elementCount);
89
+ recordBenchCounter("reactivePropsMounted", bindings.reduce((count, binding) => count + (binding.kind === "prop" ? 1 : 0), 0));
90
+ }
91
+ return element;
92
+ } catch (error) {
93
+ try {
94
+ cleanupBlueprintElement(element);
95
+ } catch {}
96
+ throw error;
97
+ }
98
+ }
99
+ //#endregion
100
+ export { instantiateBlueprint, prepareElementBlueprint };
@@ -0,0 +1,30 @@
1
+ import { _isDOMElement } from "../common/vnode.js";
2
+ import "./types.js";
3
+ import { buildBlueprint, cacheBlueprint, getBlueprint } from "./intrinsic-blueprint-analysis.js";
4
+ import { instantiateBlueprint } from "./intrinsic-blueprint-materialization.js";
5
+ //#region src/renderer/intrinsic-blueprint.ts
6
+ /**
7
+ * Stable renderer facade for the intrinsic blueprint fast path.
8
+ *
9
+ * Analysis, materialization, and grouped binding publication intentionally
10
+ * live behind this small adapter so callers do not depend on their internal
11
+ * representations.
12
+ */
13
+ function createResultNodeWithBlueprint(owner, result, parentNamespace, createNormally, host) {
14
+ if (!_isDOMElement(result) || typeof result.type !== "string") return createNormally();
15
+ const cached = getBlueprint(owner, document, parentNamespace);
16
+ if (cached) {
17
+ const instantiated = instantiateBlueprint(cached, result, host);
18
+ if (instantiated) return instantiated;
19
+ }
20
+ const node = createNormally();
21
+ if (!(node instanceof Element) || cached) return node;
22
+ const blueprint = buildBlueprint(node, result);
23
+ if (blueprint) cacheBlueprint(owner, node.ownerDocument, parentNamespace, blueprint);
24
+ return node;
25
+ }
26
+ function createComponentResultNodeWithBlueprint(component, result, parentNamespace, createNormally, host) {
27
+ return createResultNodeWithBlueprint(component, result, parentNamespace, createNormally, host);
28
+ }
29
+ //#endregion
30
+ export { createComponentResultNodeWithBlueprint, createResultNodeWithBlueprint };
@@ -0,0 +1,66 @@
1
+ import { _isDOMElement } from "../common/vnode.js";
2
+ import "./types.js";
3
+ import { extractKey, parseEventProp, tagNamesEqualIgnoreCase } from "./utils.js";
4
+ import { hasMatchingStaticPropsIgnoringEvents } from "./attributes.js";
5
+ import { runRetainedElementUpdate } from "./retained-element-rollback.js";
6
+ import { applyMatchingElementBindings, hasAnyElementBindingState } from "./prop-bindings.js";
7
+ //#region src/renderer/intrinsic-hydration-adoption.ts
8
+ let hydrationAdoptionDepth = 0;
9
+ function withIntrinsicHydrationAdoption(work) {
10
+ hydrationAdoptionDepth += 1;
11
+ try {
12
+ return work();
13
+ } finally {
14
+ hydrationAdoptionDepth -= 1;
15
+ }
16
+ }
17
+ function getDirectVNodeChildren(vnode) {
18
+ const children = vnode.props?.children ?? vnode.children;
19
+ if (children === null || children === void 0 || children === false) return [];
20
+ return Array.isArray(children) ? children : [children];
21
+ }
22
+ function canAdoptMatchingIntrinsicSubtree(element, vnode) {
23
+ if (typeof vnode.type !== "string" || !tagNamesEqualIgnoreCase(element.tagName, vnode.type) || hasAnyElementBindingState(element) || extractKey(vnode) !== void 0) return false;
24
+ const props = vnode.props || {};
25
+ if (!hasMatchingStaticPropsIgnoringEvents(element, props, vnode.type)) return false;
26
+ for (const key in props) {
27
+ const value = props[key];
28
+ const eventProp = parseEventProp(key);
29
+ if (eventProp && typeof value !== "function") return false;
30
+ if (!eventProp && key !== "ref" && typeof value === "function") return false;
31
+ }
32
+ const children = getDirectVNodeChildren(vnode);
33
+ if (element.childNodes.length !== children.length) return false;
34
+ for (let index = 0; index < children.length; index += 1) {
35
+ const child = children[index];
36
+ const current = element.childNodes[index];
37
+ if (typeof child === "string" || typeof child === "number") {
38
+ if (current.nodeType !== 3 || current.data !== String(child)) return false;
39
+ continue;
40
+ }
41
+ if (!_isDOMElement(child) || typeof child.type !== "string" || !(current instanceof Element) || extractKey(child) !== void 0 || !canAdoptMatchingIntrinsicSubtree(current, child)) return false;
42
+ }
43
+ return true;
44
+ }
45
+ function adoptMatchingIntrinsicSubtree(element, vnode) {
46
+ const props = vnode.props || {};
47
+ let hasBindings = Object.prototype.hasOwnProperty.call(props, "ref");
48
+ for (const key in props) if (parseEventProp(key)) {
49
+ hasBindings = true;
50
+ break;
51
+ }
52
+ if (hasBindings) runRetainedElementUpdate(element, () => void 0, () => applyMatchingElementBindings(element, props), void 0, true);
53
+ const children = getDirectVNodeChildren(vnode);
54
+ for (let index = 0; index < children.length; index += 1) {
55
+ const child = children[index];
56
+ if (_isDOMElement(child)) adoptMatchingIntrinsicSubtree(element.childNodes[index], child);
57
+ }
58
+ }
59
+ function tryAdoptMatchingIntrinsicSubtree(element, vnode) {
60
+ if (hydrationAdoptionDepth === 0) return false;
61
+ if (!canAdoptMatchingIntrinsicSubtree(element, vnode)) return false;
62
+ adoptMatchingIntrinsicSubtree(element, vnode);
63
+ return true;
64
+ }
65
+ //#endregion
66
+ export { tryAdoptMatchingIntrinsicSubtree, withIntrinsicHydrationAdoption };
@@ -1,4 +1,4 @@
1
- import { extractKey } from "./utils.js";
1
+ import { extractKey, getMaterializedKey } from "./utils.js";
2
2
  //#region src/renderer/keyed-children.ts
3
3
  function extractKeyedVnodes(newChildren) {
4
4
  const keyedVnodes = [];
@@ -16,17 +16,11 @@ function buildDOMKeyMap(parent) {
16
16
  const keyMap = /* @__PURE__ */ new Map();
17
17
  try {
18
18
  for (let el = parent.firstElementChild; el; el = el.nextElementSibling) {
19
- const k = el.getAttribute("data-key");
20
- if (k !== null) {
21
- keyMap.set(k, el);
22
- const n = Number(k);
23
- if (!Number.isNaN(n)) keyMap.set(n, el);
24
- }
19
+ const key = getMaterializedKey(el);
20
+ if (key !== void 0) keyMap.set(key, el);
25
21
  }
26
22
  } catch {}
27
23
  return keyMap;
28
24
  }
29
25
  //#endregion
30
26
  export { buildDOMKeyMap, extractKeyedVnodes };
31
-
32
- //# sourceMappingURL=keyed-children.js.map
@@ -1,4 +1,4 @@
1
- import { buildKeyMapFromChildren, hasPropChanged, isIgnoredForPropChanges } from "./utils.js";
1
+ import { buildKeyMapFromChildren, getMaterializedKey, hasPropChanged, isIgnoredForPropChanges } from "./utils.js";
2
2
  import { extractKeyedVnodes } from "./keyed-children.js";
3
3
  //#region src/renderer/keyed.ts
4
4
  const keyedElements = /* @__PURE__ */ new WeakMap();
@@ -52,6 +52,9 @@ function computeLISLength(positions) {
52
52
  }
53
53
  return tails.length;
54
54
  }
55
+ function keyToken(key) {
56
+ return `${typeof key}:${String(key)}`;
57
+ }
55
58
  function collectCurrentKeyOrder(parent, oldKeyMap) {
56
59
  const currentKeys = [];
57
60
  if (oldKeyMap && oldKeyMap.size > 0) {
@@ -60,8 +63,7 @@ function collectCurrentKeyOrder(parent, oldKeyMap) {
60
63
  for (const [key, el] of oldKeyMap) {
61
64
  if (el === lastElement) continue;
62
65
  lastElement = el;
63
- const normalizedKey = String(key);
64
- currentKeys.push(normalizedKey);
66
+ currentKeys.push(keyToken(key));
65
67
  keyCount++;
66
68
  }
67
69
  if (keyCount > 0) return {
@@ -72,9 +74,9 @@ function collectCurrentKeyOrder(parent, oldKeyMap) {
72
74
  let keyCount = 0;
73
75
  try {
74
76
  for (let el = parent.firstElementChild; el; el = el.nextElementSibling) {
75
- const keyAttr = el.getAttribute("data-key");
76
- if (keyAttr === null) continue;
77
- currentKeys.push(keyAttr);
77
+ const key = getMaterializedKey(el);
78
+ if (key === void 0) continue;
79
+ currentKeys.push(keyToken(key));
78
80
  keyCount++;
79
81
  }
80
82
  } catch {}
@@ -125,7 +127,7 @@ function planKeyedReorderFastPath(parent, keyedVnodes, totalChildren, oldKeyMap)
125
127
  };
126
128
  const { keyCount: currentKeyCount, currentKeys } = collectCurrentKeyOrder(parent, oldKeyMap);
127
129
  let moveCount = 0;
128
- for (let i = 0; i < totalKeyed; i++) if (currentKeys[i] !== String(keyedVnodes[i].key)) moveCount++;
130
+ for (let i = 0; i < totalKeyed; i++) if (currentKeys[i] !== keyToken(keyedVnodes[i].key)) moveCount++;
129
131
  const cheapMoveTrigger = shouldEvaluateShape && currentKeyCount > 0 && moveCount > Math.max(64, Math.floor(totalKeyed * .1));
130
132
  let lisTrigger = false;
131
133
  let lisLen = 0;
@@ -133,7 +135,7 @@ function planKeyedReorderFastPath(parent, keyedVnodes, totalChildren, oldKeyMap)
133
135
  const indexByKey = /* @__PURE__ */ new Map();
134
136
  for (let i = 0; i < currentKeys.length; i++) indexByKey.set(currentKeys[i], i);
135
137
  const positions = Array(totalKeyed).fill(-1);
136
- for (let i = 0; i < totalKeyed; i++) positions[i] = indexByKey.get(String(keyedVnodes[i].key)) ?? -1;
138
+ for (let i = 0; i < totalKeyed; i++) positions[i] = indexByKey.get(keyToken(keyedVnodes[i].key)) ?? -1;
137
139
  lisLen = computeLISLength(positions);
138
140
  lisTrigger = lisLen < Math.floor(totalKeyed * .5);
139
141
  }
@@ -163,5 +165,3 @@ function isKeyedReorderFastPathEligible(parent, newChildren, oldKeyMap) {
163
165
  }
164
166
  //#endregion
165
167
  export { _reconcilerRecordedParents, getKeyMapForElement, isKeyedReorderFastPathEligible, keyedElements, planKeyedReorderFastPath, populateKeyMapForElement };
166
-
167
- //# sourceMappingURL=keyed.js.map
@@ -19,5 +19,3 @@ function canReuseIntrinsicElementInNamespace(existing, type, parentNamespace) {
19
19
  }
20
20
  //#endregion
21
21
  export { SVG_NAMESPACE, canReuseIntrinsicElementInNamespace, createElementForNamespace, getParentNamespace, resolveChildNamespace };
22
-
23
- //# sourceMappingURL=namespaces.js.map