@askrjs/askr 0.0.50 → 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 (594) 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 +5 -6
  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 +21 -11
  11. package/dist/boot/root-lifecycle.d.ts +6 -3
  12. package/dist/boot/root-lifecycle.js +18 -14
  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 +15 -0
  22. package/dist/common/invariant.js +15 -0
  23. package/dist/common/jsx.d.ts +1 -2
  24. package/dist/common/jsx.js +0 -2
  25. package/dist/{dev → common}/logger.js +5 -8
  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 +2 -16
  39. package/dist/components/error-boundary.js +2 -76
  40. package/dist/components/index.d.ts +2 -1
  41. package/dist/components/link.d.ts +2 -2
  42. package/dist/components/link.js +2 -2
  43. package/dist/control/case.d.ts +1 -2
  44. package/dist/control/case.js +1 -2
  45. package/dist/control/for.d.ts +3 -4
  46. package/dist/control/for.js +2 -4
  47. package/dist/control/shared.d.ts +1 -2
  48. package/dist/control/shared.js +0 -2
  49. package/dist/control/show.d.ts +1 -2
  50. package/dist/control/show.js +1 -2
  51. package/dist/data/data-runtime.d.ts +1 -2
  52. package/dist/data/data-runtime.js +3 -5
  53. package/dist/data/invalidation-listeners.js +0 -2
  54. package/dist/data/invalidation.d.ts +1 -2
  55. package/dist/data/invalidation.js +2 -4
  56. package/dist/data/mutation-cell.d.ts +1 -2
  57. package/dist/data/mutation-cell.js +7 -6
  58. package/dist/data/query-cell.d.ts +3 -2
  59. package/dist/data/query-cell.js +45 -11
  60. package/dist/data/query-key.js +0 -2
  61. package/dist/data/shared.js +3 -3
  62. package/dist/data/testing.js +2 -0
  63. package/dist/data/types.d.ts +1 -2
  64. package/dist/foundations/icon/icon.d.ts +1 -2
  65. package/dist/foundations/icon/icon.js +0 -2
  66. package/dist/foundations/icon/icon.types.d.ts +1 -2
  67. package/dist/foundations/index.d.ts +1 -1
  68. package/dist/foundations/index.js +1 -1
  69. package/dist/foundations/interactions/dismissable.d.ts +1 -2
  70. package/dist/foundations/interactions/dismissable.js +0 -2
  71. package/dist/foundations/interactions/focusable.d.ts +1 -2
  72. package/dist/foundations/interactions/focusable.js +0 -2
  73. package/dist/foundations/interactions/hoverable.d.ts +1 -2
  74. package/dist/foundations/interactions/hoverable.js +0 -2
  75. package/dist/foundations/interactions/interaction-policy.d.ts +1 -2
  76. package/dist/foundations/interactions/interaction-policy.js +0 -2
  77. package/dist/foundations/interactions/pressable.d.ts +1 -2
  78. package/dist/foundations/interactions/pressable.js +0 -2
  79. package/dist/foundations/interactions/roving-focus.d.ts +1 -2
  80. package/dist/foundations/interactions/roving-focus.js +0 -2
  81. package/dist/foundations/state/controllable.d.ts +1 -3
  82. package/dist/foundations/state/controllable.js +1 -2
  83. package/dist/foundations/structures/collection.d.ts +1 -2
  84. package/dist/foundations/structures/collection.js +0 -2
  85. package/dist/foundations/structures/index.d.ts +1 -1
  86. package/dist/foundations/structures/index.js +2 -1
  87. package/dist/foundations/structures/layer.d.ts +1 -2
  88. package/dist/foundations/structures/layer.js +0 -2
  89. package/dist/foundations/structures/layout.d.ts +1 -2
  90. package/dist/foundations/structures/layout.js +0 -2
  91. package/dist/foundations/structures/portal.d.ts +2 -24
  92. package/dist/foundations/structures/portal.js +3 -187
  93. package/dist/foundations/structures/presence.d.ts +1 -2
  94. package/dist/foundations/structures/presence.js +0 -2
  95. package/dist/foundations/structures/slot.d.ts +1 -2
  96. package/dist/foundations/structures/slot.js +0 -2
  97. package/dist/foundations/utilities/aria.d.ts +1 -2
  98. package/dist/foundations/utilities/aria.js +0 -2
  99. package/dist/foundations/utilities/compose-handlers.d.ts +1 -2
  100. package/dist/foundations/utilities/compose-handlers.js +0 -2
  101. package/dist/foundations/utilities/compose-ref.d.ts +1 -2
  102. package/dist/foundations/utilities/compose-ref.js +0 -2
  103. package/dist/foundations/utilities/event-types.d.ts +1 -2
  104. package/dist/foundations/utilities/merge-props.d.ts +1 -2
  105. package/dist/foundations/utilities/merge-props.js +0 -2
  106. package/dist/foundations/utilities/use-id.d.ts +1 -2
  107. package/dist/foundations/utilities/use-id.js +0 -2
  108. package/dist/fx/fx.d.ts +1 -2
  109. package/dist/fx/fx.js +2 -4
  110. package/dist/fx/index.js +1 -0
  111. package/dist/fx/noop.js +0 -2
  112. package/dist/fx/timing.d.ts +1 -2
  113. package/dist/fx/timing.js +0 -2
  114. package/dist/index.d.ts +4 -4
  115. package/dist/index.js +4 -6
  116. package/dist/jsx/types.d.ts +1 -2
  117. package/dist/jsx/utils.d.ts +1 -2
  118. package/dist/jsx/utils.js +0 -2
  119. package/dist/jsx-dev-runtime.d.ts +16 -2
  120. package/dist/jsx-dev-runtime.js +4 -12
  121. package/dist/jsx-runtime.d.ts +16 -2
  122. package/dist/jsx-runtime.js +16 -24
  123. package/dist/jsx-runtime2.d.ts +1 -1
  124. package/dist/renderer/attributes.js +29 -6
  125. package/dist/renderer/boundaries.js +50 -174
  126. package/dist/renderer/boundary-materialization.js +72 -0
  127. package/dist/renderer/boundary-range-adoption.js +76 -0
  128. package/dist/renderer/boundary-range-sync.js +101 -0
  129. package/dist/renderer/boundary-state.js +50 -0
  130. package/dist/renderer/child-shape.js +2 -4
  131. package/dist/renderer/children-fastpath.js +149 -0
  132. package/dist/renderer/children.js +3 -140
  133. package/dist/renderer/cleanup.js +72 -15
  134. package/dist/renderer/component-host-cleanup.js +124 -49
  135. package/dist/renderer/component-host-instances.js +60 -9
  136. package/dist/renderer/component-host-replacement.js +105 -0
  137. package/dist/renderer/component-host-results.js +138 -0
  138. package/dist/renderer/component-host.js +95 -170
  139. package/dist/renderer/dom-host.js +0 -2
  140. package/dist/renderer/dom-internal.js +115 -57
  141. package/dist/renderer/dom-range.js +161 -0
  142. package/dist/renderer/dom.js +7 -5
  143. package/dist/renderer/element-children.js +112 -32
  144. package/dist/renderer/error-boundary-dom.js +70 -13
  145. package/dist/renderer/evaluate-dom-range.js +3 -4
  146. package/dist/renderer/evaluate-reconcile.js +18 -42
  147. package/dist/renderer/evaluate.js +14 -3
  148. package/dist/renderer/fastpath.js +7 -14
  149. package/dist/renderer/for-commit-dom-map.js +6 -18
  150. package/dist/renderer/for-commit-removal.js +8 -17
  151. package/dist/renderer/for-commit-reorder.js +2 -4
  152. package/dist/renderer/for-commit.js +173 -45
  153. package/dist/renderer/hydration-boundaries.js +60 -0
  154. package/dist/renderer/hydration-listener-transaction.js +49 -0
  155. package/dist/renderer/index.js +11 -8
  156. package/dist/renderer/intrinsic-blueprint-analysis.js +202 -0
  157. package/dist/renderer/intrinsic-blueprint-bindings.js +152 -0
  158. package/dist/renderer/intrinsic-blueprint-materialization.js +100 -0
  159. package/dist/renderer/intrinsic-blueprint.js +30 -0
  160. package/dist/renderer/intrinsic-hydration-adoption.js +66 -0
  161. package/dist/renderer/keyed-children.js +3 -9
  162. package/dist/renderer/keyed.js +10 -10
  163. package/dist/renderer/namespaces.js +0 -2
  164. package/dist/renderer/prop-bindings.js +59 -24
  165. package/dist/renderer/reactive-child-dom.js +10 -4
  166. package/dist/renderer/reactive-child-sources.js +0 -2
  167. package/dist/renderer/reactive-children.js +33 -24
  168. package/dist/renderer/reconcile-commit.js +0 -2
  169. package/dist/renderer/reconcile-fastpaths.js +6 -12
  170. package/dist/renderer/reconcile-resolution.js +32 -56
  171. package/dist/renderer/reconcile.js +0 -2
  172. package/dist/renderer/retained-element-rollback.js +161 -149
  173. package/dist/renderer/stable-patch.js +5 -7
  174. package/dist/renderer/static-reuse.js +0 -2
  175. package/dist/renderer/utils.js +20 -10
  176. package/dist/resources/index.js +1 -2
  177. package/dist/router/access.js +0 -2
  178. package/dist/router/activity.d.ts +1 -2
  179. package/dist/router/activity.js +20 -24
  180. package/dist/router/authoring.d.ts +1 -2
  181. package/dist/router/authoring.js +1 -3
  182. package/dist/router/index.d.ts +1 -1
  183. package/dist/router/internal-types.d.ts +1 -2
  184. package/dist/router/lazy.d.ts +1 -2
  185. package/dist/router/lazy.js +0 -2
  186. package/dist/router/manifest.d.ts +1 -2
  187. package/dist/router/manifest.js +0 -2
  188. package/dist/router/match.js +0 -2
  189. package/dist/router/navigate.d.ts +1 -2
  190. package/dist/router/navigate.js +5 -8
  191. package/dist/router/navigation-registry.d.ts +1 -2
  192. package/dist/router/navigation-registry.js +1 -3
  193. package/dist/router/navigation-scroll.d.ts +1 -2
  194. package/dist/router/navigation-scroll.js +0 -2
  195. package/dist/router/navigation-targets.d.ts +3 -4
  196. package/dist/router/navigation-targets.js +425 -44
  197. package/dist/router/policy.d.ts +1 -2
  198. package/dist/router/policy.js +0 -2
  199. package/dist/router/rendering.d.ts +1 -2
  200. package/dist/router/rendering.js +5 -3
  201. package/dist/router/resolution.d.ts +2 -16
  202. package/dist/router/resolution.js +6 -175
  203. package/dist/router/route-context.js +0 -2
  204. package/dist/router/route-matching.d.ts +19 -0
  205. package/dist/router/route-matching.js +173 -0
  206. package/dist/router/route-query.d.ts +1 -2
  207. package/dist/router/route-query.js +1 -3
  208. package/dist/router/route.js +4 -2
  209. package/dist/router/store.d.ts +1 -2
  210. package/dist/router/store.js +0 -2
  211. package/dist/router/testing.js +4 -0
  212. package/dist/runtime/access.d.ts +19 -0
  213. package/dist/runtime/access.js +0 -2
  214. package/dist/runtime/child-scope.d.ts +21 -2
  215. package/dist/runtime/child-scope.js +101 -54
  216. package/dist/runtime/component-cleanup.d.ts +1 -2
  217. package/dist/runtime/component-cleanup.js +3 -5
  218. package/dist/runtime/component-commit.js +26 -24
  219. package/dist/runtime/component-facade.js +5 -3
  220. package/dist/runtime/component-internal.d.ts +12 -7
  221. package/dist/runtime/component-internal.js +64 -46
  222. package/dist/runtime/component-lifecycle.d.ts +2 -41
  223. package/dist/runtime/component-lifecycle.js +6 -149
  224. package/dist/runtime/component-scope.d.ts +4 -5
  225. package/dist/runtime/component-scope.js +27 -8
  226. package/dist/runtime/component.js +4 -3
  227. package/dist/runtime/context.d.ts +5 -2
  228. package/dist/runtime/context.js +29 -3
  229. package/dist/runtime/control.d.ts +22 -3
  230. package/dist/runtime/control.js +168 -55
  231. package/dist/runtime/derive.d.ts +1 -2
  232. package/dist/runtime/derive.js +0 -2
  233. package/dist/runtime/dev-namespace.d.ts +30 -0
  234. package/dist/runtime/dev-namespace.js +32 -25
  235. package/dist/runtime/effect.d.ts +8 -5
  236. package/dist/runtime/effect.js +158 -75
  237. package/dist/runtime/error-boundary.d.ts +4 -0
  238. package/dist/runtime/error-boundary.js +29 -0
  239. package/dist/runtime/events.d.ts +58 -0
  240. package/dist/runtime/events.js +67 -70
  241. package/dist/runtime/execution-model.d.ts +6 -0
  242. package/dist/runtime/execution-model.js +0 -2
  243. package/dist/runtime/fastlane.d.ts +33 -0
  244. package/dist/runtime/fastlane.js +0 -2
  245. package/dist/runtime/for-bench.d.ts +1 -2
  246. package/dist/runtime/for-bench.js +9 -167
  247. package/dist/runtime/for-internal.d.ts +73 -10
  248. package/dist/runtime/for-internal.js +201 -14
  249. package/dist/runtime/for-reconcile.d.ts +1 -2
  250. package/dist/runtime/for-reconcile.js +76 -23
  251. package/dist/runtime/for-scopes.d.ts +5 -5
  252. package/dist/runtime/for-scopes.js +168 -48
  253. package/dist/runtime/for-signals.d.ts +14 -5
  254. package/dist/runtime/for-signals.js +157 -83
  255. package/dist/runtime/for-types.d.ts +8 -0
  256. package/dist/runtime/for.d.ts +2 -2
  257. package/dist/runtime/for.js +3 -3
  258. package/dist/runtime/index.d.ts +24 -0
  259. package/dist/runtime/index.js +33 -0
  260. package/dist/runtime/lifecycle-batch.d.ts +59 -0
  261. package/dist/runtime/lifecycle-batch.js +178 -0
  262. package/dist/runtime/lifecycle-operation-settlement.d.ts +5 -0
  263. package/dist/runtime/lifecycle-operation-settlement.js +51 -0
  264. package/dist/runtime/lifecycle-operations.d.ts +1 -2
  265. package/dist/runtime/lifecycle-operations.js +5 -6
  266. package/dist/runtime/perf-metrics.d.ts +27 -0
  267. package/dist/runtime/perf-metrics.js +4 -68
  268. package/dist/runtime/portal.d.ts +21 -0
  269. package/dist/runtime/portal.js +305 -0
  270. package/dist/runtime/readable.d.ts +9 -4
  271. package/dist/runtime/readable.js +41 -17
  272. package/dist/runtime/resource-cell.js +3 -5
  273. package/dist/runtime/resource-operation.d.ts +1 -2
  274. package/dist/runtime/resource-operation.js +38 -35
  275. package/dist/runtime/runtime.d.ts +2 -3
  276. package/dist/runtime/runtime.js +0 -2
  277. package/dist/runtime/scheduler.d.ts +1 -2
  278. package/dist/runtime/scheduler.js +10 -13
  279. package/dist/runtime/selector-store.js +22 -0
  280. package/dist/runtime/selector.d.ts +1 -2
  281. package/dist/runtime/selector.js +6 -29
  282. package/dist/runtime/snapshot-source.d.ts +1 -2
  283. package/dist/runtime/snapshot-source.js +0 -2
  284. package/dist/runtime/state.d.ts +1 -2
  285. package/dist/runtime/state.js +1 -3
  286. package/dist/ssg/batch-render.js +0 -2
  287. package/dist/ssg/create-static-gen.d.ts +4 -2
  288. package/dist/ssg/create-static-gen.js +66 -14
  289. package/dist/ssg/generate-metadata.js +0 -2
  290. package/dist/ssg/generation-plan.js +0 -2
  291. package/dist/ssg/incremental-manifest.js +1 -3
  292. package/dist/ssg/resolve-ssg-data.js +0 -2
  293. package/dist/ssg/route-utils.js +0 -2
  294. package/dist/ssg/static-routes.js +1 -2
  295. package/dist/ssg/types.d.ts +2 -3
  296. package/dist/ssg/write-static-files.js +16 -12
  297. package/dist/ssr/attrs.js +0 -2
  298. package/dist/ssr/boundaries.js +17 -6
  299. package/dist/ssr/component-runtime.js +4 -30
  300. package/dist/ssr/context.d.ts +1 -2
  301. package/dist/ssr/context.js +0 -2
  302. package/dist/ssr/errors.d.ts +1 -2
  303. package/dist/ssr/errors.js +0 -2
  304. package/dist/ssr/escape.js +0 -2
  305. package/dist/ssr/hydration-data.js +0 -2
  306. package/dist/ssr/hydration-verify.d.ts +1 -2
  307. package/dist/ssr/hydration-verify.js +34 -7
  308. package/dist/ssr/index-internal.d.ts +1 -2
  309. package/dist/ssr/index-internal.js +0 -2
  310. package/dist/ssr/render-keys.js +0 -2
  311. package/dist/ssr/render-resolved.d.ts +1 -2
  312. package/dist/ssr/render-resolved.js +1 -3
  313. package/dist/ssr/render-sync.d.ts +1 -2
  314. package/dist/ssr/render-sync.js +28 -20
  315. package/dist/ssr/route-policy-resolution.js +2 -3
  316. package/dist/ssr/route-render.d.ts +1 -2
  317. package/dist/ssr/route-render.js +2 -3
  318. package/dist/ssr/sink.d.ts +1 -2
  319. package/dist/ssr/sink.js +0 -2
  320. package/dist/ssr/types.d.ts +1 -2
  321. package/dist/ssr/verify-hydration.js +0 -2
  322. package/dist/testing/index.d.ts +1 -2
  323. package/dist/testing/index.js +3 -4
  324. package/package.json +60 -47
  325. package/dist/bench/components/benchmark-row.d.ts.map +0 -1
  326. package/dist/bench/components/benchmark-row.js.map +0 -1
  327. package/dist/bench/components/benchmark-table.js.map +0 -1
  328. package/dist/benchmark.d.ts.map +0 -1
  329. package/dist/benchmark.js.map +0 -1
  330. package/dist/bin/askr-ssg.d.ts.map +0 -1
  331. package/dist/bin/askr-ssg.js.map +0 -1
  332. package/dist/boot/hydration.js.map +0 -1
  333. package/dist/boot/index.d.ts.map +0 -1
  334. package/dist/boot/index.js.map +0 -1
  335. package/dist/boot/root-lifecycle.d.ts.map +0 -1
  336. package/dist/boot/root-lifecycle.js.map +0 -1
  337. package/dist/boot/route-startup.js.map +0 -1
  338. package/dist/boot/types.d.ts.map +0 -1
  339. package/dist/common/attr-names.js.map +0 -1
  340. package/dist/common/component.d.ts.map +0 -1
  341. package/dist/common/control.d.ts.map +0 -1
  342. package/dist/common/control.js.map +0 -1
  343. package/dist/common/env.js.map +0 -1
  344. package/dist/common/jsx.d.ts.map +0 -1
  345. package/dist/common/jsx.js.map +0 -1
  346. package/dist/common/promise.js.map +0 -1
  347. package/dist/common/props.d.ts.map +0 -1
  348. package/dist/common/render-context.js.map +0 -1
  349. package/dist/common/route-activity.js.map +0 -1
  350. package/dist/common/router-internal.js.map +0 -1
  351. package/dist/common/router.d.ts.map +0 -1
  352. package/dist/common/ssr-errors.d.ts.map +0 -1
  353. package/dist/common/ssr-errors.js.map +0 -1
  354. package/dist/common/ssr.d.ts.map +0 -1
  355. package/dist/common/ssr.js.map +0 -1
  356. package/dist/common/vnode.d.ts.map +0 -1
  357. package/dist/common/vnode.js.map +0 -1
  358. package/dist/components/error-boundary.d.ts.map +0 -1
  359. package/dist/components/error-boundary.js.map +0 -1
  360. package/dist/components/link.d.ts.map +0 -1
  361. package/dist/components/link.js.map +0 -1
  362. package/dist/control/case.d.ts.map +0 -1
  363. package/dist/control/case.js.map +0 -1
  364. package/dist/control/for.d.ts.map +0 -1
  365. package/dist/control/for.js.map +0 -1
  366. package/dist/control/shared.d.ts.map +0 -1
  367. package/dist/control/shared.js.map +0 -1
  368. package/dist/control/show.d.ts.map +0 -1
  369. package/dist/control/show.js.map +0 -1
  370. package/dist/data/data-runtime.d.ts.map +0 -1
  371. package/dist/data/data-runtime.js.map +0 -1
  372. package/dist/data/invalidation-listeners.js.map +0 -1
  373. package/dist/data/invalidation.d.ts.map +0 -1
  374. package/dist/data/invalidation.js.map +0 -1
  375. package/dist/data/mutation-cell.d.ts.map +0 -1
  376. package/dist/data/mutation-cell.js.map +0 -1
  377. package/dist/data/query-cell.d.ts.map +0 -1
  378. package/dist/data/query-cell.js.map +0 -1
  379. package/dist/data/query-key.js.map +0 -1
  380. package/dist/data/shared.js.map +0 -1
  381. package/dist/data/types.d.ts.map +0 -1
  382. package/dist/dev/invariant.js +0 -29
  383. package/dist/dev/invariant.js.map +0 -1
  384. package/dist/dev/logger.js.map +0 -1
  385. package/dist/foundations/icon/icon.d.ts.map +0 -1
  386. package/dist/foundations/icon/icon.js.map +0 -1
  387. package/dist/foundations/icon/icon.types.d.ts.map +0 -1
  388. package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
  389. package/dist/foundations/interactions/dismissable.js.map +0 -1
  390. package/dist/foundations/interactions/focusable.d.ts.map +0 -1
  391. package/dist/foundations/interactions/focusable.js.map +0 -1
  392. package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
  393. package/dist/foundations/interactions/hoverable.js.map +0 -1
  394. package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
  395. package/dist/foundations/interactions/interaction-policy.js.map +0 -1
  396. package/dist/foundations/interactions/pressable.d.ts.map +0 -1
  397. package/dist/foundations/interactions/pressable.js.map +0 -1
  398. package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
  399. package/dist/foundations/interactions/roving-focus.js.map +0 -1
  400. package/dist/foundations/state/controllable.d.ts.map +0 -1
  401. package/dist/foundations/state/controllable.js.map +0 -1
  402. package/dist/foundations/structures/collection.d.ts.map +0 -1
  403. package/dist/foundations/structures/collection.js.map +0 -1
  404. package/dist/foundations/structures/layer.d.ts.map +0 -1
  405. package/dist/foundations/structures/layer.js.map +0 -1
  406. package/dist/foundations/structures/layout.d.ts.map +0 -1
  407. package/dist/foundations/structures/layout.js.map +0 -1
  408. package/dist/foundations/structures/portal.d.ts.map +0 -1
  409. package/dist/foundations/structures/portal.js.map +0 -1
  410. package/dist/foundations/structures/presence.d.ts.map +0 -1
  411. package/dist/foundations/structures/presence.js.map +0 -1
  412. package/dist/foundations/structures/slot.d.ts.map +0 -1
  413. package/dist/foundations/structures/slot.js.map +0 -1
  414. package/dist/foundations/utilities/aria.d.ts.map +0 -1
  415. package/dist/foundations/utilities/aria.js.map +0 -1
  416. package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
  417. package/dist/foundations/utilities/compose-handlers.js.map +0 -1
  418. package/dist/foundations/utilities/compose-ref.d.ts.map +0 -1
  419. package/dist/foundations/utilities/compose-ref.js.map +0 -1
  420. package/dist/foundations/utilities/event-types.d.ts.map +0 -1
  421. package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
  422. package/dist/foundations/utilities/merge-props.js.map +0 -1
  423. package/dist/foundations/utilities/use-id.d.ts.map +0 -1
  424. package/dist/foundations/utilities/use-id.js.map +0 -1
  425. package/dist/fx/fx.d.ts.map +0 -1
  426. package/dist/fx/fx.js.map +0 -1
  427. package/dist/fx/noop.js.map +0 -1
  428. package/dist/fx/timing.d.ts.map +0 -1
  429. package/dist/fx/timing.js.map +0 -1
  430. package/dist/index.js.map +0 -1
  431. package/dist/jsx/types.d.ts.map +0 -1
  432. package/dist/jsx/utils.d.ts.map +0 -1
  433. package/dist/jsx/utils.js.map +0 -1
  434. package/dist/jsx-dev-runtime.d.ts.map +0 -1
  435. package/dist/jsx-dev-runtime.js.map +0 -1
  436. package/dist/jsx-runtime.d.ts.map +0 -1
  437. package/dist/jsx-runtime.js.map +0 -1
  438. package/dist/renderer/attributes.js.map +0 -1
  439. package/dist/renderer/boundaries.js.map +0 -1
  440. package/dist/renderer/child-shape.js.map +0 -1
  441. package/dist/renderer/children.js.map +0 -1
  442. package/dist/renderer/cleanup.js.map +0 -1
  443. package/dist/renderer/component-host-cleanup.js.map +0 -1
  444. package/dist/renderer/component-host-instances.js.map +0 -1
  445. package/dist/renderer/component-host.js.map +0 -1
  446. package/dist/renderer/dom-host.js.map +0 -1
  447. package/dist/renderer/dom-internal.js.map +0 -1
  448. package/dist/renderer/element-children.js.map +0 -1
  449. package/dist/renderer/error-boundary-dom.js.map +0 -1
  450. package/dist/renderer/evaluate-dom-range.js.map +0 -1
  451. package/dist/renderer/evaluate-reconcile.js.map +0 -1
  452. package/dist/renderer/evaluate.js.map +0 -1
  453. package/dist/renderer/fastpath.js.map +0 -1
  454. package/dist/renderer/for-commit-dom-map.js.map +0 -1
  455. package/dist/renderer/for-commit-removal.js.map +0 -1
  456. package/dist/renderer/for-commit-reorder.js.map +0 -1
  457. package/dist/renderer/for-commit.js.map +0 -1
  458. package/dist/renderer/index.js.map +0 -1
  459. package/dist/renderer/keyed-children.js.map +0 -1
  460. package/dist/renderer/keyed.js.map +0 -1
  461. package/dist/renderer/namespaces.js.map +0 -1
  462. package/dist/renderer/prop-bindings.js.map +0 -1
  463. package/dist/renderer/reactive-child-dom.js.map +0 -1
  464. package/dist/renderer/reactive-child-sources.js.map +0 -1
  465. package/dist/renderer/reactive-children.js.map +0 -1
  466. package/dist/renderer/reconcile-commit.js.map +0 -1
  467. package/dist/renderer/reconcile-fastpaths.js.map +0 -1
  468. package/dist/renderer/reconcile-resolution.js.map +0 -1
  469. package/dist/renderer/reconcile.js.map +0 -1
  470. package/dist/renderer/retained-element-rollback.js.map +0 -1
  471. package/dist/renderer/stable-patch.js.map +0 -1
  472. package/dist/renderer/static-reuse.js.map +0 -1
  473. package/dist/renderer/utils.js.map +0 -1
  474. package/dist/router/access.js.map +0 -1
  475. package/dist/router/activity.d.ts.map +0 -1
  476. package/dist/router/activity.js.map +0 -1
  477. package/dist/router/authoring.d.ts.map +0 -1
  478. package/dist/router/authoring.js.map +0 -1
  479. package/dist/router/internal-types.d.ts.map +0 -1
  480. package/dist/router/lazy.d.ts.map +0 -1
  481. package/dist/router/lazy.js.map +0 -1
  482. package/dist/router/manifest.d.ts.map +0 -1
  483. package/dist/router/manifest.js.map +0 -1
  484. package/dist/router/match.js.map +0 -1
  485. package/dist/router/navigate.d.ts.map +0 -1
  486. package/dist/router/navigate.js.map +0 -1
  487. package/dist/router/navigation-registry.d.ts.map +0 -1
  488. package/dist/router/navigation-registry.js.map +0 -1
  489. package/dist/router/navigation-scroll.d.ts.map +0 -1
  490. package/dist/router/navigation-scroll.js.map +0 -1
  491. package/dist/router/navigation-targets.d.ts.map +0 -1
  492. package/dist/router/navigation-targets.js.map +0 -1
  493. package/dist/router/policy.d.ts.map +0 -1
  494. package/dist/router/policy.js.map +0 -1
  495. package/dist/router/rendering.d.ts.map +0 -1
  496. package/dist/router/rendering.js.map +0 -1
  497. package/dist/router/resolution.d.ts.map +0 -1
  498. package/dist/router/resolution.js.map +0 -1
  499. package/dist/router/route-context.js.map +0 -1
  500. package/dist/router/route-query.d.ts.map +0 -1
  501. package/dist/router/route-query.js.map +0 -1
  502. package/dist/router/store.d.ts.map +0 -1
  503. package/dist/router/store.js.map +0 -1
  504. package/dist/runtime/access.js.map +0 -1
  505. package/dist/runtime/child-scope.d.ts.map +0 -1
  506. package/dist/runtime/child-scope.js.map +0 -1
  507. package/dist/runtime/component-cleanup.d.ts.map +0 -1
  508. package/dist/runtime/component-cleanup.js.map +0 -1
  509. package/dist/runtime/component-commit.js.map +0 -1
  510. package/dist/runtime/component-contracts.js +0 -5
  511. package/dist/runtime/component-internal.d.ts.map +0 -1
  512. package/dist/runtime/component-internal.js.map +0 -1
  513. package/dist/runtime/component-lifecycle.d.ts.map +0 -1
  514. package/dist/runtime/component-lifecycle.js.map +0 -1
  515. package/dist/runtime/component-scope.d.ts.map +0 -1
  516. package/dist/runtime/component-scope.js.map +0 -1
  517. package/dist/runtime/context.d.ts.map +0 -1
  518. package/dist/runtime/context.js.map +0 -1
  519. package/dist/runtime/control.d.ts.map +0 -1
  520. package/dist/runtime/control.js.map +0 -1
  521. package/dist/runtime/derive.d.ts.map +0 -1
  522. package/dist/runtime/derive.js.map +0 -1
  523. package/dist/runtime/dev-namespace.js.map +0 -1
  524. package/dist/runtime/effect.d.ts.map +0 -1
  525. package/dist/runtime/effect.js.map +0 -1
  526. package/dist/runtime/events.js.map +0 -1
  527. package/dist/runtime/execution-model.js.map +0 -1
  528. package/dist/runtime/fastlane.js.map +0 -1
  529. package/dist/runtime/for-bench.d.ts.map +0 -1
  530. package/dist/runtime/for-bench.js.map +0 -1
  531. package/dist/runtime/for-internal.d.ts.map +0 -1
  532. package/dist/runtime/for-internal.js.map +0 -1
  533. package/dist/runtime/for-reconcile.d.ts.map +0 -1
  534. package/dist/runtime/for-reconcile.js.map +0 -1
  535. package/dist/runtime/for-scopes.d.ts.map +0 -1
  536. package/dist/runtime/for-scopes.js.map +0 -1
  537. package/dist/runtime/for-signals.d.ts.map +0 -1
  538. package/dist/runtime/for-signals.js.map +0 -1
  539. package/dist/runtime/lifecycle-operations.d.ts.map +0 -1
  540. package/dist/runtime/lifecycle-operations.js.map +0 -1
  541. package/dist/runtime/perf-metrics.js.map +0 -1
  542. package/dist/runtime/readable.d.ts.map +0 -1
  543. package/dist/runtime/readable.js.map +0 -1
  544. package/dist/runtime/resource-cell.js.map +0 -1
  545. package/dist/runtime/resource-operation.d.ts.map +0 -1
  546. package/dist/runtime/resource-operation.js.map +0 -1
  547. package/dist/runtime/runtime.d.ts.map +0 -1
  548. package/dist/runtime/runtime.js.map +0 -1
  549. package/dist/runtime/scheduler.d.ts.map +0 -1
  550. package/dist/runtime/scheduler.js.map +0 -1
  551. package/dist/runtime/selector.d.ts.map +0 -1
  552. package/dist/runtime/selector.js.map +0 -1
  553. package/dist/runtime/snapshot-source.d.ts.map +0 -1
  554. package/dist/runtime/snapshot-source.js.map +0 -1
  555. package/dist/runtime/state.d.ts.map +0 -1
  556. package/dist/runtime/state.js.map +0 -1
  557. package/dist/ssg/batch-render.js.map +0 -1
  558. package/dist/ssg/create-static-gen.d.ts.map +0 -1
  559. package/dist/ssg/create-static-gen.js.map +0 -1
  560. package/dist/ssg/generate-metadata.js.map +0 -1
  561. package/dist/ssg/generation-plan.js.map +0 -1
  562. package/dist/ssg/incremental-manifest.js.map +0 -1
  563. package/dist/ssg/resolve-ssg-data.js.map +0 -1
  564. package/dist/ssg/route-utils.js.map +0 -1
  565. package/dist/ssg/static-routes.js.map +0 -1
  566. package/dist/ssg/types.d.ts.map +0 -1
  567. package/dist/ssg/write-static-files.js.map +0 -1
  568. package/dist/ssr/attrs.js.map +0 -1
  569. package/dist/ssr/boundaries.js.map +0 -1
  570. package/dist/ssr/component-runtime.js.map +0 -1
  571. package/dist/ssr/context.d.ts.map +0 -1
  572. package/dist/ssr/context.js.map +0 -1
  573. package/dist/ssr/errors.d.ts.map +0 -1
  574. package/dist/ssr/errors.js.map +0 -1
  575. package/dist/ssr/escape.js.map +0 -1
  576. package/dist/ssr/hydration-data.js.map +0 -1
  577. package/dist/ssr/hydration-verify.d.ts.map +0 -1
  578. package/dist/ssr/hydration-verify.js.map +0 -1
  579. package/dist/ssr/index-internal.d.ts.map +0 -1
  580. package/dist/ssr/index-internal.js.map +0 -1
  581. package/dist/ssr/render-keys.js.map +0 -1
  582. package/dist/ssr/render-resolved.d.ts.map +0 -1
  583. package/dist/ssr/render-resolved.js.map +0 -1
  584. package/dist/ssr/render-sync.d.ts.map +0 -1
  585. package/dist/ssr/render-sync.js.map +0 -1
  586. package/dist/ssr/route-policy-resolution.js.map +0 -1
  587. package/dist/ssr/route-render.d.ts.map +0 -1
  588. package/dist/ssr/route-render.js.map +0 -1
  589. package/dist/ssr/sink.d.ts.map +0 -1
  590. package/dist/ssr/sink.js.map +0 -1
  591. package/dist/ssr/types.d.ts.map +0 -1
  592. package/dist/ssr/verify-hydration.js.map +0 -1
  593. package/dist/testing/index.d.ts.map +0 -1
  594. package/dist/testing/index.js.map +0 -1
