@askrjs/askr 0.0.52 → 0.0.54

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 (386) hide show
  1. package/README.md +5 -1
  2. package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +182 -9
  3. package/dist/actions/index.d.ts +2 -0
  4. package/dist/actions/index.js +103 -0
  5. package/dist/{common/attr-names.js → attr-names-CjhzmHOn.js} +1 -1
  6. package/dist/benchmark.d.ts +6 -2
  7. package/dist/benchmark.js +63 -11
  8. package/dist/boot/index.d.ts +61 -2
  9. package/dist/boot/index.js +1 -203
  10. package/dist/boot-2ZR3MtO0.js +647 -0
  11. package/dist/cleanup-DScKZG2i.js +487 -0
  12. package/dist/component-internal-D9PLuFUc.js +614 -0
  13. package/dist/component-lifecycle-C7lnU9Bt.js +359 -0
  14. package/dist/{runtime/component-scope.js → component-scope-CC3cojX9.js} +8 -1
  15. package/dist/component-scope-CvPba6O6.d.ts +12 -0
  16. package/dist/components/index.d.ts +17 -2
  17. package/dist/components/index.js +39 -1
  18. package/dist/compose-ref-Cc_YkUpM.js +92 -0
  19. package/dist/{foundations/utilities/compose-ref.d.ts → compose-ref-Cizq72-x.d.ts} +1 -1
  20. package/dist/control/index.d.ts +1 -3
  21. package/dist/control/index.js +1 -3
  22. package/dist/control-BI4RMD2z.d.ts +437 -0
  23. package/dist/control-Bf4Wkdvv.d.ts +9 -0
  24. package/dist/{common/control.js → control-DhFRTIoE.js} +1 -1
  25. package/dist/control-mXROCjL3.js +165 -0
  26. package/dist/data/index.d.ts +2 -6
  27. package/dist/data/index.js +4 -5
  28. package/dist/data-B9dauyDn.js +559 -0
  29. package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +32 -31
  30. package/dist/deferred-DklLG4qM.js +386 -0
  31. package/dist/{runtime/effect.js → effect-BwnIvLah.js} +4 -4
  32. package/dist/fastlane-Dw8SOBr9.js +343 -0
  33. package/dist/for-internal-CSz8Unkq.js +1563 -0
  34. package/dist/foundations/icon/index.d.ts +68 -2
  35. package/dist/foundations/icon/index.js +85 -1
  36. package/dist/foundations/index.d.ts +2 -5
  37. package/dist/foundations/index.js +2 -5
  38. package/dist/foundations/interactions/index.d.ts +264 -6
  39. package/dist/foundations/interactions/index.js +1 -6
  40. package/dist/foundations/state/index.d.ts +32 -1
  41. package/dist/foundations/state/index.js +78 -1
  42. package/dist/foundations/structures/index.d.ts +2 -7
  43. package/dist/foundations/structures/index.js +2 -7
  44. package/dist/foundations/utilities/index.d.ts +2 -6
  45. package/dist/foundations/utilities/index.js +2 -5
  46. package/dist/fx/index.d.ts +190 -3
  47. package/dist/fx/index.js +454 -4
  48. package/dist/index-B1LNotpU.d.ts +239 -0
  49. package/dist/index-Bki2rqcr.d.ts +233 -0
  50. package/dist/index-BnU0NPwM.d.ts +101 -0
  51. package/dist/index-C8iW3xCt.d.ts +44 -0
  52. package/dist/index-DwxdIA-t.d.ts +48 -0
  53. package/dist/{runtime/runtime.d.ts → index-Zb31mCiU.d.ts} +31 -8
  54. package/dist/index.d.ts +8 -13
  55. package/dist/index.js +150 -15
  56. package/dist/interactions-w7gQN4ha.js +280 -0
  57. package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -1
  58. package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -5
  59. package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -1
  60. package/dist/jsx-dev-runtime.d.ts +2 -4
  61. package/dist/jsx-dev-runtime.js +7 -5
  62. package/dist/jsx-runtime-92bV2hSa.d.ts +34 -0
  63. package/dist/jsx-runtime-BVVgDSdq.d.ts +1 -0
  64. package/dist/jsx-runtime.d.ts +2 -35
  65. package/dist/jsx-runtime.js +11 -5
  66. package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-CdRjdsHo.js} +4 -5
  67. package/dist/navigate-BVDCzOuB.d.ts +34 -0
  68. package/dist/navigate-D17eVQyI.js +1449 -0
  69. package/dist/{runtime/portal.js → portal-C47xkwXj.js} +71 -41
  70. package/dist/query-registry-CQIT4mXr.js +73 -0
  71. package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -6
  72. package/dist/renderer-DrLRAD5y.js +6266 -0
  73. package/dist/{runtime/resource-operation.js → resource-operation-BNY29MVH.js} +118 -15
  74. package/dist/resources/index.d.ts +42 -3
  75. package/dist/resources/index.js +3 -4
  76. package/dist/{common/route-activity.js → route-activity-CNJfpwx-.js} +1 -1
  77. package/dist/route-matching-vJpvLVbX.js +515 -0
  78. package/dist/router/index.d.ts +166 -14
  79. package/dist/router/index.js +150 -12
  80. package/dist/{common/router.d.ts → router-DCfwLBr-.d.ts} +72 -28
  81. package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -1
  82. package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -3
  83. package/dist/{runtime/selector.js → selector-DafVYzV4.js} +34 -11
  84. package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -1
  85. package/dist/ssg/index.d.ts +252 -4
  86. package/dist/ssg/index.js +857 -1
  87. package/dist/ssr/index.d.ts +225 -8
  88. package/dist/ssr/index.js +3 -6
  89. package/dist/{common/ssr.js → ssr-CbQO5xd3.js} +1 -1
  90. package/dist/ssr-DEARZxJ5.js +1413 -0
  91. package/dist/{runtime/state.js → state-DPl8lffD.js} +3 -5
  92. package/dist/structures-DUB3HchX.js +221 -0
  93. package/dist/testing/index.d.ts +3 -2
  94. package/dist/testing/index.js +2 -5
  95. package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -5
  96. package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -1
  97. package/dist/{ssr/verify-hydration.js → verify-hydration-BWwu-mWu.js} +2 -2
  98. package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -2
  99. package/package.json +12 -7
  100. package/dist/bench/components/benchmark-row.d.ts +0 -20
  101. package/dist/bench/components/benchmark-row.js +0 -40
  102. package/dist/bench/components/benchmark-table.js +0 -23
  103. package/dist/bin/askr-ssg.d.ts +0 -27
  104. package/dist/bin/askr-ssg.js +0 -186
  105. package/dist/boot/hydration.js +0 -139
  106. package/dist/boot/root-lifecycle.d.ts +0 -18
  107. package/dist/boot/root-lifecycle.js +0 -209
  108. package/dist/boot/route-startup.js +0 -54
  109. package/dist/boot/types.d.ts +0 -61
  110. package/dist/common/component.d.ts +0 -18
  111. package/dist/common/control.d.ts +0 -12
  112. package/dist/common/dom-range.d.ts +0 -13
  113. package/dist/common/env.js +0 -41
  114. package/dist/common/error-boundary.d.ts +0 -15
  115. package/dist/common/invariant.js +0 -15
  116. package/dist/common/jsx.d.ts +0 -22
  117. package/dist/common/logger.js +0 -34
  118. package/dist/common/promise.js +0 -6
  119. package/dist/common/ssr-errors.d.ts +0 -10
  120. package/dist/common/ssr-errors.js +0 -14
  121. package/dist/common/ssr.d.ts +0 -41
  122. package/dist/common/vnode.d.ts +0 -21
  123. package/dist/components/error-boundary.d.ts +0 -14
  124. package/dist/components/error-boundary.js +0 -41
  125. package/dist/components/link.d.ts +0 -68
  126. package/dist/components/link.js +0 -74
  127. package/dist/control/case.d.ts +0 -18
  128. package/dist/control/case.js +0 -68
  129. package/dist/control/for.d.ts +0 -23
  130. package/dist/control/for.js +0 -61
  131. package/dist/control/shared.d.ts +0 -8
  132. package/dist/control/shared.js +0 -18
  133. package/dist/control/show.d.ts +0 -14
  134. package/dist/control/show.js +0 -32
  135. package/dist/data/data-runtime.d.ts +0 -27
  136. package/dist/data/invalidation.d.ts +0 -8
  137. package/dist/data/invalidation.js +0 -25
  138. package/dist/data/mutation-cell.d.ts +0 -27
  139. package/dist/data/mutation-cell.js +0 -133
  140. package/dist/data/query-cell.d.ts +0 -47
  141. package/dist/data/query-cell.js +0 -324
  142. package/dist/data/query-key.js +0 -40
  143. package/dist/data/shared.js +0 -20
  144. package/dist/data/testing.js +0 -2
  145. package/dist/data/types.d.ts +0 -160
  146. package/dist/foundations/icon/icon.d.ts +0 -52
  147. package/dist/foundations/icon/icon.js +0 -86
  148. package/dist/foundations/icon/icon.types.d.ts +0 -21
  149. package/dist/foundations/interactions/dismissable.d.ts +0 -71
  150. package/dist/foundations/interactions/dismissable.js +0 -24
  151. package/dist/foundations/interactions/focusable.d.ts +0 -21
  152. package/dist/foundations/interactions/focusable.js +0 -16
  153. package/dist/foundations/interactions/hoverable.d.ts +0 -25
  154. package/dist/foundations/interactions/hoverable.js +0 -13
  155. package/dist/foundations/interactions/interaction-policy.d.ts +0 -49
  156. package/dist/foundations/interactions/interaction-policy.js +0 -120
  157. package/dist/foundations/interactions/pressable.d.ts +0 -60
  158. package/dist/foundations/interactions/pressable.js +0 -49
  159. package/dist/foundations/interactions/roving-focus.d.ts +0 -51
  160. package/dist/foundations/interactions/roving-focus.js +0 -69
  161. package/dist/foundations/state/controllable.d.ts +0 -32
  162. package/dist/foundations/state/controllable.js +0 -80
  163. package/dist/foundations/structures/collection.d.ts +0 -51
  164. package/dist/foundations/structures/collection.js +0 -49
  165. package/dist/foundations/structures/layer.d.ts +0 -80
  166. package/dist/foundations/structures/layer.js +0 -79
  167. package/dist/foundations/structures/layout.d.ts +0 -32
  168. package/dist/foundations/structures/layout.js +0 -11
  169. package/dist/foundations/structures/portal.d.ts +0 -2
  170. package/dist/foundations/structures/portal.js +0 -3
  171. package/dist/foundations/structures/presence.d.ts +0 -36
  172. package/dist/foundations/structures/presence.js +0 -37
  173. package/dist/foundations/structures/slot.d.ts +0 -34
  174. package/dist/foundations/structures/slot.js +0 -39
  175. package/dist/foundations/utilities/aria.d.ts +0 -15
  176. package/dist/foundations/utilities/aria.js +0 -15
  177. package/dist/foundations/utilities/compose-handlers.d.ts +0 -36
  178. package/dist/foundations/utilities/compose-handlers.js +0 -18
  179. package/dist/foundations/utilities/compose-ref.js +0 -16
  180. package/dist/foundations/utilities/event-types.d.ts +0 -19
  181. package/dist/foundations/utilities/merge-props.d.ts +0 -4
  182. package/dist/foundations/utilities/merge-props.js +0 -47
  183. package/dist/foundations/utilities/use-id.d.ts +0 -31
  184. package/dist/fx/fx.d.ts +0 -32
  185. package/dist/fx/fx.js +0 -211
  186. package/dist/fx/noop.js +0 -7
  187. package/dist/fx/timing.d.ts +0 -158
  188. package/dist/fx/timing.js +0 -241
  189. package/dist/jsx/index.d.ts +0 -2
  190. package/dist/jsx/index.js +0 -4
  191. package/dist/jsx/types.js +0 -2
  192. package/dist/jsx/utils.d.ts +0 -4
  193. package/dist/jsx/utils.js +0 -17
  194. package/dist/jsx-runtime2.d.ts +0 -3
  195. package/dist/jsx-runtime2.js +0 -4
  196. package/dist/renderer/attributes.js +0 -254
  197. package/dist/renderer/boundaries.js +0 -142
  198. package/dist/renderer/boundary-materialization.js +0 -72
  199. package/dist/renderer/boundary-range-adoption.js +0 -76
  200. package/dist/renderer/boundary-range-sync.js +0 -101
  201. package/dist/renderer/boundary-state.js +0 -50
  202. package/dist/renderer/child-shape.js +0 -83
  203. package/dist/renderer/children-fastpath.js +0 -149
  204. package/dist/renderer/children.js +0 -158
  205. package/dist/renderer/cleanup.js +0 -267
  206. package/dist/renderer/component-host-cleanup.js +0 -143
  207. package/dist/renderer/component-host-instances.js +0 -116
  208. package/dist/renderer/component-host-replacement.js +0 -105
  209. package/dist/renderer/component-host-results.js +0 -138
  210. package/dist/renderer/component-host.js +0 -172
  211. package/dist/renderer/dom-host.js +0 -11
  212. package/dist/renderer/dom-internal.js +0 -243
  213. package/dist/renderer/dom-range.js +0 -161
  214. package/dist/renderer/dom.js +0 -11
  215. package/dist/renderer/element-children.js +0 -359
  216. package/dist/renderer/env.js +0 -2
  217. package/dist/renderer/error-boundary-dom.js +0 -86
  218. package/dist/renderer/evaluate-dom-range.js +0 -84
  219. package/dist/renderer/evaluate-reconcile.js +0 -257
  220. package/dist/renderer/evaluate.js +0 -95
  221. package/dist/renderer/fastpath.js +0 -142
  222. package/dist/renderer/for-commit-dom-map.js +0 -71
  223. package/dist/renderer/for-commit-removal.js +0 -27
  224. package/dist/renderer/for-commit-reorder.js +0 -87
  225. package/dist/renderer/for-commit.js +0 -442
  226. package/dist/renderer/hydration-boundaries.js +0 -60
  227. package/dist/renderer/hydration-listener-transaction.js +0 -49
  228. package/dist/renderer/index.js +0 -39
  229. package/dist/renderer/intrinsic-blueprint-analysis.js +0 -202
  230. package/dist/renderer/intrinsic-blueprint-bindings.js +0 -152
  231. package/dist/renderer/intrinsic-blueprint-materialization.js +0 -100
  232. package/dist/renderer/intrinsic-blueprint.js +0 -30
  233. package/dist/renderer/intrinsic-hydration-adoption.js +0 -66
  234. package/dist/renderer/keyed-children.js +0 -26
  235. package/dist/renderer/keyed.js +0 -167
  236. package/dist/renderer/namespaces.js +0 -21
  237. package/dist/renderer/prop-bindings.js +0 -315
  238. package/dist/renderer/reactive-child-dom.js +0 -139
  239. package/dist/renderer/reactive-child-sources.js +0 -182
  240. package/dist/renderer/reactive-children.js +0 -303
  241. package/dist/renderer/reconcile-commit.js +0 -36
  242. package/dist/renderer/reconcile-fastpaths.js +0 -100
  243. package/dist/renderer/reconcile-resolution.js +0 -163
  244. package/dist/renderer/reconcile.js +0 -37
  245. package/dist/renderer/retained-element-rollback.js +0 -288
  246. package/dist/renderer/stable-patch.js +0 -80
  247. package/dist/renderer/static-reuse.js +0 -94
  248. package/dist/renderer/types.js +0 -2
  249. package/dist/renderer/utils.js +0 -265
  250. package/dist/router/access.js +0 -34
  251. package/dist/router/activity.d.ts +0 -9
  252. package/dist/router/activity.js +0 -85
  253. package/dist/router/authoring.d.ts +0 -21
  254. package/dist/router/authoring.js +0 -196
  255. package/dist/router/internal-types.d.ts +0 -30
  256. package/dist/router/lazy.d.ts +0 -18
  257. package/dist/router/lazy.js +0 -50
  258. package/dist/router/manifest.d.ts +0 -9
  259. package/dist/router/manifest.js +0 -47
  260. package/dist/router/match.js +0 -120
  261. package/dist/router/navigate.d.ts +0 -10
  262. package/dist/router/navigate.js +0 -73
  263. package/dist/router/navigation-registry.d.ts +0 -31
  264. package/dist/router/navigation-registry.js +0 -103
  265. package/dist/router/navigation-scroll.d.ts +0 -13
  266. package/dist/router/navigation-scroll.js +0 -91
  267. package/dist/router/navigation-targets.d.ts +0 -30
  268. package/dist/router/navigation-targets.js +0 -634
  269. package/dist/router/policy.d.ts +0 -27
  270. package/dist/router/policy.js +0 -130
  271. package/dist/router/rendering.d.ts +0 -9
  272. package/dist/router/rendering.js +0 -47
  273. package/dist/router/resolution.d.ts +0 -3
  274. package/dist/router/resolution.js +0 -84
  275. package/dist/router/route-context.js +0 -77
  276. package/dist/router/route-matching.d.ts +0 -19
  277. package/dist/router/route-matching.js +0 -173
  278. package/dist/router/route-query.d.ts +0 -16
  279. package/dist/router/route-query.js +0 -45
  280. package/dist/router/route.d.ts +0 -8
  281. package/dist/router/route.js +0 -10
  282. package/dist/router/store.d.ts +0 -49
  283. package/dist/router/store.js +0 -169
  284. package/dist/router/testing.js +0 -4
  285. package/dist/runtime/access.d.ts +0 -19
  286. package/dist/runtime/access.js +0 -43
  287. package/dist/runtime/child-scope.d.ts +0 -41
  288. package/dist/runtime/child-scope.js +0 -134
  289. package/dist/runtime/component-cleanup.d.ts +0 -15
  290. package/dist/runtime/component-cleanup.js +0 -68
  291. package/dist/runtime/component-commit.js +0 -167
  292. package/dist/runtime/component-facade.d.ts +0 -5
  293. package/dist/runtime/component-facade.js +0 -6
  294. package/dist/runtime/component-internal.d.ts +0 -105
  295. package/dist/runtime/component-internal.js +0 -237
  296. package/dist/runtime/component-lifecycle.d.ts +0 -10
  297. package/dist/runtime/component-lifecycle.js +0 -33
  298. package/dist/runtime/component-scope.d.ts +0 -54
  299. package/dist/runtime/component.d.ts +0 -5
  300. package/dist/runtime/component.js +0 -6
  301. package/dist/runtime/context.d.ts +0 -72
  302. package/dist/runtime/context.js +0 -236
  303. package/dist/runtime/control.d.ts +0 -62
  304. package/dist/runtime/control.js +0 -239
  305. package/dist/runtime/derive.d.ts +0 -16
  306. package/dist/runtime/derive.js +0 -140
  307. package/dist/runtime/dev-namespace.d.ts +0 -30
  308. package/dist/runtime/dev-namespace.js +0 -64
  309. package/dist/runtime/effect.d.ts +0 -35
  310. package/dist/runtime/error-boundary.d.ts +0 -4
  311. package/dist/runtime/error-boundary.js +0 -29
  312. package/dist/runtime/events.d.ts +0 -58
  313. package/dist/runtime/events.js +0 -201
  314. package/dist/runtime/execution-model.d.ts +0 -6
  315. package/dist/runtime/execution-model.js +0 -13
  316. package/dist/runtime/fastlane.d.ts +0 -33
  317. package/dist/runtime/fastlane.js +0 -173
  318. package/dist/runtime/for-bench.d.ts +0 -40
  319. package/dist/runtime/for-bench.js +0 -13
  320. package/dist/runtime/for-internal.d.ts +0 -106
  321. package/dist/runtime/for-internal.js +0 -285
  322. package/dist/runtime/for-reconcile.d.ts +0 -7
  323. package/dist/runtime/for-reconcile.js +0 -442
  324. package/dist/runtime/for-scopes.d.ts +0 -26
  325. package/dist/runtime/for-scopes.js +0 -280
  326. package/dist/runtime/for-signals.d.ts +0 -39
  327. package/dist/runtime/for-signals.js +0 -213
  328. package/dist/runtime/for-types.d.ts +0 -8
  329. package/dist/runtime/for.d.ts +0 -4
  330. package/dist/runtime/for.js +0 -5
  331. package/dist/runtime/index.d.ts +0 -24
  332. package/dist/runtime/index.js +0 -33
  333. package/dist/runtime/lifecycle-batch.d.ts +0 -59
  334. package/dist/runtime/lifecycle-batch.js +0 -178
  335. package/dist/runtime/lifecycle-operation-settlement.d.ts +0 -5
  336. package/dist/runtime/lifecycle-operation-settlement.js +0 -51
  337. package/dist/runtime/lifecycle-operations.d.ts +0 -30
  338. package/dist/runtime/operations.d.ts +0 -3
  339. package/dist/runtime/operations.js +0 -3
  340. package/dist/runtime/perf-metrics.d.ts +0 -27
  341. package/dist/runtime/perf-metrics.js +0 -6
  342. package/dist/runtime/portal.d.ts +0 -21
  343. package/dist/runtime/readable.d.ts +0 -34
  344. package/dist/runtime/readable.js +0 -183
  345. package/dist/runtime/resource-cell.js +0 -112
  346. package/dist/runtime/resource-operation.d.ts +0 -12
  347. package/dist/runtime/runtime.js +0 -57
  348. package/dist/runtime/selector-store.js +0 -22
  349. package/dist/runtime/selector.d.ts +0 -10
  350. package/dist/runtime/snapshot-source.d.ts +0 -9
  351. package/dist/runtime/state.d.ts +0 -54
  352. package/dist/ssg/batch-render.js +0 -101
  353. package/dist/ssg/create-static-gen.d.ts +0 -66
  354. package/dist/ssg/create-static-gen.js +0 -250
  355. package/dist/ssg/generate-metadata.js +0 -92
  356. package/dist/ssg/generation-plan.js +0 -68
  357. package/dist/ssg/incremental-manifest.js +0 -54
  358. package/dist/ssg/resolve-ssg-data.js +0 -103
  359. package/dist/ssg/route-utils.js +0 -22
  360. package/dist/ssg/static-routes.js +0 -100
  361. package/dist/ssg/types.d.ts +0 -188
  362. package/dist/ssg/write-static-files.js +0 -77
  363. package/dist/ssr/attrs.js +0 -92
  364. package/dist/ssr/boundaries.js +0 -124
  365. package/dist/ssr/component-runtime.js +0 -85
  366. package/dist/ssr/context.d.ts +0 -49
  367. package/dist/ssr/context.js +0 -89
  368. package/dist/ssr/errors.d.ts +0 -9
  369. package/dist/ssr/errors.js +0 -12
  370. package/dist/ssr/escape.js +0 -191
  371. package/dist/ssr/hydration-data.js +0 -8
  372. package/dist/ssr/hydration-verify.d.ts +0 -11
  373. package/dist/ssr/hydration-verify.js +0 -171
  374. package/dist/ssr/index-internal.d.ts +0 -14
  375. package/dist/ssr/index-internal.js +0 -17
  376. package/dist/ssr/render-keys.js +0 -14
  377. package/dist/ssr/render-resolved.d.ts +0 -19
  378. package/dist/ssr/render-resolved.js +0 -33
  379. package/dist/ssr/render-sync.d.ts +0 -20
  380. package/dist/ssr/render-sync.js +0 -283
  381. package/dist/ssr/route-policy-resolution.js +0 -76
  382. package/dist/ssr/route-render.d.ts +0 -76
  383. package/dist/ssr/route-render.js +0 -118
  384. package/dist/ssr/sink.d.ts +0 -25
  385. package/dist/ssr/sink.js +0 -84
  386. package/dist/ssr/types.d.ts +0 -22
