@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
@@ -1,34 +1,27 @@
1
1
  import { logger } from "../common/logger.js";
2
+ import { getCurrentLifecycleCommitBatch, registerLifecycleTransaction } from "../runtime/lifecycle-batch.js";
2
3
  import { addDelegatedListener, getDelegatedHandlersForElement, removeDelegatedListener, updateDelegatedListener } from "../runtime/events.js";
3
4
  import "../runtime/index.js";
4
- import { elementListeners, elementReactivePropsCleanup, elementRefs } from "./cleanup.js";
5
+ import { elementListeners, elementReactivePropsCleanup, elementRefs, getElementReactivePropsCleanupMap } from "./cleanup.js";
5
6
  import { keyedElements } from "./keyed.js";
6
7
  //#region src/renderer/retained-element-rollback.ts
7
- function collectElementSubtree(root) {
8
- const elements = [root];
9
- const descendants = root.querySelectorAll("*");
10
- for (let index = 0; index < descendants.length; index += 1) elements.push(descendants[index]);
11
- return elements;
12
- }
13
8
  function collectTextSnapshots(root) {
14
9
  const snapshots = [];
15
- const stack = Array.from(root.childNodes).reverse();
16
- while (stack.length > 0) {
17
- const node = stack.pop();
10
+ for (let index = 0; index < root.childNodes.length; index += 1) {
11
+ const node = root.childNodes[index];
18
12
  if (node.nodeType === 3) {
13
+ const text = node;
19
14
  snapshots.push({
20
- node,
21
- data: node.data
15
+ node: text,
16
+ data: text.data
22
17
  });
23
- continue;
24
18
  }
25
- for (let child = node.lastChild; child; child = child.previousSibling) stack.push(child);
26
19
  }
27
20
  return snapshots;
28
21
  }
29
22
  function getFormControlSnapshot(element) {
30
23
  const control = element;
31
- const snapshot = { element };
24
+ const snapshot = {};
32
25
  if ("value" in control) snapshot.value = String(control.value ?? "");
33
26
  if ("checked" in control) snapshot.checked = Boolean(control.checked);
34
27
  return snapshot.value !== void 0 || snapshot.checked !== void 0 ? snapshot : null;
@@ -47,72 +40,38 @@ function cloneReactivePropEntry(entry) {
47
40
  return {
48
41
  cleanup: entry.cleanup,
49
42
  fnRef: entry.fnRef,
43
+ groupedScalar: entry.groupedScalar,
50
44
  restoreFn: entry.restoreFn,
51
45
  updateFn: entry.updateFn
52
46
  };
53
47
  }
54
- function snapshotRetainedElement(element) {
55
- const elements = collectElementSubtree(element);
56
- const attributes = [];
57
- const childNodes = [];
58
- const delegatedListeners = [];
59
- const formControls = [];
60
- const listeners = [];
61
- const reactiveProps = [];
62
- const refs = [];
63
- for (const currentElement of elements) {
64
- attributes.push({
65
- element: currentElement,
66
- attributes: Array.from(currentElement.attributes, (attribute) => [attribute.name, attribute.value])
67
- });
68
- childNodes.push({
69
- element: currentElement,
70
- childNodes: Array.from(currentElement.childNodes)
71
- });
72
- const formControl = getFormControlSnapshot(currentElement);
73
- if (formControl) formControls.push(formControl);
74
- const listenerMap = elementListeners.get(currentElement);
75
- listeners.push({
76
- element: currentElement,
77
- entries: listenerMap ? Array.from(listenerMap, ([listenerKey, entry]) => ({
78
- listenerKey,
79
- entry: cloneListenerEntry(entry)
80
- })) : []
81
- });
82
- const delegatedHandlerMap = getDelegatedHandlersForElement(currentElement);
83
- delegatedListeners.push({
84
- element: currentElement,
85
- entries: delegatedHandlerMap ? Array.from(delegatedHandlerMap, ([eventName, entry]) => ({
86
- eventName,
87
- handler: entry.handler,
88
- original: entry.original,
89
- options: entry.options
90
- })) : []
91
- });
92
- const reactivePropMap = elementReactivePropsCleanup.get(currentElement);
93
- reactiveProps.push({
94
- element: currentElement,
95
- entries: reactivePropMap ? Array.from(reactivePropMap, ([propName, entry]) => ({
96
- propName,
97
- entry: cloneReactivePropEntry(entry)
98
- })) : []
99
- });
100
- refs.push({
101
- element: currentElement,
102
- ref: elementRefs.get(currentElement)
103
- });
104
- }
48
+ function snapshotRetainedElement(element, bindingsOnly = false) {
49
+ const listenerMap = elementListeners.get(element);
50
+ const delegatedHandlerMap = getDelegatedHandlersForElement(element);
51
+ const reactivePropMap = getElementReactivePropsCleanupMap(element);
105
52
  const keyedMap = keyedElements.get(element);
106
53
  return {
107
- attributes,
108
- childNodes,
109
- delegatedListeners,
110
- formControls,
54
+ attributes: bindingsOnly ? [] : Array.from(element.attributes, (attribute) => [attribute.name, attribute.value]),
55
+ childNodes: bindingsOnly ? [] : Array.from(element.childNodes),
56
+ delegatedListeners: delegatedHandlerMap ? Array.from(delegatedHandlerMap, ([eventName, entry]) => ({
57
+ eventName,
58
+ handler: entry.handler,
59
+ original: entry.original,
60
+ options: entry.options
61
+ })) : [],
62
+ domCaptured: !bindingsOnly,
63
+ formControl: bindingsOnly ? null : getFormControlSnapshot(element),
111
64
  keyedMap: keyedMap ? new Map(keyedMap) : void 0,
112
- listeners,
113
- reactiveProps,
114
- refs,
115
- textNodes: collectTextSnapshots(element)
65
+ listeners: listenerMap ? Array.from(listenerMap, ([listenerKey, entry]) => ({
66
+ listenerKey,
67
+ entry: cloneListenerEntry(entry)
68
+ })) : [],
69
+ reactiveProps: reactivePropMap ? Array.from(reactivePropMap, ([propName, entry]) => ({
70
+ propName,
71
+ entry: cloneReactivePropEntry(entry)
72
+ })) : [],
73
+ ref: elementRefs.get(element),
74
+ textNodes: bindingsOnly ? [] : collectTextSnapshots(element)
116
75
  };
117
76
  }
118
77
  function sameChildOrder(element, childNodes) {
@@ -120,19 +79,17 @@ function sameChildOrder(element, childNodes) {
120
79
  for (let index = 0; index < childNodes.length; index += 1) if (element.childNodes[index] !== childNodes[index]) return false;
121
80
  return true;
122
81
  }
123
- function restoreAttributes(snapshot) {
124
- for (const { element, attributes } of snapshot.attributes) {
125
- const expectedNames = new Set(attributes.map(([name]) => name));
126
- for (const attribute of Array.from(element.attributes)) if (!expectedNames.has(attribute.name)) element.removeAttribute(attribute.name);
127
- for (const [name, value] of attributes) if (element.getAttribute(name) !== value) element.setAttribute(name, value);
128
- }
82
+ function restoreAttributes(element, snapshot) {
83
+ const expectedNames = new Set(snapshot.attributes.map(([name]) => name));
84
+ for (const attribute of Array.from(element.attributes)) if (!expectedNames.has(attribute.name)) element.removeAttribute(attribute.name);
85
+ for (const [name, value] of snapshot.attributes) if (element.getAttribute(name) !== value) element.setAttribute(name, value);
129
86
  }
130
- function restoreFormControls(snapshot) {
131
- for (const { element, value, checked } of snapshot.formControls) {
132
- const control = element;
133
- if (value !== void 0 && "value" in control) control.value = value;
134
- if (checked !== void 0 && "checked" in control) control.checked = checked;
135
- }
87
+ function restoreFormControl(element, snapshot) {
88
+ if (!snapshot.formControl) return;
89
+ const { value, checked } = snapshot.formControl;
90
+ const control = element;
91
+ if (value !== void 0 && "value" in control) control.value = value;
92
+ if (checked !== void 0 && "checked" in control) control.checked = checked;
136
93
  }
137
94
  function applyRefValue(ref, value) {
138
95
  if (!ref) return;
@@ -144,15 +101,13 @@ function applyRefValue(ref, value) {
144
101
  if (Object.isExtensible(ref)) ref.current = value;
145
102
  } catch {}
146
103
  }
147
- function restoreRefs(snapshot) {
148
- for (const { element, ref } of snapshot.refs) {
149
- const currentRef = elementRefs.get(element);
150
- if (currentRef !== ref) applyRefValue(currentRef, null);
151
- if (ref) {
152
- applyRefValue(ref, element);
153
- elementRefs.set(element, ref);
154
- } else elementRefs.delete(element);
155
- }
104
+ function restoreRef(element, snapshot) {
105
+ const currentRef = elementRefs.get(element);
106
+ if (currentRef !== snapshot.ref) applyRefValue(currentRef, null);
107
+ if (snapshot.ref) {
108
+ applyRefValue(snapshot.ref, element);
109
+ elementRefs.set(element, snapshot.ref);
110
+ } else elementRefs.delete(element);
156
111
  }
157
112
  function removeDirectListener(element, entry) {
158
113
  if (entry.isDelegated) return;
@@ -164,63 +119,86 @@ function addDirectListener(element, entry) {
164
119
  if (entry.options !== void 0) element.addEventListener(entry.eventName, entry.handler, entry.options);
165
120
  else element.addEventListener(entry.eventName, entry.handler);
166
121
  }
167
- function restoreListeners(snapshot) {
168
- for (const { element, entries } of snapshot.listeners) {
169
- const expectedKeys = new Set(entries.map(({ listenerKey }) => listenerKey));
170
- let currentMap = elementListeners.get(element);
171
- if (currentMap) {
172
- for (const [listenerKey, entry] of Array.from(currentMap)) if (!expectedKeys.has(listenerKey)) {
122
+ function restoreListeners(element, snapshot) {
123
+ const errors = [];
124
+ const expectedKeys = new Set(snapshot.listeners.map(({ listenerKey }) => listenerKey));
125
+ let currentMap = elementListeners.get(element);
126
+ if (currentMap) {
127
+ for (const [listenerKey, entry] of Array.from(currentMap)) if (!expectedKeys.has(listenerKey)) {
128
+ try {
173
129
  removeDirectListener(element, entry);
174
- currentMap.delete(listenerKey);
130
+ } catch (error) {
131
+ errors.push(error);
175
132
  }
133
+ currentMap.delete(listenerKey);
176
134
  }
177
- if (entries.length === 0) {
178
- if (currentMap?.size === 0) elementListeners.delete(element);
179
- continue;
180
- }
135
+ }
136
+ if (snapshot.listeners.length === 0) {
137
+ if (currentMap?.size === 0) elementListeners.delete(element);
138
+ } else {
181
139
  if (!currentMap) {
182
140
  currentMap = /* @__PURE__ */ new Map();
183
141
  elementListeners.set(element, currentMap);
184
142
  }
185
- for (const { listenerKey, entry } of entries) {
143
+ for (const { listenerKey, entry } of snapshot.listeners) {
186
144
  const currentEntry = currentMap.get(listenerKey);
187
145
  entry.updateHandler?.(entry.original);
188
- if (currentEntry && currentEntry.handler !== entry.handler) removeDirectListener(element, currentEntry);
189
- if (!currentEntry || currentEntry.handler !== entry.handler) addDirectListener(element, entry);
146
+ if (currentEntry && currentEntry.handler !== entry.handler) try {
147
+ removeDirectListener(element, currentEntry);
148
+ } catch (error) {
149
+ errors.push(error);
150
+ }
151
+ if (!currentEntry || currentEntry.handler !== entry.handler) try {
152
+ addDirectListener(element, entry);
153
+ } catch (error) {
154
+ errors.push(error);
155
+ }
190
156
  else currentEntry.updateHandler?.(entry.original);
191
157
  currentMap.set(listenerKey, cloneListenerEntry(entry));
192
158
  }
193
159
  }
160
+ if (errors.length > 0) throw new AggregateError(errors, "Listener rollback failed");
194
161
  }
195
- function restoreDelegatedListeners(snapshot) {
196
- for (const { element, entries } of snapshot.delegatedListeners) {
197
- const expectedEventNames = new Set(entries.map(({ eventName }) => eventName));
198
- const currentMap = getDelegatedHandlersForElement(element);
199
- if (currentMap) {
200
- for (const eventName of currentMap.keys()) if (!expectedEventNames.has(eventName)) removeDelegatedListener(element, eventName);
162
+ function restoreDelegatedListeners(element, snapshot) {
163
+ const errors = [];
164
+ const expectedEventNames = new Set(snapshot.delegatedListeners.map(({ eventName }) => eventName));
165
+ const currentMap = getDelegatedHandlersForElement(element);
166
+ if (currentMap) {
167
+ for (const eventName of currentMap.keys()) if (!expectedEventNames.has(eventName)) try {
168
+ removeDelegatedListener(element, eventName);
169
+ } catch (error) {
170
+ errors.push(error);
201
171
  }
202
- for (const { eventName, handler, original, options } of entries) if (!updateDelegatedListener(element, eventName, handler, original, options)) addDelegatedListener(element, eventName, handler, original, options);
203
172
  }
173
+ for (const { eventName, handler, original, options } of snapshot.delegatedListeners) try {
174
+ if (!updateDelegatedListener(element, eventName, handler, original, options)) addDelegatedListener(element, eventName, handler, original, options);
175
+ } catch (error) {
176
+ errors.push(error);
177
+ }
178
+ if (errors.length > 0) throw new AggregateError(errors, "Delegated listener rollback failed");
204
179
  }
205
- function restoreReactiveProps(snapshot) {
206
- for (const { element, entries } of snapshot.reactiveProps) {
207
- const expectedPropNames = new Set(entries.map(({ propName }) => propName));
208
- let currentMap = elementReactivePropsCleanup.get(element);
209
- if (currentMap) {
210
- for (const [propName, entry] of Array.from(currentMap)) if (!expectedPropNames.has(propName)) {
180
+ function restoreReactiveProps(element, snapshot) {
181
+ const errors = [];
182
+ const expectedPropNames = new Set(snapshot.reactiveProps.map(({ propName }) => propName));
183
+ let currentMap = getElementReactivePropsCleanupMap(element);
184
+ if (currentMap) {
185
+ for (const [propName, entry] of Array.from(currentMap)) if (!expectedPropNames.has(propName)) {
186
+ try {
211
187
  entry.cleanup();
212
- currentMap.delete(propName);
188
+ } catch (error) {
189
+ errors.push(error);
213
190
  }
191
+ currentMap.delete(propName);
214
192
  }
215
- if (entries.length === 0) {
216
- if (currentMap?.size === 0) elementReactivePropsCleanup.delete(element);
217
- continue;
218
- }
193
+ }
194
+ if (snapshot.reactiveProps.length === 0) {
195
+ if (currentMap?.size === 0) elementReactivePropsCleanup.delete(element);
196
+ } else {
219
197
  if (!currentMap) {
220
198
  currentMap = /* @__PURE__ */ new Map();
221
199
  elementReactivePropsCleanup.set(element, currentMap);
222
200
  }
223
- for (const { propName, entry } of entries) {
201
+ for (const { propName, entry } of snapshot.reactiveProps) {
224
202
  const currentEntry = currentMap.get(propName);
225
203
  if (currentEntry) {
226
204
  currentEntry.updateFn?.(entry.fnRef);
@@ -228,16 +206,28 @@ function restoreReactiveProps(snapshot) {
228
206
  currentMap.set(propName, currentEntry);
229
207
  continue;
230
208
  }
231
- currentMap.set(propName, entry.restoreFn?.(entry.fnRef) ?? cloneReactivePropEntry(entry));
209
+ currentMap.set(propName, (() => {
210
+ try {
211
+ return entry.restoreFn?.(entry.fnRef) ?? cloneReactivePropEntry(entry);
212
+ } catch (error) {
213
+ errors.push(error);
214
+ return cloneReactivePropEntry(entry);
215
+ }
216
+ })());
232
217
  }
233
218
  }
219
+ if (errors.length > 0) throw new AggregateError(errors, "Reactive property rollback failed");
234
220
  }
235
- function restoreChildNodes(snapshot, cleanupRangeNode) {
236
- for (const { element, childNodes } of snapshot.childNodes) {
237
- const expectedChildren = new Set(childNodes);
238
- for (const child of Array.from(element.childNodes)) if (!expectedChildren.has(child)) cleanupRangeNode(child);
221
+ function restoreChildNodes(element, snapshot, cleanupRangeNode) {
222
+ const errors = [];
223
+ const expectedChildren = new Set(snapshot.childNodes);
224
+ for (const child of Array.from(element.childNodes)) if (!expectedChildren.has(child)) try {
225
+ cleanupRangeNode(child);
226
+ } catch (error) {
227
+ errors.push(error);
239
228
  }
240
- for (const { element, childNodes } of snapshot.childNodes) if (!sameChildOrder(element, childNodes)) element.replaceChildren(...childNodes);
229
+ if (!sameChildOrder(element, snapshot.childNodes)) element.replaceChildren(...snapshot.childNodes);
230
+ if (errors.length > 0) throw new AggregateError(errors, "DOM range rollback cleanup failed");
241
231
  }
242
232
  function restoreTextNodes(snapshot) {
243
233
  for (const { node, data } of snapshot.textNodes) if (node.data !== data) node.data = data;
@@ -247,31 +237,52 @@ function restoreKeyedMap(element, snapshot) {
247
237
  else keyedElements.delete(element);
248
238
  }
249
239
  function restoreRetainedElement(element, snapshot, cleanupRangeNode) {
250
- restoreChildNodes(snapshot, cleanupRangeNode);
251
- restoreReactiveProps(snapshot);
252
- restoreAttributes(snapshot);
253
- restoreTextNodes(snapshot);
254
- restoreFormControls(snapshot);
255
- restoreRefs(snapshot);
256
- restoreListeners(snapshot);
257
- restoreDelegatedListeners(snapshot);
258
- restoreKeyedMap(element, snapshot);
240
+ const errors = [];
241
+ const phases = [
242
+ ...snapshot.domCaptured ? [
243
+ () => restoreChildNodes(element, snapshot, cleanupRangeNode),
244
+ () => restoreTextNodes(snapshot),
245
+ () => restoreFormControl(element, snapshot),
246
+ () => restoreAttributes(element, snapshot)
247
+ ] : [],
248
+ () => restoreReactiveProps(element, snapshot),
249
+ () => restoreRef(element, snapshot),
250
+ () => restoreListeners(element, snapshot),
251
+ () => restoreDelegatedListeners(element, snapshot),
252
+ ...snapshot.domCaptured ? [() => restoreKeyedMap(element, snapshot)] : []
253
+ ];
254
+ for (const phase of phases) try {
255
+ phase();
256
+ } catch (error) {
257
+ errors.push(error);
258
+ }
259
+ if (errors.length > 0) throw new AggregateError(errors, "Retained element rollback failed");
259
260
  }
260
- function runRetainedElementUpdate(element, cleanupRangeNode, update, onError) {
261
- const snapshot = snapshotRetainedElement(element);
261
+ function runRetainedElementUpdate(element, cleanupRangeNode, update, onError, bindingsOnly = false) {
262
+ const batch = getCurrentLifecycleCommitBatch();
263
+ const existingSnapshot = batch?.retainedElementSnapshots.get(element);
264
+ const snapshot = existingSnapshot ?? snapshotRetainedElement(element, bindingsOnly);
265
+ let restored = false;
266
+ if (batch && !existingSnapshot) {
267
+ batch.retainedElementSnapshots.set(element, snapshot);
268
+ registerLifecycleTransaction(element, () => void 0, () => {
269
+ if (restored) return;
270
+ restored = true;
271
+ restoreRetainedElement(element, snapshot, cleanupRangeNode);
272
+ });
273
+ }
262
274
  try {
263
275
  update();
264
276
  } catch (err) {
265
277
  onError?.();
266
278
  try {
279
+ restored = true;
267
280
  restoreRetainedElement(element, snapshot, cleanupRangeNode);
268
281
  } catch (rollbackError) {
269
- logger.warn("[Askr] retained element rollback failed:", rollbackError);
282
+ logger.warn("[Askr] retained element rollback failed:", new AggregateError([err, rollbackError], "Render failed and retained rollback reported errors"));
270
283
  }
271
284
  throw err;
272
285
  }
273
286
  }
274
287
  //#endregion
275
288
  export { restoreRetainedElement, runRetainedElementUpdate, snapshotRetainedElement };
276
-
277
- //# sourceMappingURL=retained-element-rollback.js.map
@@ -10,7 +10,8 @@ import "../runtime/index.js";
10
10
  import { tagNamesEqualIgnoreCase } from "./utils.js";
11
11
  import { getRendererDOMHost } from "./dom-host.js";
12
12
  import { findHostInstanceByType, inheritComponentCleanupStrict, inheritComponentKey, isRouteRootComponentVNode } from "./component-host-instances.js";
13
- import { resolveNestedComponentResult } from "./component-host.js";
13
+ import { resolveNestedComponentResult } from "./component-host-results.js";
14
+ import "./component-host.js";
14
15
  //#region src/renderer/stable-patch.ts
15
16
  function normalizeStableIntrinsicChildren(children) {
16
17
  if (children === null || children === void 0 || children === false) return [];
@@ -49,7 +50,7 @@ function resolveStableIntrinsicPatchVNode(dom, vnode) {
49
50
  if (typeof vnode.type === "string") return tagNamesEqualIgnoreCase(dom.tagName, vnode.type) ? vnode : null;
50
51
  if (typeof vnode.type !== "function") return null;
51
52
  const host = dom;
52
- const existingInstance = findHostInstanceByType(host, vnode.type);
53
+ const existingInstance = findHostInstanceByType(host, vnode.type, vnode, getCurrentInstance());
53
54
  if (!existingInstance || existingInstance.fn !== vnode.type || host.__ASKR_WRAPPER_HOST) return null;
54
55
  const snapshot = getVNodeContextFrame(vnode) || getCurrentContextFrame() || existingInstance.ownerFrame || null;
55
56
  captureInlineRenderSnapshot(existingInstance);
@@ -77,5 +78,3 @@ function tryPatchStableForDirtyItem(scope) {
77
78
  }
78
79
  //#endregion
79
80
  export { tryPatchStableForDirtyItem };
80
-
81
- //# sourceMappingURL=stable-patch.js.map
@@ -92,5 +92,3 @@ function canReuseStaticSubtree(el, vnode) {
92
92
  }
93
93
  //#endregion
94
94
  export { canReuseStaticSubtree, setStaticChildSlotsCacheEnabled, tagsEqualIgnoreCase };
95
-
96
- //# sourceMappingURL=static-reuse.js.map
@@ -15,6 +15,14 @@ const DIRECT_REPLACE_CHILDREN_SPREAD_LIMIT = 4096;
15
15
  function canUseDirectReplaceChildrenSpread(count) {
16
16
  return count <= DIRECT_REPLACE_CHILDREN_SPREAD_LIMIT;
17
17
  }
18
+ const CLICK_EVENT_PROP = {
19
+ eventName: "click",
20
+ capture: false
21
+ };
22
+ const CLICK_CAPTURE_EVENT_PROP = {
23
+ eventName: "click",
24
+ capture: true
25
+ };
18
26
  const handlerCache = /* @__PURE__ */ new WeakMap();
19
27
  let cacheSize = 0;
20
28
  const MAX_CACHE_SIZE = 1e3;
@@ -25,6 +33,8 @@ function parseEventName(propName) {
25
33
  return parseEventProp(propName)?.eventName ?? null;
26
34
  }
27
35
  function parseEventProp(propName) {
36
+ if (propName === "onClick") return CLICK_EVENT_PROP;
37
+ if (propName === "onClickCapture") return CLICK_CAPTURE_EVENT_PROP;
28
38
  if (!propName.startsWith("on") || propName.length <= 2) return null;
29
39
  const capture = propName.endsWith("Capture") && propName.length > 9;
30
40
  const normalizedPropName = capture ? propName.slice(0, -7) : propName;
@@ -207,15 +217,16 @@ function extractKey(vnode) {
207
217
  function buildKeyMapFromChildren(parent) {
208
218
  const map = /* @__PURE__ */ new Map();
209
219
  for (let ch = parent.firstElementChild; ch; ch = ch.nextElementSibling) {
210
- const k = ch.getAttribute("data-key");
211
- if (k !== null) {
212
- map.set(k, ch);
213
- const n = Number(k);
214
- if (!Number.isNaN(n)) map.set(n, ch);
215
- }
220
+ const key = getMaterializedKey(ch);
221
+ if (key !== void 0) map.set(key, ch);
216
222
  }
217
223
  return map;
218
224
  }
225
+ function getMaterializedKey(element) {
226
+ const value = element.getAttribute("data-key");
227
+ if (value === null) return void 0;
228
+ return element.getAttribute("data-askr-key-kind") === "number" ? Number(value) : value;
229
+ }
219
230
  /**
220
231
  * Record DOM replace operation for diagnostics
221
232
  */
@@ -251,6 +262,4 @@ function now() {
251
262
  return typeof performance !== "undefined" && performance.now ? performance.now() : Date.now();
252
263
  }
253
264
  //#endregion
254
- export { DIRECT_REPLACE_CHILDREN_SPREAD_LIMIT, buildKeyMapFromChildren, canUseDirectReplaceChildrenSpread, checkPropChanges, createMutableWrappedHandler, createWrappedHandler, extractKey, getEventListenerKey, getEventListenerOptions, getPassiveOptions, getRenderedAttributeName, hasNonTrivialProps, hasPropChanged, isIgnoredForPropChanges, isSVGDomElement, isSkippedProp, logFastPathDebug, now, parseEventName, parseEventProp, readElementClassName, recordDOMReplace, recordFastPathStats, removeRenderedAttribute, setRenderedAttribute, tagNamesEqualIgnoreCase, writeElementClassName };
255
-
256
- //# sourceMappingURL=utils.js.map
265
+ export { DIRECT_REPLACE_CHILDREN_SPREAD_LIMIT, buildKeyMapFromChildren, canUseDirectReplaceChildrenSpread, checkPropChanges, createMutableWrappedHandler, createWrappedHandler, extractKey, getEventListenerKey, getEventListenerOptions, getMaterializedKey, getPassiveOptions, getRenderedAttributeName, hasNonTrivialProps, hasPropChanged, isIgnoredForPropChanges, isSVGDomElement, isSkippedProp, logFastPathDebug, now, parseEventName, parseEventProp, readElementClassName, recordDOMReplace, recordFastPathStats, removeRenderedAttribute, setRenderedAttribute, tagNamesEqualIgnoreCase, writeElementClassName };
@@ -32,5 +32,3 @@ function compileNodePolicies(node) {
32
32
  }
33
33
  //#endregion
34
34
  export { compileNodePolicies, nextAccessScopeState, validateAccessMetadata };
35
-
36
- //# sourceMappingURL=access.js.map
@@ -6,5 +6,4 @@ declare function isRoutePathActive(pathOrPaths: string | readonly string[]): boo
6
6
  declare function currentRoute<TParams extends RouteParams = RouteParams>(): RouteSnapshot<TParams>;
7
7
  declare function syncCurrentRouteSnapshot(pathname: string, search: string, hash: string, activityMatches?: readonly RouteMatch[]): void;
8
8
  //#endregion
9
- export { currentRoute };
10
- //# sourceMappingURL=activity.d.ts.map
9
+ export { currentRoute };
@@ -83,5 +83,3 @@ function syncCurrentRouteSnapshot(pathname, search, hash, activityMatches) {
83
83
  }
84
84
  //#endregion
85
85
  export { currentRoute, setServerLocation, syncCurrentRouteSnapshot };
86
-
87
- //# sourceMappingURL=activity.js.map
@@ -18,5 +18,4 @@ declare function registerRoutes(definition: RouteDefinition, options?: RegisterR
18
18
  declare function route<const TPath extends string>(path: TPath, Component: RouteComponent<RoutePathParams<TPath>>, options?: RouteOptions<RoutePathParams<TPath>>): void;
19
19
  declare function route<const TPath extends string, TComponent extends AnyRouteComponent>(path: TPath, Component: CompatibleRouteComponent<TPath, TComponent>, options?: RouteOptionsForComponent<TPath, TComponent>): void;
20
20
  //#endregion
21
- export { fallback, group, index, page, registerRoutes, route };
22
- //# sourceMappingURL=authoring.d.ts.map
21
+ export { fallback, group, index, page, registerRoutes, route };
@@ -194,5 +194,3 @@ function route(path, Component, options) {
194
194
  }
195
195
  //#endregion
196
196
  export { fallback, group, index, page, registerRoutes, route };
197
-
198
- //# sourceMappingURL=authoring.js.map
@@ -27,5 +27,4 @@ type RegistrationSession = {
27
27
  authConfigured: boolean;
28
28
  };
29
29
  //#endregion
30
- export { AccessScopeState, AnyRouteComponent, InternalRoute, InternalRouteRecord, RegistrationScope, RegistrationSession };
31
- //# sourceMappingURL=internal-types.d.ts.map
30
+ export { AccessScopeState, AnyRouteComponent, InternalRoute, InternalRouteRecord, RegistrationScope, RegistrationSession };
@@ -15,5 +15,4 @@ declare function associateRouteSourceLazy(registry: RouteRegistry, manifest: Rou
15
15
  declare function clearPendingLazy(): void;
16
16
  declare function restorePendingLazy(lazyImports: readonly Promise<unknown>[]): void;
17
17
  //#endregion
18
- export { lazy };
19
- //# sourceMappingURL=lazy.d.ts.map
18
+ export { lazy };
@@ -48,5 +48,3 @@ function restorePendingLazy(lazyImports) {
48
48
  }
49
49
  //#endregion
50
50
  export { _drainLazy, _snapshotLazy, _snapshotRouteSourceLazy, associateRouteSourceLazy, clearPendingLazy, lazy, restorePendingLazy };
51
-
52
- //# sourceMappingURL=lazy.js.map
@@ -6,5 +6,4 @@ declare function _applyManifest(manifest: RouteManifest): void;
6
6
  declare function clearRoutes(): void;
7
7
  declare function createRouteRegistry(definition: RouteDefinition, options?: RegisterRoutesOptions): RouteRegistry;
8
8
  //#endregion
9
- export { clearRoutes, createRouteRegistry, getManifest };
10
- //# sourceMappingURL=manifest.d.ts.map
9
+ export { clearRoutes, createRouteRegistry, getManifest };
@@ -45,5 +45,3 @@ function createRouteRegistry(definition, options = {}) {
45
45
  }
46
46
  //#endregion
47
47
  export { _applyManifest, clearRoutes, createRouteRegistry, getManifest };
48
-
49
- //# sourceMappingURL=manifest.js.map
@@ -118,5 +118,3 @@ function matchSegments(urlParts, segments) {
118
118
  }
119
119
  //#endregion
120
120
  export { computeRank, matchSegments, normalizeRouteSegmentName, parseSegments, splitPathSegments };
121
-
122
- //# sourceMappingURL=match.js.map
@@ -7,5 +7,4 @@ declare function navigate(path: string, options?: NavigateOptions): void;
7
7
  declare function initializeNavigation(): void;
8
8
  declare function cleanupNavigation(): void;
9
9
  //#endregion
10
- export { type HistoryScrollBehavior, type NavigateOptions, type NavigationScrollBehavior, type RouteQueryParamInput, type RouteQueryParamValue, type RouteQueryUpdater, type RouteQueryUpdates, type ScrollRestorationOptions, type UpdateRouteQueryOptions, navigate, updateRouteQuery };
11
- //# sourceMappingURL=navigate.d.ts.map
10
+ export { type HistoryScrollBehavior, type NavigateOptions, type NavigationScrollBehavior, type RouteQueryParamInput, type RouteQueryParamValue, type RouteQueryUpdater, type RouteQueryUpdates, type ScrollRestorationOptions, type UpdateRouteQueryOptions, navigate, updateRouteQuery };
@@ -1,7 +1,7 @@
1
1
  import { logger } from "../common/logger.js";
2
2
  import { isPromiseLike } from "../common/promise.js";
3
- import { configureScrollRestoration, saveScrollPosition } from "./navigation-scroll.js";
4
3
  import { configureNavigationRegistryHost, getCurrentHref, hasRegisteredApps, parseTargetUrl, registerAppInstance, unregisterAppInstance } from "./navigation-registry.js";
4
+ import { configureScrollRestoration } from "./navigation-scroll.js";
5
5
  import { applyNavigationTargets, applyPopStateNavigationTargets, beginRouteRequest, cancelRouteRequests, isStaleRouteRequest, resolveNavigationTargetsForApps } from "./navigation-targets.js";
6
6
  import { updateRouteQuery } from "./route-query.js";
7
7
  //#region src/router/navigate.ts
@@ -29,7 +29,7 @@ function navigateWithRedirectState(path, options, redirectState) {
29
29
  Promise.resolve(resolvedTargets).then((targets) => {
30
30
  if (isStaleRouteRequest(request.id)) return;
31
31
  try {
32
- applyNavigationTargets(path, options, redirectState, pathname, href, targets, navigateWithRedirectState);
32
+ applyNavigationTargets(request.id, path, options, redirectState, pathname, href, targets, navigateWithRedirectState);
33
33
  } catch (error) {
34
34
  logger.error("[Askr] navigation failed:", error);
35
35
  }
@@ -38,18 +38,17 @@ function navigateWithRedirectState(path, options, redirectState) {
38
38
  });
39
39
  return;
40
40
  }
41
- applyNavigationTargets(path, options, redirectState, pathname, href, resolvedTargets, navigateWithRedirectState);
41
+ applyNavigationTargets(request.id, path, options, redirectState, pathname, href, resolvedTargets, navigateWithRedirectState);
42
42
  }
43
43
  function handlePopState(event) {
44
44
  const request = beginRouteRequest();
45
45
  const previousHref = getCurrentHref();
46
46
  const pathname = window.location.pathname;
47
47
  const href = `${window.location.pathname}${window.location.search}${window.location.hash}`;
48
- saveScrollPosition(previousHref);
49
48
  if (!hasRegisteredApps()) return;
50
49
  const applyResolved = (targets) => {
51
50
  try {
52
- applyPopStateNavigationTargets(request.id, pathname, href, event.state, targets, navigate);
51
+ applyPopStateNavigationTargets(request.id, previousHref, { path: previousHref }, pathname, href, event.state, targets, navigate);
53
52
  } catch (error) {
54
53
  logger.error("[Askr] popstate navigation failed:", error);
55
54
  }
@@ -72,5 +71,3 @@ function initializeNavigation() {
72
71
  }
73
72
  //#endregion
74
73
  export { configureScrollRestoration, initializeNavigation, navigate, registerAppInstance, unregisterAppInstance, updateRouteQuery };
75
-
76
- //# sourceMappingURL=navigate.js.map
@@ -28,5 +28,4 @@ declare function syncRegisteredRouteSnapshot(): void;
28
28
  declare function registerAppInstance(instance: ComponentInstance, path: string, source?: AppNavigationSource): void;
29
29
  declare function unregisterAppInstance(instance: ComponentInstance): void;
30
30
  //#endregion
31
- export { AppNavigationSource, AppRegistration };
32
- //# sourceMappingURL=navigation-registry.d.ts.map
31
+ export { AppNavigationSource, AppRegistration };