@@ -0,0 +1,101 @@
1
+ import { _isDOMElement } from "../common/vnode.js";
2
+ import "./types.js";
3
+ import { enterDomCommitScope, restoreDomCommitScope } from "../runtime/component-scope.js";
4
+ import { registerLifecycleTransaction } from "../runtime/lifecycle-batch.js";
5
+ import { clearCaseDomUpdateState, clearShowDomUpdateState } from "../runtime/control.js";
6
+ import { clearForDomUpdateState } from "../runtime/for-internal.js";
7
+ import "../runtime/index.js";
8
+ import { teardownNodeSubtree } from "./cleanup.js";
9
+ import { tagNamesEqualIgnoreCase } from "./utils.js";
10
+ import { insertRangeBefore, removeRange } from "./dom-range.js";
11
+ import { adoptHydratedRange, assignScopeRange, getBoundaryParentNamespace, getBoundaryRangeHost, getScopeRange, materializeChildScopeRange } from "./boundary-range-adoption.js";
12
+ //#region src/renderer/boundary-range-sync.ts
13
+ function clearBoundaryState(controlState) {
14
+ if (controlState.kind === "for") clearForDomUpdateState(controlState);
15
+ else if (controlState.kind === "show") clearShowDomUpdateState(controlState);
16
+ else clearCaseDomUpdateState(controlState);
17
+ }
18
+ function syncControlBoundaryScopeDom(parent, scope, vnode, before = null, allowHydrationAdoption = true, insertDetached = true) {
19
+ const previousInstance = enterDomCommitScope(scope.componentInstance);
20
+ try {
21
+ const currentRange = getScopeRange(scope);
22
+ const dom = currentRange?.single ? currentRange.start : null;
23
+ const host = getBoundaryRangeHost();
24
+ const hydratedRange = currentRange || !allowHydrationAdoption ? null : adoptHydratedRange(parent, scope, before, vnode);
25
+ if (hydratedRange) return hydratedRange;
26
+ const resolvedRange = hydratedRange ?? currentRange;
27
+ if (resolvedRange && scope.hydrationPending && !resolvedRange.single) {
28
+ scope.hydrationPending = false;
29
+ return resolvedRange;
30
+ }
31
+ if (_isDOMElement(vnode) && typeof vnode.type === "function") {
32
+ const synced = host.syncComponentElement(dom, vnode, vnode.type, (vnode.props ?? {}) || {}, getBoundaryParentNamespace(parent));
33
+ if (synced) {
34
+ const nextRange = {
35
+ start: synced,
36
+ end: synced,
37
+ single: true
38
+ };
39
+ assignScopeRange(scope, nextRange);
40
+ return nextRange;
41
+ }
42
+ }
43
+ if (!resolvedRange) {
44
+ const nextRange = materializeChildScopeRange(vnode, getBoundaryParentNamespace(parent), scope, true);
45
+ assignScopeRange(scope, nextRange);
46
+ if (insertDetached) insertRangeBefore(parent, nextRange, before);
47
+ return nextRange;
48
+ }
49
+ if (resolvedRange.single && dom?.nodeType === 3 && (typeof vnode === "string" || typeof vnode === "number")) {
50
+ dom.data = String(vnode);
51
+ return currentRange;
52
+ }
53
+ if (resolvedRange.single && dom?.nodeType === 8 && (vnode === null || vnode === void 0 || vnode === false)) return currentRange;
54
+ if (resolvedRange.single && dom instanceof Element && _isDOMElement(vnode) && typeof vnode.type === "string" && tagNamesEqualIgnoreCase(dom.tagName, vnode.type)) {
55
+ host.updateElementFromVnode(dom, vnode, true);
56
+ return currentRange;
57
+ }
58
+ const nextRange = materializeChildScopeRange(vnode, getBoundaryParentNamespace(parent), scope);
59
+ const previousRange = resolvedRange;
60
+ const previousDom = scope.dom;
61
+ const previousParent = previousRange.start.parentNode;
62
+ const previousNextSibling = previousRange.end.nextSibling;
63
+ const registered = registerLifecycleTransaction({}, () => removeRange(previousRange, teardownBoundaryRangeNode), () => {
64
+ removeRange(nextRange, teardownBoundaryRangeNode);
65
+ if (previousParent && !previousRange.start.parentNode) previousParent.insertBefore(previousRange.start, previousNextSibling?.parentNode === previousParent ? previousNextSibling : null);
66
+ scope.range = previousRange;
67
+ scope.dom = previousDom;
68
+ });
69
+ if (previousRange.single && nextRange.single && previousRange.start.parentNode === parent) parent.replaceChild(nextRange.start, previousRange.start);
70
+ else insertRangeBefore(parent, nextRange, previousRange.start.parentNode === parent ? previousRange.start : null);
71
+ assignScopeRange(scope, nextRange);
72
+ if (!registered) removeRange(previousRange, teardownBoundaryRangeNode);
73
+ return nextRange;
74
+ } finally {
75
+ restoreDomCommitScope(previousInstance);
76
+ }
77
+ }
78
+ function teardownBoundaryRangeNode(node) {
79
+ if (node.nodeType === 8) {
80
+ node.parentNode?.removeChild(node);
81
+ return;
82
+ }
83
+ teardownNodeSubtree(node);
84
+ node.parentNode?.removeChild(node);
85
+ }
86
+ function syncControlBoundaryScopeNode(parent, scope, vnode) {
87
+ const range = syncControlBoundaryScopeDom(parent, scope, vnode, null, true, false);
88
+ return range?.single ? range.start : null;
89
+ }
90
+ function syncControlBoundaryInMixedParent(parent, controlState, childrenVNodes, before) {
91
+ if (controlState.kind === "for") throw new Error("[askr] For ranges require the keyed boundary commit path.");
92
+ const activeScope = controlState.activeScope;
93
+ const activeVNode = childrenVNodes[0];
94
+ const nextRange = activeScope && activeVNode !== void 0 ? syncControlBoundaryScopeDom(parent, activeScope, activeVNode, before, controlState.lastRemovedRanges.length === 0) : null;
95
+ for (const range of controlState.lastRemovedRanges) if (range !== nextRange) removeRange(range, teardownBoundaryRangeNode);
96
+ for (const node of controlState.lastRemovedNodes) if (node.parentNode === parent) teardownBoundaryRangeNode(node);
97
+ clearBoundaryState(controlState);
98
+ return nextRange ? [nextRange] : [];
99
+ }
100
+ //#endregion
101
+ export { syncControlBoundaryInMixedParent, syncControlBoundaryScopeDom, syncControlBoundaryScopeNode };
@@ -0,0 +1,50 @@
1
+ import { __FOR_BOUNDARY__, _isDOMElement } from "../common/vnode.js";
2
+ import "./types.js";
3
+ import { clearCaseDomUpdateState, clearShowDomUpdateState, evaluateCaseState, evaluateShowState } from "../runtime/control.js";
4
+ import { clearForDomUpdateState, evaluateForState } from "../runtime/for-internal.js";
5
+ import "../runtime/index.js";
6
+ //#region src/renderer/boundary-state.ts
7
+ function evaluateControlBoundaryState(controlState) {
8
+ if (controlState.kind === "for") return evaluateForState(controlState);
9
+ if (controlState.kind === "show") return evaluateShowState(controlState);
10
+ return evaluateCaseState(controlState);
11
+ }
12
+ function clearControlBoundaryDomUpdateState(controlState) {
13
+ if (controlState.kind === "for") {
14
+ clearForDomUpdateState(controlState);
15
+ return;
16
+ }
17
+ if (controlState.kind === "show") {
18
+ clearShowDomUpdateState(controlState);
19
+ return;
20
+ }
21
+ clearCaseDomUpdateState(controlState);
22
+ }
23
+ function getControlBoundaryState(node) {
24
+ return node._controlState ?? node._forState ?? null;
25
+ }
26
+ function getDirectControlBoundaryVNode(children) {
27
+ if (!Array.isArray(children) && _isDOMElement(children) && children.type === __FOR_BOUNDARY__) return children;
28
+ if (Array.isArray(children) && children.length === 1 && _isDOMElement(children[0]) && children[0].type === __FOR_BOUNDARY__) return children[0];
29
+ return null;
30
+ }
31
+ function getControlBoundaryCommitChildren(controlState) {
32
+ if (controlState.kind === "for" && controlState._needsSourceReconcile) return evaluateForState(controlState);
33
+ if (controlState.kind !== "for") {
34
+ const activeVNode = controlState.activeScope?.vnode;
35
+ return activeVNode == null || activeVNode === false ? [] : [activeVNode];
36
+ }
37
+ if (controlState.orderedKeys.length === 0) {
38
+ const fallbackVNode = controlState.fallbackScope?.vnode;
39
+ return fallbackVNode == null || fallbackVNode === false ? [] : [fallbackVNode];
40
+ }
41
+ const childrenVNodes = [];
42
+ for (let index = 0; index < controlState.orderedKeys.length; index += 1) {
43
+ const itemKey = controlState.orderedKeys[index];
44
+ const itemInstance = controlState.items.get(itemKey);
45
+ childrenVNodes.push(itemInstance?.scope.vnode ?? null);
46
+ }
47
+ return childrenVNodes;
48
+ }
49
+ //#endregion
50
+ export { clearControlBoundaryDomUpdateState, evaluateControlBoundaryState, getControlBoundaryCommitChildren, getControlBoundaryState, getDirectControlBoundaryVNode };
@@ -1,10 +1,10 @@
1
1
  import { __FOR_BOUNDARY__, _isDOMElement } from "../common/vnode.js";