@@ -1,87 +0,0 @@
1
- import { recordBenchCounter, recordBenchEvent } from "../runtime/for-bench.js";
2
- import "../runtime/index.js";
3
- import { canUseDirectReplaceChildrenSpread } from "./utils.js";
4
- //#region src/renderer/for-commit-reorder.ts
5
- const DENSE_MOVE_MINIMUM = 64;
6
- const DENSE_MOVE_RATIO = .75;
7
- function replaceChildrenInOrder(parent, nodes, allowDirectSpread) {
8
- if (allowDirectSpread && canUseDirectReplaceChildrenSpread(nodes.length)) {
9
- parent.replaceChildren(...nodes);
10
- return;
11
- }
12
- const fragment = parent.ownerDocument.createDocumentFragment();
13
- for (let i = 0; i < nodes.length; i++) fragment.appendChild(nodes[i]);
14
- parent.replaceChildren(fragment);
15
- }
16
- function getLISIndices(sequence) {
17
- if (sequence.length === 0) return [];
18
- const predecessors = sequence.slice();
19
- const lisIndices = [0];
20
- for (let i = 1; i < sequence.length; i += 1) {
21
- const current = sequence[i];
22
- const lastLisIndex = lisIndices[lisIndices.length - 1];
23
- if (sequence[lastLisIndex] < current) {
24
- predecessors[i] = lastLisIndex;
25
- lisIndices.push(i);
26
- continue;
27
- }
28
- let lo = 0;
29
- let hi = lisIndices.length - 1;
30
- while (lo < hi) {
31
- const mid = lo + hi >> 1;
32
- if (sequence[lisIndices[mid]] < current) lo = mid + 1;
33
- else hi = mid;
34
- }
35
- if (current < sequence[lisIndices[lo]]) {
36
- if (lo > 0) predecessors[i] = lisIndices[lo - 1];
37
- lisIndices[lo] = i;
38
- }
39
- }
40
- let cursor = lisIndices.length - 1;
41
- let index = lisIndices[cursor];
42
- while (cursor >= 0) {
43
- lisIndices[cursor] = index;
44
- index = predecessors[index];
45
- cursor -= 1;
46
- }
47
- return lisIndices;
48
- }
49
- function commitMoveOnlyReorder(parent, nodes) {
50
- const currentNodes = Array.from(parent.childNodes);
51
- if (currentNodes.length !== nodes.length) return false;
52
- const currentIndexByNode = /* @__PURE__ */ new Map();
53
- for (let i = 0; i < currentNodes.length; i += 1) currentIndexByNode.set(currentNodes[i], i);
54
- const positions = Array.from({ length: nodes.length }, () => 0);
55
- for (let i = 0; i < nodes.length; i += 1) {
56
- const position = currentIndexByNode.get(nodes[i]);
57
- if (position === void 0) return false;
58
- positions[i] = position;
59
- }
60
- const lisIndices = getLISIndices(positions);
61
- if (lisIndices.length === nodes.length) return true;
62
- const moveCount = nodes.length - lisIndices.length;
63
- if (moveCount >= Math.max(DENSE_MOVE_MINIMUM, Math.floor(nodes.length * DENSE_MOVE_RATIO))) {
64
- recordBenchEvent("domMove", moveCount);
65
- recordBenchCounter("replaceChildrenCommits");
66
- replaceChildrenInOrder(parent, nodes, false);
67
- return true;
68
- }
69
- let lisCursor = lisIndices.length - 1;
70
- let anchor = null;
71
- for (let i = nodes.length - 1; i >= 0; i -= 1) {
72
- const node = nodes[i];
73
- if (lisCursor >= 0 && i === lisIndices[lisCursor]) {
74
- anchor = node;
75
- lisCursor -= 1;
76
- continue;
77
- }
78
- if (node.nextSibling !== anchor) {
79
- recordBenchEvent("domMove");
80
- parent.insertBefore(node, anchor);
81
- }
82
- anchor = node;
83
- }
84
- return true;
85
- }
86
- //#endregion
87
- export { commitMoveOnlyReorder, replaceChildrenInOrder };
@@ -1,442 +0,0 @@
1
- import { beginLifecycleCommitBatch, discardLifecycleCommitBatch, flushLifecycleCommitBatch } from "../runtime/lifecycle-batch.js";
2
- import { recordBenchEvent } from "../runtime/for-bench.js";
3
- import { captureForFallbackTransactionSnapshot, captureForItemTransactionSnapshot } from "../runtime/for-scopes.js";
4
- import { beginForStateTransaction, clearForDomUpdateState, registerForStateTransaction, rollbackForStateTransaction } from "../runtime/for-internal.js";
5
- import "../runtime/index.js";
6
- import { teardownNodeSubtree } from "./cleanup.js";
7
- import { canUseDirectReplaceChildrenSpread } from "./utils.js";
8
- import { keyedElements } from "./keyed.js";
9
- import { getOrBuildDomKeyMap, hydrateExistingForDomInOrder, syncKeyedMapFromForState } from "./for-commit-dom-map.js";
10
- import { commitMoveOnlyReorder, replaceChildrenInOrder } from "./for-commit-reorder.js";
11
- import { removeForBoundaryNodes } from "./for-commit-removal.js";
12
- import { getRangeNodes, moveRange } from "./dom-range.js";
13
- import { isFragment } from "./evaluate-reconcile.js";
14
- function isExactRemovedBoundary(parent, removedNodes) {
15
- if (removedNodes.length === 0 || removedNodes.length !== parent.childNodes.length) return false;
16
- for (let index = 0; index < removedNodes.length; index++) if (removedNodes[index] !== parent.childNodes[index]) return false;
17
- return true;
18
- }
19
- function isMultiNodeVNode(vnode) {
20
- if (vnode === null || vnode === void 0 || vnode === false) return true;
21
- return Array.isArray(vnode) || typeof vnode === "object" && vnode !== null && isFragment(vnode);
22
- }
23
- function getScopeRange(scope, node) {
24
- if (scope.range) return scope.range;
25
- if (!node) return null;
26
- return {
27
- start: node,
28
- end: node,
29
- single: true
30
- };
31
- }
32
- function detachRange(range) {
33
- const parent = range.start.parentNode;
34
- if (!parent) return;
35
- const fragment = parent.ownerDocument?.createDocumentFragment();
36
- if (fragment) moveRange(fragment, range);
37
- }
38
- function detachRemovedForNodes(parent, forState) {
39
- for (const range of forState.lastRemovedRanges) detachRange(range);
40
- for (const node of forState.lastRemovedNodes) if (node.parentNode === parent) node.parentNode.removeChild(node);
41
- }
42
- function commitForStateBoundaryRanges(parent, forState, childrenVNodes, runtime) {
43
- const desiredRanges = [];
44
- if (forState.orderedKeys.length === 0) {
45
- const fallbackScope = forState.fallbackScope;
46
- const fallbackVNode = childrenVNodes[0];
47
- if (fallbackScope && fallbackVNode !== void 0) {
48
- const range = getScopeRange(fallbackScope, !fallbackScope.needsDomUpdate ? null : runtime.syncForItemDom(parent, fallbackScope, fallbackVNode));
49
- if (range) desiredRanges.push(range);
50
- }
51
- } else for (let index = 0; index < forState.orderedItems.length; index += 1) {
52
- const item = forState.orderedItems[index];
53
- if (!item) continue;
54
- captureItemBeforeRangeCommit(forState, item);
55
- const node = !item.scope.needsDomUpdate ? null : runtime.syncForItemDom(parent, item.scope, childrenVNodes[index]);
56
- const range = getScopeRange(item.scope, node);
57
- if (range) desiredRanges.push(range);
58
- }
59
- const desiredNodes = /* @__PURE__ */ new Set();
60
- for (const range of desiredRanges) {
61
- desiredNodes.add(range.start);
62
- for (const node of getRangeNodes(range)) desiredNodes.add(node);
63
- if (!range.single) desiredNodes.add(range.end);
64
- }
65
- detachRemovedForNodes(parent, forState);
66
- let anchor = null;
67
- for (let index = desiredRanges.length - 1; index >= 0; index -= 1) {
68
- const range = desiredRanges[index];
69
- moveRange(parent, range, anchor);
70
- anchor = range.start;
71
- }
72
- for (const node of Array.from(parent.childNodes)) {
73
- if (desiredNodes.has(node)) continue;
74
- node.parentNode?.removeChild(node);
75
- }
76
- forState._hasResolvedItemDom = true;
77
- clearForDomUpdateState(forState);
78
- }
79
- function captureItemBeforeRangeCommit(forState, item) {
80
- if (item.scope.needsDomUpdate || item.scope.hydrationPending) captureForItemTransactionSnapshot(forState, item);
81
- }
82
- function commitForStateBoundaryChildren(parent, forState, childrenVNodes, runtime) {
83
- const previousChildren = Array.from(parent.childNodes);
84
- const currentKeyedMap = keyedElements.get(parent);
85
- const previousKeyedMap = currentKeyedMap ? new Map(currentKeyedMap) : void 0;
86
- const lifecycleBatch = beginLifecycleCommitBatch();
87
- beginForStateTransaction(forState, "reuse");
88
- registerForStateTransaction(forState);
89
- try {
90
- commitForStateBoundaryChildrenImpl(parent, forState, childrenVNodes, runtime);
91
- flushLifecycleCommitBatch(lifecycleBatch);
92
- } catch (error) {
93
- discardLifecycleCommitBatch(lifecycleBatch);
94
- rollbackForStateTransaction(forState);
95
- const previousChildrenSet = new Set(previousChildren);
96
- for (const node of Array.from(parent.childNodes)) if (!previousChildrenSet.has(node)) teardownNodeSubtree(node);
97
- parent.replaceChildren(...previousChildren);
98
- if (previousKeyedMap) keyedElements.set(parent, new Map(previousKeyedMap));
99
- else keyedElements.delete(parent);
100
- throw error;
101
- }
102
- }
103
- function commitForStateBoundaryChildrenImpl(parent, forState, childrenVNodes, runtime) {
104
- if (childrenVNodes.some(isMultiNodeVNode) || forState.orderedItems.some((item) => item.scope.range && !item.scope.range.single) || Boolean(forState.fallbackScope?.range && !forState.fallbackScope.range.single)) {
105
- commitForStateBoundaryRanges(parent, forState, childrenVNodes, runtime);
106
- return;
107
- }
108
- let removedBoundaryConsumed = false;
109
- const captureItemBeforeCommit = (item) => {
110
- if (item.scope.needsDomUpdate || item.scope.hydrationPending) captureForItemTransactionSnapshot(forState, item);
111
- };
112
- const syncItemDom = (item, vnode) => {
113
- captureItemBeforeCommit(item);
114
- return runtime.syncForItemDom(parent, item.scope, vnode);
115
- };
116
- const hydrateExistingForDom = () => {
117
- if (parent.children.length === forState.orderedKeys.length) for (let index = 0; index < forState.orderedItems.length; index++) {
118
- const item = forState.orderedItems[index];
119
- if (item) captureForItemTransactionSnapshot(forState, item);
120
- }
121
- if (hydrateExistingForDomInOrder(parent, forState)) return;
122
- const domKeyMap = getOrBuildDomKeyMap(parent);
123
- if (!domKeyMap) return;
124
- for (let i = 0; i < forState.orderedKeys.length; i++) {
125
- const itemKey = forState.orderedKeys[i];
126
- const itemInstance = forState.items.get(itemKey);
127
- if (!itemInstance || itemInstance.scope.dom) continue;
128
- const existingDom = domKeyMap.get(itemKey);
129
- if (!existingDom) continue;
130
- captureForItemTransactionSnapshot(forState, itemInstance);
131
- itemInstance.scope.dom = existingDom;
132
- itemInstance.scope.needsDomUpdate = true;
133
- }
134
- };
135
- if (forState.orderedKeys.length === 0) {
136
- const fallbackScope = forState.fallbackScope;
137
- const fallbackVNode = childrenVNodes[0];
138
- if (fallbackScope && (fallbackScope.needsDomUpdate || fallbackScope.hydrationPending)) captureForFallbackTransactionSnapshot(forState, fallbackScope);
139
- const nextDom = fallbackScope && fallbackVNode !== void 0 ? runtime.syncForItemDom(parent, fallbackScope, fallbackVNode) : null;
140
- if (nextDom && isExactRemovedBoundary(parent, forState.lastRemovedNodes)) {
141
- recordBenchEvent("domRemove", forState.lastRemovedNodes.length);
142
- parent.replaceChildren(nextDom);
143
- removedBoundaryConsumed = true;
144
- } else removeForBoundaryNodes(parent, forState.lastRemovedNodes, { teardown: false });
145
- if (nextDom) {
146
- if (parent.childNodes.length !== 1 || parent.firstChild !== nextDom || forState.lastRemovedNodes.length > 0 && !removedBoundaryConsumed) parent.replaceChildren(nextDom);
147
- } else if (parent.firstChild) parent.textContent = "";
148
- keyedElements.delete(parent);
149
- forState._hasResolvedItemDom = false;
150
- clearForDomUpdateState(forState);
151
- return;
152
- }
153
- if (!forState._hasResolvedItemDom && parent.childNodes.length > 0) hydrateExistingForDom();
154
- const getDirtyForIndices = () => {
155
- const pendingDirtyIndices = forState.pendingDirtyIndices;
156
- if (pendingDirtyIndices && pendingDirtyIndices.length > 0) return pendingDirtyIndices;
157
- const dirtyIndices = [];
158
- for (let index = 0; index < forState.orderedKeys.length; index += 1) if (forState.orderedItems[index]?.scope.needsDomUpdate) dirtyIndices.push(index);
159
- return dirtyIndices;
160
- };
161
- let dirtyIndicesCache = null;
162
- const ensureDirtyIndices = () => {
163
- if (dirtyIndicesCache) return dirtyIndicesCache;
164
- dirtyIndicesCache = getDirtyForIndices();
165
- return dirtyIndicesCache;
166
- };
167
- const dirtyIndices = forState.lastCommitStrategy === "NO_REORDER" ? ensureDirtyIndices() : [];
168
- let boundaryChildrenExact = false;
169
- const commitDirtyNoReorder = (dirtyIndices) => {
170
- if (dirtyIndices.length === 0) {
171
- boundaryChildrenExact = true;
172
- return;
173
- }
174
- const orderedItems = forState.orderedItems;
175
- const childNodes = parent.childNodes;
176
- for (let dirtyIndex = 0; dirtyIndex < dirtyIndices.length; dirtyIndex++) {
177
- const i = dirtyIndices[dirtyIndex];
178
- const itemInstance = orderedItems[i];
179
- if (!itemInstance) continue;
180
- captureItemBeforeCommit(itemInstance);
181
- if (runtime.tryPatchStableForDirtyItem(itemInstance.scope)) continue;
182
- const dom = syncItemDom(itemInstance, childrenVNodes[i]);
183
- if (!dom) continue;
184
- const anchor = childNodes[i] ?? null;
185
- if (dom.parentNode !== parent || dom !== anchor) {
186
- recordBenchEvent("domInsert");
187
- parent.insertBefore(dom, anchor);
188
- }
189
- }
190
- boundaryChildrenExact = true;
191
- };
192
- const commitPositional = () => {
193
- for (let i = 0; i < forState.orderedKeys.length; i++) {
194
- const itemInstance = forState.orderedItems[i];
195
- if (!itemInstance) continue;
196
- const dom = syncItemDom(itemInstance, childrenVNodes[i]);
197
- if (!dom) continue;
198
- if (dom.parentNode !== parent) {
199
- const anchor = parent.childNodes[i] ?? null;
200
- recordBenchEvent("domInsert");
201
- parent.insertBefore(dom, anchor);
202
- }
203
- }
204
- boundaryChildrenExact = true;
205
- };
206
- const commitAppend = () => {
207
- if (!forState._hasResolvedItemDom && forState.lastRemovedNodes.length === 0 && parent.childNodes.length === forState.orderedKeys.length) {
208
- let exactOrder = true;
209
- let currentNode = parent.firstChild;
210
- for (let i = 0; i < forState.orderedKeys.length; i++) {
211
- const itemInstance = forState.orderedItems[i];
212
- if (!itemInstance) {
213
- exactOrder = false;
214
- currentNode = currentNode?.nextSibling ?? null;
215
- continue;
216
- }
217
- const dom = syncItemDom(itemInstance, childrenVNodes[i]);
218
- if (!dom || dom.parentNode !== parent || dom !== currentNode) exactOrder = false;
219
- currentNode = currentNode?.nextSibling ?? null;
220
- }
221
- if (exactOrder) {
222
- boundaryChildrenExact = true;
223
- return;
224
- }
225
- }
226
- const appendColdRows = () => {
227
- const pendingAppend = [];
228
- const appendStart = forState.pendingAppendStart ?? 0;
229
- const hasDetachedSuffix = forState.pendingAppendStart !== null && parent.childNodes.length === appendStart;
230
- for (let i = appendStart; i < forState.orderedKeys.length; i++) {
231
- const itemInstance = forState.orderedItems[i];
232
- if (!itemInstance) continue;
233
- if (!hasDetachedSuffix && itemInstance.scope.dom?.parentNode === parent && !itemInstance.scope.needsDomUpdate) continue;
234
- const dom = syncItemDom(itemInstance, childrenVNodes[i]);
235
- if (!dom) continue;
236
- if (hasDetachedSuffix || dom.parentNode !== parent) pendingAppend.push(dom);
237
- }
238
- if (pendingAppend.length > 0) {
239
- const fragment = parent.ownerDocument.createDocumentFragment();
240
- if (canUseDirectReplaceChildrenSpread(pendingAppend.length)) fragment.append(...pendingAppend);
241
- else for (const node of pendingAppend) fragment.appendChild(node);
242
- parent.appendChild(fragment);
243
- }
244
- };
245
- appendColdRows();
246
- boundaryChildrenExact = true;
247
- };
248
- const commitInsertOne = () => {
249
- const index = forState.pendingInsertedIndex;
250
- const item = index === null ? void 0 : forState.orderedItems[index];
251
- if (index === null || !item || parent.childNodes.length !== forState.orderedKeys.length - 1) {
252
- commitReorder();
253
- return;
254
- }
255
- const anchor = parent.childNodes[index] ?? null;
256
- const dom = syncItemDom(item, childrenVNodes[index]);
257
- if (dom && (dom.parentNode !== parent || dom !== anchor)) {
258
- recordBenchEvent("domInsert");
259
- parent.insertBefore(dom, anchor);
260
- }
261
- boundaryChildrenExact = true;
262
- };
263
- const commitSwap = () => {
264
- const swapIndices = forState.pendingSwapIndices;
265
- if (!swapIndices) return;
266
- let [firstIndex, secondIndex] = swapIndices;
267
- if (firstIndex === secondIndex) return;
268
- if (firstIndex > secondIndex) [firstIndex, secondIndex] = [secondIndex, firstIndex];
269
- const firstKey = forState.orderedKeys[firstIndex];
270
- const secondKey = forState.orderedKeys[secondIndex];
271
- const firstItem = forState.items.get(firstKey);
272
- const secondItem = forState.items.get(secondKey);
273
- if (!firstItem || !secondItem) {
274
- commitReorder();
275
- return;
276
- }
277
- const firstDom = syncItemDom(firstItem, childrenVNodes[firstIndex]);
278
- const secondDom = syncItemDom(secondItem, childrenVNodes[secondIndex]);
279
- if (!firstDom || !secondDom) {
280
- commitReorder();
281
- return;
282
- }
283
- if (firstDom.parentNode !== parent || secondDom.parentNode !== parent) {
284
- commitReorder();
285
- return;
286
- }
287
- if ((firstDom.compareDocumentPosition(secondDom) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0) {
288
- boundaryChildrenExact = true;
289
- return;
290
- }
291
- const firstNextSibling = firstDom.nextSibling;
292
- recordBenchEvent("domMove");
293
- parent.insertBefore(firstDom, secondDom);
294
- recordBenchEvent("domMove");
295
- parent.insertBefore(secondDom, firstNextSibling);
296
- boundaryChildrenExact = true;
297
- };
298
- const commitReorder = () => {
299
- const items = forState.orderedItems;
300
- const count = items.length;
301
- if (forState.pendingMoveOnly && forState.lastRemovedNodes.length === 0) {
302
- const nodes = Array(count);
303
- let movedCount = 0;
304
- let insertedCount = 0;
305
- for (let i = 0; i < count; i++) {
306
- const itemInstance = items[i];
307
- if (!itemInstance) return;
308
- const scope = itemInstance.scope;
309
- const dom = scope.dom && !scope.needsDomUpdate ? scope.dom : syncItemDom(itemInstance, childrenVNodes[i]);
310
- if (!dom) return;
311
- if (dom.parentNode === parent) movedCount++;
312
- else insertedCount++;
313
- nodes[i] = dom;
314
- }
315
- if (!canUseDirectReplaceChildrenSpread(count)) {
316
- if (movedCount > 0) recordBenchEvent("domMove", movedCount);
317
- if (insertedCount > 0) recordBenchEvent("domInsert", insertedCount);
318
- replaceChildrenInOrder(parent, nodes, false);
319
- boundaryChildrenExact = true;
320
- return;
321
- }
322
- if (insertedCount > 0) {
323
- if (movedCount > 0) recordBenchEvent("domMove", movedCount);
324
- recordBenchEvent("domInsert", insertedCount);
325
- replaceChildrenInOrder(parent, nodes, true);
326
- boundaryChildrenExact = true;
327
- return;
328
- }
329
- if (count > 1 && commitMoveOnlyReorder(parent, nodes)) {
330
- boundaryChildrenExact = true;
331
- return;
332
- }
333
- if (movedCount > 0) recordBenchEvent("domMove", movedCount);
334
- if (insertedCount > 0) recordBenchEvent("domInsert", insertedCount);
335
- replaceChildrenInOrder(parent, nodes, true);
336
- boundaryChildrenExact = true;
337
- return;
338
- }
339
- let hasExistingChild = false;
340
- for (let i = 0; i < count; i++) if (items[i]?.scope.dom?.parentNode === parent) {
341
- hasExistingChild = true;
342
- break;
343
- }
344
- if (!hasExistingChild) {
345
- const canConsumeRemovedBoundary = isExactRemovedBoundary(parent, forState.lastRemovedNodes);
346
- const replaceColdRows = () => {
347
- const nodes = [];
348
- for (let i = 0; i < count; i++) {
349
- const itemInstance = items[i];
350
- if (!itemInstance) continue;
351
- const dom = syncItemDom(itemInstance, childrenVNodes[i]);
352
- if (dom) nodes.push(dom);
353
- }
354
- replaceChildrenInOrder(parent, nodes, canConsumeRemovedBoundary);
355
- };
356
- replaceColdRows();
357
- removedBoundaryConsumed = canConsumeRemovedBoundary;
358
- boundaryChildrenExact = true;
359
- return;
360
- }
361
- if (forState.lastRemovedNodes.length === 0) {
362
- const nodes = [];
363
- for (let i = 0; i < count; i++) {
364
- const itemInstance = items[i];
365
- if (!itemInstance) continue;
366
- const dom = syncItemDom(itemInstance, childrenVNodes[i]);
367
- if (!dom) continue;
368
- recordBenchEvent(dom.parentNode === parent ? "domMove" : "domInsert");
369
- nodes.push(dom);
370
- }
371
- replaceChildrenInOrder(parent, nodes, false);
372
- boundaryChildrenExact = true;
373
- return;
374
- }
375
- for (let i = 0; i < count; i++) {
376
- const itemInstance = items[i];
377
- if (!itemInstance) continue;
378
- const dom = syncItemDom(itemInstance, childrenVNodes[i]);
379
- if (!dom) continue;
380
- const anchor = parent.childNodes[i] ?? null;
381
- if (dom !== anchor) {
382
- recordBenchEvent("domMove");
383
- parent.insertBefore(dom, anchor);
384
- }
385
- }
386
- boundaryChildrenExact = true;
387
- };
388
- if (forState.lastCommitStrategy === "NO_REORDER" && dirtyIndices.length > 0 && forState.pendingDirtyIndices === null && forState.pendingSwapIndices === null && !forState.pendingMoveOnly && forState.lastRemovedNodes.length === 0 && parent.childNodes.length === forState.orderedKeys.length) {
389
- commitDirtyNoReorder(dirtyIndices);
390
- syncKeyedMapFromForState(parent, forState, "NO_REORDER", []);
391
- clearForDomUpdateState(forState);
392
- return;
393
- }
394
- switch (forState.lastCommitStrategy) {
395
- case "NO_REORDER":
396
- commitDirtyNoReorder(dirtyIndices);
397
- break;
398
- case "TRUNCATE":
399
- commitPositional();
400
- break;
401
- case "APPEND":
402
- commitAppend();
403
- break;
404
- case "INSERT_ONE":
405
- commitInsertOne();
406
- break;
407
- case "SWAP":
408
- commitSwap();
409
- break;
410
- default:
411
- commitReorder();
412
- break;
413
- }
414
- if (!removedBoundaryConsumed) removeForBoundaryNodes(parent, forState.lastRemovedNodes, { teardown: false });
415
- syncKeyedMapFromForState(parent, forState, forState.lastCommitStrategy, forState.lastRemovedNodes);
416
- const syncExactForBoundaryChildren = () => {
417
- const expectedNodes = [];
418
- for (let i = 0; i < forState.orderedKeys.length; i++) {
419
- const itemInstance = forState.orderedItems[i];
420
- if (!itemInstance) continue;
421
- const dom = itemInstance.scope.dom && !itemInstance.scope.needsDomUpdate ? itemInstance.scope.dom : syncItemDom(itemInstance, childrenVNodes[i]);
422
- if (dom) expectedNodes.push(dom);
423
- }
424
- const currentNodes = Array.from(parent.childNodes);
425
- if (currentNodes.length === expectedNodes.length && currentNodes.every((node, index) => node === expectedNodes[index])) return;
426
- const expectedNodeSet = new Set(expectedNodes);
427
- for (const currentNode of currentNodes) {
428
- if (expectedNodeSet.has(currentNode)) continue;
429
- teardownNodeSubtree(currentNode);
430
- if (currentNode.parentNode === parent) {
431
- recordBenchEvent("domRemove");
432
- currentNode.remove();
433
- }
434
- }
435
- replaceChildrenInOrder(parent, expectedNodes, true);
436
- };
437
- if (!boundaryChildrenExact) syncExactForBoundaryChildren();
438
- forState._hasResolvedItemDom = true;
439
- clearForDomUpdateState(forState);
440
- }
441
- //#endregion
442
- export { commitForStateBoundaryChildren };
@@ -1,60 +0,0 @@
1
- //#region src/renderer/hydration-boundaries.ts
2
- const recordsByElement = /* @__PURE__ */ new WeakMap();
3
- const recordsByRoot = /* @__PURE__ */ new WeakMap();
4
- function registerDeferredHydrationBoundary(root, element, range) {
5
- const existing = recordsByElement.get(element);
6
- if (existing) return existing;
7
- const record = {
8
- root,
9
- element,
10
- ownership: {
11
- owner: null,
12
- parent: null,
13
- portalScope: null
14
- },
15
- context: null,
16
- range,
17
- vnode: void 0,
18
- renderResult: void 0,
19
- state: "deferred",
20
- attempts: 0
21
- };
22
- recordsByElement.set(element, record);
23
- const rootRecords = recordsByRoot.get(root) ?? /* @__PURE__ */ new Set();
24
- rootRecords.add(record);
25
- recordsByRoot.set(root, rootRecords);
26
- return record;
27
- }
28
- function rememberDeferredHydrationVNode(element, vnode, owner, context) {
29
- const record = recordsByElement.get(element);
30
- if (!record) return;
31
- record.vnode = vnode;
32
- record.renderResult = vnode;
33
- record.ownership.owner = owner;
34
- record.ownership.parent = owner?.parentInstance ?? null;
35
- record.ownership.portalScope = owner?.portalScope ?? null;
36
- record.context = context;
37
- return record;
38
- }
39
- function beginDeferredHydrationActivation(element) {
40
- const record = recordsByElement.get(element);
41
- if (!record || !record.vnode || record.state === "active" || record.state === "activating") return;
42
- record.attempts += 1;
43
- record.state = "activating";
44
- return record;
45
- }
46
- function commitDeferredHydrationActivation(record) {
47
- record.state = "active";
48
- }
49
- function rollbackDeferredHydrationActivation(record) {
50
- record.state = "failed";
51
- }
52
- function clearDeferredHydrationBoundaries(root) {
53
- const records = recordsByRoot.get(root);
54
- if (!records) return;
55
- for (const record of records) recordsByElement.delete(record.element);
56
- records.clear();
57
- recordsByRoot.delete(root);
58
- }
59
- //#endregion
60
- export { beginDeferredHydrationActivation, clearDeferredHydrationBoundaries, commitDeferredHydrationActivation, registerDeferredHydrationBoundary, rememberDeferredHydrationVNode, rollbackDeferredHydrationActivation };
@@ -1,49 +0,0 @@
1
- //#region src/renderer/hydration-listener-transaction.ts
2
- let currentTransaction = null;
3
- function beginHydrationListenerTransaction() {
4
- const transaction = {
5
- parent: currentTransaction,
6
- stages: [],
7
- active: true
8
- };
9
- currentTransaction = transaction;
10
- return transaction;
11
- }
12
- function stageHydrationListener(stage) {
13
- if (!currentTransaction?.active) return false;
14
- currentTransaction.stages.push(stage);
15
- return true;
16
- }
17
- function closeTransaction(transaction) {
18
- if (!transaction.active) return false;
19
- transaction.active = false;
20
- currentTransaction = transaction.parent;
21
- return true;
22
- }
23
- function commitHydrationListenerTransaction(transaction) {
24
- if (!closeTransaction(transaction)) return;
25
- const stages = [...transaction.stages].sort((left, right) => {
26
- if (left.kind !== right.kind) return left.kind === "delegated" ? -1 : 1;
27
- return left.eventName.localeCompare(right.eventName);
28
- });
29
- const published = [];
30
- try {
31
- for (const stage of stages) {
32
- stage.publish();
33
- published.push(stage);
34
- }
35
- } catch (error) {
36
- for (let index = published.length - 1; index >= 0; index -= 1) try {
37
- published[index].rollback();
38
- } catch {}
39
- throw error;
40
- }
41
- }
42
- function discardHydrationListenerTransaction(transaction) {
43
- if (!closeTransaction(transaction)) return;
44
- for (let index = transaction.stages.length - 1; index >= 0; index -= 1) try {
45
- transaction.stages[index].rollback();
46
- } catch {}
47
- }
48
- //#endregion
49
- export { beginHydrationListenerTransaction, commitHydrationListenerTransaction, discardHydrationListenerTransaction, stageHydrationListener };
@@ -1,39 +0,0 @@
1
- import { _isDOMElement } from "../common/vnode.js";
2
- import "./types.js";
3
- import { configureRuntimeRenderer } from "../runtime/runtime.js";
4
- import { getDefaultRuntimeInstance } from "../runtime/access.js";
5
- import "../runtime/index.js";
6
- import { REACTIVE_CHILDREN_KEY, cleanupInstanceIfPresent, cleanupInstancesUnder, elementListeners, elementReactivePropsCleanup, elementRefs, forEachElementReactivePropCleanup, getElementReactivePropCleanupSize, getElementReactivePropsCleanupMap, removeAllListeners, removeElementListeners, removeElementReactiveProps, removeElementRef, setDirectElementReactivePropCleanup, setFreshElementReactivePropCleanup, teardownNodeSubtree, updateElementRef } from "./cleanup.js";
7
- import { getKeyMapForElement, isKeyedReorderFastPathEligible, populateKeyMapForElement } from "./keyed.js";
8
- import { performBulkPositionalKeyedTextUpdate } from "./children-fastpath.js";
9
- import { isBulkTextFastPathEligible, performBulkTextReplace } from "./children.js";
10
- import { setStaticChildSlotsCacheEnabled } from "./static-reuse.js";
11
- import { updateElementChildren, updateUnkeyedChildren } from "./element-children.js";
12
- import { markReactivePropsDirtySource } from "./prop-bindings.js";
13
- import { withIntrinsicHydrationAdoption } from "./intrinsic-hydration-adoption.js";
14
- import "./boundary-materialization.js";
15
- import "./boundaries.js";
16
- import { syncComponentElement } from "./component-host.js";
17
- import { tryPatchStableForDirtyItem } from "./stable-patch.js";
18
- import { clearDeferredHydrationBoundaries, registerDeferredHydrationBoundary } from "./hydration-boundaries.js";
19
- import { IS_DOM_AVAILABLE, activateHydrationBoundary, createDOMNode, updateElementFromVnode } from "./dom-internal.js";
20
- import "./dom.js";
21
- import { evaluate } from "./evaluate.js";
22
- //#region src/renderer/index.ts
23
- function createRendererHost() {
24
- return {
25
- evaluate,
26
- cleanupInstancesUnder,
27
- teardownNodeSubtree,
28
- populateKeyMapForElement,
29
- getKeyMapForElement,
30
- isKeyedReorderFastPathEligible,
31
- markReactivePropsDirtySource
32
- };
33
- }
34
- function installRendererBridge(runtime = getDefaultRuntimeInstance()) {
35
- configureRuntimeRenderer(createRendererHost(), runtime);
36
- return true;
37
- }
38
- //#endregion
39
- export { IS_DOM_AVAILABLE, REACTIVE_CHILDREN_KEY, _isDOMElement, activateHydrationBoundary, cleanupInstanceIfPresent, cleanupInstancesUnder, clearDeferredHydrationBoundaries, createDOMNode, createRendererHost, elementListeners, elementReactivePropsCleanup, elementRefs, forEachElementReactivePropCleanup, getElementReactivePropCleanupSize, getElementReactivePropsCleanupMap, installRendererBridge, isBulkTextFastPathEligible, markReactivePropsDirtySource, performBulkPositionalKeyedTextUpdate, performBulkTextReplace, registerDeferredHydrationBoundary, removeAllListeners, removeElementListeners, removeElementReactiveProps, removeElementRef, setDirectElementReactivePropCleanup, setFreshElementReactivePropCleanup, setStaticChildSlotsCacheEnabled, syncComponentElement, teardownNodeSubtree, tryPatchStableForDirtyItem, updateElementChildren, updateElementFromVnode, updateElementRef, updateUnkeyedChildren, withIntrinsicHydrationAdoption };