2
2
  import "./types.js";
3
3
  import { getRuntimeEnv } from "../common/env.js";
4
- import { logger } from "../dev/logger.js";
4
+ import { logger } from "../common/logger.js";
5
5
  import { Fragment, STATIC_CHILDREN } from "../common/jsx.js";
6
6
  import { getCurrentInstance } from "../runtime/component-scope.js";
7
- import "../runtime/component-contracts.js";
7
+ import "../runtime/index.js";
8
8
  import "./env.js";
9
9
  import { isSkippedProp, parseEventName } from "./utils.js";
10
10
  import "../jsx-runtime.js";
@@ -81,5 +81,3 @@ function tryGetStaticCreateFastPathShape(props, children) {
81
81
  }
82
82
  //#endregion
83
83
  export { isFragmentVNode, maybeWarnMissingKeys, normalizeComponentChildren, tryGetStaticCreateFastPathShape };
84
-
85
- //# sourceMappingURL=child-shape.js.map
@@ -0,0 +1,149 @@
1
+ import { _isDOMElement } from "../common/vnode.js";
2
+ import "./types.js";
3
+ import { getRuntimeEnv } from "../common/env.js";
4
+ import { teardownNodeSubtree } from "./cleanup.js";
5
+ import "./env.js";
6
+ import { hasNonTrivialProps, logFastPathDebug, now, recordFastPathStats, tagNamesEqualIgnoreCase } from "./utils.js";
7
+ import { keyedElements } from "./keyed.js";
8
+ import { createDOMNode, updateElementFromVnode } from "./dom-internal.js";
9
+ import "./dom.js";
10
+ //#region src/renderer/children-fastpath.ts
11
+ function upperCommonTagName(tag) {
12
+ switch (tag) {
13
+ case "div": return "DIV";
14
+ case "span": return "SPAN";
15
+ case "p": return "P";
16
+ case "a": return "A";
17
+ case "button": return "BUTTON";
18
+ case "input": return "INPUT";
19
+ case "ul": return "UL";
20
+ case "ol": return "OL";
21
+ case "li": return "LI";
22
+ default: return null;
23
+ }
24
+ }
25
+ function tagsEqualIgnoreCase(elementTagName, vnodeType) {
26
+ if (elementTagName === vnodeType) return true;
27
+ const upperCommon = upperCommonTagName(vnodeType);
28
+ if (upperCommon !== null && elementTagName === upperCommon) return true;
29
+ return tagNamesEqualIgnoreCase(elementTagName, vnodeType);
30
+ }
31
+ function performBulkPositionalKeyedTextUpdate(parent, keyedVnodes) {
32
+ const total = keyedVnodes.length;
33
+ let reused = 0;
34
+ let updatedKeys = 0;
35
+ const start = now();
36
+ const env = getRuntimeEnv();
37
+ const debugFastPath = env.ASKR_FASTPATH_DEBUG === "1" || env.ASKR_FASTPATH_DEBUG === "true";
38
+ for (let index = 0; index < total; index += 1) {
39
+ const { key, vnode } = keyedVnodes[index];
40
+ const child = parent.children[index];
41
+ if (child && _isDOMElement(vnode) && typeof vnode.type === "string") {
42
+ const vnodeType = vnode.type;
43
+ if (tagsEqualIgnoreCase(child.tagName, vnodeType)) {
44
+ const children = vnode.children || vnode.props?.children;
45
+ if (debugFastPath) logFastPathDebug("positional idx", index, {
46
+ chTag: child.tagName,
47
+ vnodeType,
48
+ chChildNodes: child.childNodes.length,
49
+ childrenType: Array.isArray(children) ? "array" : typeof children
50
+ });
51
+ updateTextContent(child, children, vnode);
52
+ setDataKey(child, key, () => updatedKeys += 1);
53
+ reused += 1;
54
+ continue;
55
+ }
56
+ if (debugFastPath) logFastPathDebug("positional tag mismatch", index, {
57
+ chTag: child.tagName,
58
+ vnodeType
59
+ });
60
+ } else if (debugFastPath) logFastPathDebug("positional missing or invalid", index, { ch: !!child });
61
+ replaceNodeAtPosition(parent, index, vnode);
62
+ }
63
+ const elapsed = now() - start;
64
+ updateKeyedElementsMap(parent, keyedVnodes);
65
+ const stats = {
66
+ n: total,
67
+ reused,
68
+ updatedKeys,
69
+ t: elapsed
70
+ };
71
+ recordFastPathStats(stats, "bulkKeyedPositionalHits");
72
+ return stats;
73
+ }
74
+ function updateTextContent(el, children, vnode) {
75
+ if (typeof children === "string" || typeof children === "number") {
76
+ setTextNodeData(el, String(children));
77
+ if (vnode.props && hasNonTrivialProps(vnode.props)) updateElementFromVnode(el, vnode, false);
78
+ return;
79
+ }
80
+ if (Array.isArray(children) && children.length === 1 && (typeof children[0] === "string" || typeof children[0] === "number")) {
81
+ setTextNodeData(el, String(children[0]));
82
+ if (vnode.props && hasNonTrivialProps(vnode.props)) updateElementFromVnode(el, vnode, false);
83
+ return;
84
+ }
85
+ if (!tryUpdateTwoChildTextPattern(el, vnode)) updateElementFromVnode(el, vnode);
86
+ }
87
+ function tryUpdateTwoChildTextPattern(parentEl, vnode) {
88
+ const vnodeChildren = vnode.props?.children ?? vnode.children;
89
+ if (!Array.isArray(vnodeChildren) || vnodeChildren.length !== 2) return false;
90
+ const firstChild = vnodeChildren[0];
91
+ const secondChild = vnodeChildren[1];
92
+ if (!_isDOMElement(firstChild) || !_isDOMElement(secondChild)) return false;
93
+ if (typeof firstChild.type !== "string" || typeof secondChild.type !== "string") return false;
94
+ const firstElement = parentEl.children[0];
95
+ const secondElement = parentEl.children[1];
96
+ if (!firstElement || !secondElement) return false;
97
+ if (parentEl.children.length !== 2 || parentEl.childNodes.length !== 2) return false;
98
+ if (!tagsEqualIgnoreCase(firstElement.tagName, firstChild.type)) return false;
99
+ if (!tagsEqualIgnoreCase(secondElement.tagName, secondChild.type)) return false;
100
+ const firstText = firstChild.children || firstChild.props?.children;
101
+ const secondText = secondChild.children || secondChild.props?.children;
102
+ if (typeof firstText === "string" || typeof firstText === "number") setTextNodeData(firstElement, String(firstText));
103
+ else if (Array.isArray(firstText) && firstText.length === 1 && (typeof firstText[0] === "string" || typeof firstText[0] === "number")) setTextNodeData(firstElement, String(firstText[0]));
104
+ else return false;
105
+ if (typeof secondText === "string" || typeof secondText === "number") setTextNodeData(secondElement, String(secondText));
106
+ else if (Array.isArray(secondText) && secondText.length === 1 && (typeof secondText[0] === "string" || typeof secondText[0] === "number")) setTextNodeData(secondElement, String(secondText[0]));
107
+ else return false;
108
+ return true;
109
+ }
110
+ function setTextNodeData(el, text) {
111
+ if (el.childNodes.length === 1 && el.firstChild?.nodeType === 3) {
112
+ const textNode = el.firstChild;
113
+ if (textNode.data !== text) textNode.data = text;
114
+ } else el.textContent = text;
115
+ }
116
+ function setDataKey(el, key, onSet) {
117
+ try {
118
+ const next = String(key);
119
+ const keyKind = typeof key;
120
+ if (el.getAttribute("data-key") === next && el.getAttribute("data-askr-key-kind") === keyKind) return;
121
+ el.setAttribute("data-key", next);
122
+ el.setAttribute("data-askr-key-kind", keyKind);
123
+ onSet();
124
+ } catch {}
125
+ }
126
+ function replaceNodeAtPosition(parent, index, vnode) {
127
+ const dom = createDOMNode(vnode);
128
+ if (dom) {
129
+ const existing = parent.children[index];
130
+ if (existing) {
131
+ teardownNodeSubtree(existing);
132
+ parent.replaceChild(dom, existing);
133
+ } else parent.appendChild(dom);
134
+ }
135
+ }
136
+ function updateKeyedElementsMap(parent, keyedVnodes) {
137
+ try {
138
+ const existing = keyedElements.get(parent);
139
+ const newKeyMap = existing ? (existing.clear(), existing) : /* @__PURE__ */ new Map();
140
+ for (let index = 0; index < keyedVnodes.length; index += 1) {
141
+ const key = keyedVnodes[index].key;
142
+ const child = parent.children[index];
143
+ if (child) newKeyMap.set(key, child);
144
+ }
145
+ keyedElements.set(parent, newKeyMap);
146
+ } catch {}
147
+ }
148
+ //#endregion
149
+ export { performBulkPositionalKeyedTextUpdate, tagsEqualIgnoreCase };
@@ -1,149 +1,14 @@
1
- import { _isDOMElement } from "../common/vnode.js";
2
- import "./types.js";
3
1
  import { getRuntimeEnv } from "../common/env.js";
4
2
  import { incDevCounter, setDevValue } from "../runtime/dev-namespace.js";
3
+ import "../runtime/index.js";
5
4
  import { teardownNodeSubtree } from "./cleanup.js";
6
5
  import "./env.js";
7
- import { hasNonTrivialProps, logFastPathDebug, now, recordDOMReplace, recordFastPathStats, tagNamesEqualIgnoreCase } from "./utils.js";
6
+ import { now, recordDOMReplace } from "./utils.js";
8
7
  import { keyedElements } from "./keyed.js";
8
+ import { performBulkPositionalKeyedTextUpdate, tagsEqualIgnoreCase } from "./children-fastpath.js";
9
9
  import { createDOMNode, updateElementFromVnode } from "./dom-internal.js";
10
10
  import "./dom.js";
11
11
  //#region src/renderer/children.ts
12
- function upperCommonTagName(tag) {
13
- switch (tag) {
14
- case "div": return "DIV";
15
- case "span": return "SPAN";
16
- case "p": return "P";
17
- case "a": return "A";
18
- case "button": return "BUTTON";
19
- case "input": return "INPUT";
20
- case "ul": return "UL";
21
- case "ol": return "OL";
22
- case "li": return "LI";
23
- default: return null;
24
- }
25
- }
26
- function tagsEqualIgnoreCase(elementTagName, vnodeType) {
27
- if (elementTagName === vnodeType) return true;
28
- const upperCommon = upperCommonTagName(vnodeType);
29
- if (upperCommon !== null && elementTagName === upperCommon) return true;
30
- return tagNamesEqualIgnoreCase(elementTagName, vnodeType);
31
- }
32
- function performBulkPositionalKeyedTextUpdate(parent, keyedVnodes) {
33
- const total = keyedVnodes.length;
34
- let reused = 0;
35
- let updatedKeys = 0;
36
- const start = now();
37
- const env = getRuntimeEnv();
38
- const debugFastPath = env.ASKR_FASTPATH_DEBUG === "1" || env.ASKR_FASTPATH_DEBUG === "true";
39
- for (let index = 0; index < total; index += 1) {
40
- const { key, vnode } = keyedVnodes[index];
41
- const child = parent.children[index];
42
- if (child && _isDOMElement(vnode) && typeof vnode.type === "string") {
43
- const vnodeType = vnode.type;
44
- if (tagsEqualIgnoreCase(child.tagName, vnodeType)) {
45
- const children = vnode.children || vnode.props?.children;
46
- if (debugFastPath) logFastPathDebug("positional idx", index, {
47
- chTag: child.tagName,
48
- vnodeType,
49
- chChildNodes: child.childNodes.length,
50
- childrenType: Array.isArray(children) ? "array" : typeof children
51
- });
52
- updateTextContent(child, children, vnode);
53
- setDataKey(child, key, () => updatedKeys += 1);
54
- reused += 1;
55
- continue;
56
- }
57
- if (debugFastPath) logFastPathDebug("positional tag mismatch", index, {
58
- chTag: child.tagName,
59
- vnodeType
60
- });
61
- } else if (debugFastPath) logFastPathDebug("positional missing or invalid", index, { ch: !!child });
62
- replaceNodeAtPosition(parent, index, vnode);
63
- }
64
- const elapsed = now() - start;
65
- updateKeyedElementsMap(parent, keyedVnodes);
66
- const stats = {
67
- n: total,
68
- reused,
69
- updatedKeys,
70
- t: elapsed
71
- };
72
- recordFastPathStats(stats, "bulkKeyedPositionalHits");
73
- return stats;
74
- }
75
- function updateTextContent(el, children, vnode) {
76
- if (typeof children === "string" || typeof children === "number") {
77
- setTextNodeData(el, String(children));
78
- if (vnode.props && hasNonTrivialProps(vnode.props)) updateElementFromVnode(el, vnode, false);
79
- return;
80
- }
81
- if (Array.isArray(children) && children.length === 1 && (typeof children[0] === "string" || typeof children[0] === "number")) {
82
- setTextNodeData(el, String(children[0]));
83
- if (vnode.props && hasNonTrivialProps(vnode.props)) updateElementFromVnode(el, vnode, false);
84
- return;
85
- }
86
- if (!tryUpdateTwoChildTextPattern(el, vnode)) updateElementFromVnode(el, vnode);
87
- }
88
- function tryUpdateTwoChildTextPattern(parentEl, vnode) {
89
- const vnodeChildren = vnode.props?.children ?? vnode.children;
90
- if (!Array.isArray(vnodeChildren) || vnodeChildren.length !== 2) return false;
91
- const firstChild = vnodeChildren[0];
92
- const secondChild = vnodeChildren[1];
93
- if (!_isDOMElement(firstChild) || !_isDOMElement(secondChild)) return false;
94
- if (typeof firstChild.type !== "string" || typeof secondChild.type !== "string") return false;
95
- const firstElement = parentEl.children[0];
96
- const secondElement = parentEl.children[1];
97
- if (!firstElement || !secondElement) return false;
98
- if (parentEl.children.length !== 2 || parentEl.childNodes.length !== 2) return false;
99
- if (!tagsEqualIgnoreCase(firstElement.tagName, firstChild.type)) return false;
100
- if (!tagsEqualIgnoreCase(secondElement.tagName, secondChild.type)) return false;
101
- const firstText = firstChild.children || firstChild.props?.children;
102
- const secondText = secondChild.children || secondChild.props?.children;
103
- if (typeof firstText === "string" || typeof firstText === "number") setTextNodeData(firstElement, String(firstText));
104
- else if (Array.isArray(firstText) && firstText.length === 1 && (typeof firstText[0] === "string" || typeof firstText[0] === "number")) setTextNodeData(firstElement, String(firstText[0]));
105
- else return false;
106
- if (typeof secondText === "string" || typeof secondText === "number") setTextNodeData(secondElement, String(secondText));
107
- else if (Array.isArray(secondText) && secondText.length === 1 && (typeof secondText[0] === "string" || typeof secondText[0] === "number")) setTextNodeData(secondElement, String(secondText[0]));
108
- else return false;
109
- return true;
110
- }
111
- function setTextNodeData(el, text) {
112
- if (el.childNodes.length === 1 && el.firstChild?.nodeType === 3) {
113
- const textNode = el.firstChild;
114
- if (textNode.data !== text) textNode.data = text;
115
- } else el.textContent = text;
116
- }
117
- function setDataKey(el, key, onSet) {
118
- try {
119
- const next = String(key);
120
- if (el.getAttribute("data-key") === next) return;
121
- el.setAttribute("data-key", next);
122
- onSet();
123
- } catch {}
124
- }
125
- function replaceNodeAtPosition(parent, index, vnode) {
126
- const dom = createDOMNode(vnode);
127
- if (dom) {
128
- const existing = parent.children[index];
129
- if (existing) {
130
- teardownNodeSubtree(existing);
131
- parent.replaceChild(dom, existing);
132
- } else parent.appendChild(dom);
133
- }
134
- }
135
- function updateKeyedElementsMap(parent, keyedVnodes) {
136
- try {
137
- const existing = keyedElements.get(parent);
138
- const newKeyMap = existing ? (existing.clear(), existing) : /* @__PURE__ */ new Map();
139
- for (let index = 0; index < keyedVnodes.length; index += 1) {
140
- const key = keyedVnodes[index].key;
141
- const child = parent.children[index];
142
- if (child) newKeyMap.set(key, child);
143
- }
144
- keyedElements.set(parent, newKeyMap);
145
- } catch {}
146
- }
147
12
  function performBulkTextReplace(parent, newChildren) {
148
13
  const start = now();
149
14
  const existing = Array.from(parent.childNodes);
@@ -291,5 +156,3 @@ function recordBulkDiag(data) {
291
156
  }
292
157
  //#endregion
293
158
  export { isBulkTextFastPathEligible, performBulkPositionalKeyedTextUpdate, performBulkTextReplace };
294
-
295
- //# sourceMappingURL=children.js.map
@@ -1,10 +1,12 @@
1
- import { logger } from "../dev/logger.js";
1
+ import { logger } from "../common/logger.js";
2
2
  import { incDevCounter } from "../runtime/dev-namespace.js";
3
3
  import { cleanupComponent } from "../runtime/component-cleanup.js";
4
- import "../runtime/component-contracts.js";
4
+ import { registerLifecycleTransaction } from "../runtime/lifecycle-batch.js";
5
5
  import { clearDelegatedHandlersForElement, removeDelegatedListener } from "../runtime/events.js";
6
+ import "../runtime/index.js";
6
7
  //#region src/renderer/cleanup.ts
7
8
  const elementRefs = /* @__PURE__ */ new WeakMap();
9
+ const refOwners = /* @__PURE__ */ new Map();
8
10
  function applyRefValue(ref, value) {
9
11
  const resolvedRef = ref;
10
12
  if (!resolvedRef) return;
@@ -15,26 +17,47 @@ function applyRefValue(ref, value) {
15
17
  if (Object.isExtensible(resolvedRef)) resolvedRef.current = value;
16
18
  }
17
19
  function updateElementRef(element, ref) {
20
+ if (registerLifecycleTransaction({}, () => updateElementRefImmediately(element, ref), () => void 0)) return;
21
+ updateElementRefImmediately(element, ref);
22
+ }
23
+ function updateElementRefImmediately(element, ref) {
18
24
  const previousRef = elementRefs.get(element);
19
25
  if (previousRef === ref) return;
20
26
  if (previousRef) applyRefValue(previousRef, null);
21
27
  if (ref) {
28
+ const previousOwner = refOwners.get(ref);
29
+ if (typeof ref === "function" && previousOwner && previousOwner !== element) {
30
+ elementRefs.set(element, ref);
31
+ refOwners.set(ref, element);
32
+ return;
33
+ }
22
34
  applyRefValue(ref, element);
23
35
  elementRefs.set(element, ref);
36
+ refOwners.set(ref, element);
24
37
  } else elementRefs.delete(element);
25
38
  }
26
39
  function removeElementRef(element) {
27
40
  const ref = elementRefs.get(element);
28
41
  if (!ref) return;
42
+ if (typeof ref !== "function" && refOwners.get(ref) !== element) {
43
+ elementRefs.delete(element);
44
+ return;
45
+ }
29
46
  applyRefValue(ref, null);
47
+ const nextOwner = refOwners.get(ref);
48
+ if (typeof ref === "function" && nextOwner && nextOwner !== element) applyRefValue(ref, nextOwner);
30
49
  elementRefs.delete(element);
50
+ if (refOwners.get(ref) === element) refOwners.delete(ref);
31
51
  }
32
52
  function cleanupSingleInstance(node, errors, strict) {
53
+ const instanceList = node.__ASKR_INSTANCES;
54
+ const primaryInstance = node.__ASKR_INSTANCE;
55
+ if (!instanceList && !primaryInstance) return;
33
56
  const instances = /* @__PURE__ */ new Set();
34
- if (Array.isArray(node.__ASKR_INSTANCES)) {
35
- for (const instance of node.__ASKR_INSTANCES) if (instance) instances.add(instance);
57
+ if (Array.isArray(instanceList)) {
58
+ for (const instance of instanceList) if (instance) instances.add(instance);
36
59
  }
37
- if (node.__ASKR_INSTANCE) instances.add(node.__ASKR_INSTANCE);
60
+ if (primaryInstance) instances.add(primaryInstance);
38
61
  for (const instance of instances) try {
39
62
  cleanupComponent(instance);
40
63
  } catch (err) {
@@ -172,14 +195,50 @@ function teardownNodeSubtree(node, opts) {
172
195
  }
173
196
  const REACTIVE_CHILDREN_KEY = "__askr_reactive_children__";
174
197
  const elementReactivePropsCleanup = /* @__PURE__ */ new WeakMap();
198
+ function getElementReactivePropsCleanupMap(element, create = false) {
199
+ const store = elementReactivePropsCleanup.get(element);
200
+ if (store instanceof Map) return store;
201
+ if (store) {
202
+ const map = /* @__PURE__ */ new Map([[store._bindingKey, store]]);
203
+ elementReactivePropsCleanup.set(element, map);
204
+ return map;
205
+ }
206
+ if (!create) return;
207
+ const map = /* @__PURE__ */ new Map();
208
+ elementReactivePropsCleanup.set(element, map);
209
+ return map;
210
+ }
211
+ function setDirectElementReactivePropCleanup(element, bindingKey, entry) {
212
+ if (!elementReactivePropsCleanup.get(element)) {
213
+ entry._bindingKey = bindingKey;
214
+ elementReactivePropsCleanup.set(element, entry);
215
+ return;
216
+ }
217
+ getElementReactivePropsCleanupMap(element, true).set(bindingKey, entry);
218
+ }
219
+ /** @internal Publish the first reactive binding on a newly created element. */
220
+ function setFreshElementReactivePropCleanup(element, bindingKey, entry) {
221
+ entry._bindingKey = bindingKey;
222
+ elementReactivePropsCleanup.set(element, entry);
223
+ }
224
+ function getElementReactivePropCleanupSize(element) {
225
+ const store = elementReactivePropsCleanup.get(element);
226
+ return store instanceof Map ? store.size : store ? 1 : 0;
227
+ }
228
+ function forEachElementReactivePropCleanup(element, visit) {
229
+ const store = elementReactivePropsCleanup.get(element);
230
+ if (store instanceof Map) for (const entry of store.values()) visit(entry);
231
+ else if (store) visit(store);
232
+ }
175
233
  function removeElementReactiveProps(element) {
176
- const cleanupMap = elementReactivePropsCleanup.get(element);
177
- if (cleanupMap) {
178
- for (const entry of cleanupMap.values()) try {
179
- entry.cleanup();
180
- } catch (err) {
181
- logger.warn("[Askr] reactive prop cleanup failed:", err);
182
- }
234
+ if (elementReactivePropsCleanup.has(element)) {
235
+ forEachElementReactivePropCleanup(element, (entry) => {
236
+ try {
237
+ entry.cleanup();
238
+ } catch (err) {
239
+ logger.warn("[Askr] reactive prop cleanup failed:", err);
240
+ }
241
+ });
183
242
  elementReactivePropsCleanup.delete(element);
184
243
  }
185
244
  }
@@ -205,6 +264,4 @@ function removeAllListeners(root) {
205
264
  });
206
265
  }
207
266
  //#endregion
208
- export { REACTIVE_CHILDREN_KEY, cleanupInstanceIfPresent, cleanupInstancesUnder, elementListeners, elementReactivePropsCleanup, elementRefs, removeAllListeners, removeElementListeners, removeElementReactiveProps, removeElementRef, teardownNodeSubtree, updateElementRef };
209
-
210
- //# sourceMappingURL=cleanup.js.map
267
+ export { REACTIVE_CHILDREN_KEY, cleanupInstanceIfPresent, cleanupInstancesUnder, elementListeners, elementReactivePropsCleanup, elementRefs, forEachElementReactivePropCleanup, getElementReactivePropCleanupSize, getElementReactivePropsCleanupMap, removeAllListeners, removeElementListeners, removeElementReactiveProps, removeElementRef, setDirectElementReactivePropCleanup, setFreshElementReactivePropCleanup, teardownNodeSubtree, updateElementRef };