@askrjs/askr 0.0.52 → 0.0.53

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-j2KoN6ss.js +647 -0
  11. package/dist/cleanup-COv77su2.js +487 -0
  12. package/dist/component-internal-B3z7GXlD.js +614 -0
  13. package/dist/component-lifecycle-CO4hXlP4.js +357 -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-BQvNVfAd.d.ts +436 -0
  23. package/dist/control-BYyLTFyw.js +165 -0
  24. package/dist/control-Bf4Wkdvv.d.ts +9 -0
  25. package/dist/{common/control.js → control-DhFRTIoE.js} +1 -1
  26. package/dist/data/index.d.ts +2 -6
  27. package/dist/data/index.js +4 -5
  28. package/dist/data-DnxnDxD-.js +559 -0
  29. package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +32 -31
  30. package/dist/deferred-lKE8uR0z.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-BKf_Tnv1.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-31Uoz_NS.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-D73jgYx1.d.ts +48 -0
  52. package/dist/{runtime/runtime.d.ts → index-R2JJIbM-.d.ts} +31 -8
  53. package/dist/index-SJXJkssx.d.ts +44 -0
  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-D9va7GOU.js} +4 -5
  67. package/dist/navigate-BVDCzOuB.d.ts +34 -0
  68. package/dist/navigate-CmPLSXyw.js +1449 -0
  69. package/dist/{runtime/portal.js → portal-CyU3Ucf2.js} +33 -36
  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-DzPjeLby.js +6197 -0
  73. package/dist/{runtime/resource-operation.js → resource-operation-CEzfpnDk.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-CeYvjj5_.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-D3t80Rc0.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-io9ahUeq.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,60 +0,0 @@
1
- import { DefaultPreventable, KeyboardLikeEvent, PropagationStoppable } from "../utilities/event-types.js";
2
-
3
- //#region src/foundations/interactions/pressable.d.ts
4
- /**
5
- * pressable
6
- *
7
- * Interaction helper that produces VNode props for 'press' semantics.
8
- * - Pure and deterministic: no DOM construction or mutation here
9
- * - The runtime owns event attachment and scheduling
10
- * - This helper returns plain props (handlers) intended to be attached by the runtime
11
- *
12
- * Behaviour:
13
- * - For native buttons: only an `onClick` prop is provided (no ARIA or keyboard shims)
14
- * - For non-button elements: add `role="button"` and `tabIndex` and keyboard handlers
15
- * - Activation: `Enter` activates on keydown, `Space` activates on keyup (matches native button)
16
- * - Disabled: handlers short-circuit and `aria-disabled` is set for all hosts
17
- *
18
- * POLICY DECISIONS (LOCKED):
19
- *
20
- * 1. Activation Timing (Platform Parity)
21
- * - Enter fires on keydown (immediate response)
22
- * - Space fires on keyup (allows cancel by moving focus, matches native)
23
- * - Space keydown prevents scroll (matches native button behavior)
24
- *
25
- * 2. Disabled Enforcement Strategy
26
- * - Native buttons: Use HTML `disabled` attribute (platform-enforced non-interactivity)
27
- * AND `aria-disabled` (consistent a11y signaling)
28
- * - Non-native: Use `tabIndex=-1` (removes from tab order)
29
- * AND `aria-disabled` (signals disabled state to AT)
30
- * - Click handler short-circuits as defense-in-depth (prevents leaked focus issues)
31
- *
32
- * 3. Key Repeat Behavior
33
- * - Held Enter/Space will fire onPress repeatedly (matches native button)
34
- * - No debouncing or repeat prevention (platform parity)
35
- */
36
- interface PressableOptions {
37
- disabled?: boolean;
38
- onPress?: (e: PressEvent) => void;
39
- /**
40
- * Whether the host is a native button. Defaults to false.
41
- */
42
- isNativeButton?: boolean;
43
- }
44
- type PressEvent = DefaultPreventable & PropagationStoppable;
45
- interface PressableResult {
46
- onClick: (e: PressEvent) => void;
47
- disabled?: true;
48
- role?: 'button';
49
- tabIndex?: number;
50
- onKeyDown?: (e: KeyboardLikeEvent) => void;
51
- onKeyUp?: (e: KeyboardLikeEvent) => void;
52
- 'aria-disabled'?: 'true';
53
- }
54
- declare function pressable({
55
- disabled,
56
- onPress,
57
- isNativeButton
58
- }: PressableOptions): PressableResult;
59
- //#endregion
60
- export { PressableOptions, PressableResult, pressable };
@@ -1,49 +0,0 @@
1
- import { ariaDisabled } from "../utilities/aria.js";
2
- //#region src/foundations/interactions/pressable.ts
3
- function pressable({ disabled, onPress, isNativeButton = false }) {
4
- const props = { onClick: (e) => {
5
- if (disabled) {
6
- e.preventDefault?.();
7
- e.stopPropagation?.();
8
- return;
9
- }
10
- onPress?.(e);
11
- } };
12
- if (isNativeButton) {
13
- if (disabled) {
14
- props.disabled = true;
15
- Object.assign(props, ariaDisabled(disabled));
16
- }
17
- return props;
18
- }
19
- props.role = "button";
20
- props.tabIndex = disabled ? -1 : 0;
21
- props.onKeyDown = (e) => {
22
- if (disabled) {
23
- e.preventDefault?.();
24
- e.stopPropagation?.();
25
- return;
26
- }
27
- if (e.key === "Enter") {
28
- e.preventDefault?.();
29
- onPress?.(e);
30
- return;
31
- }
32
- if (e.key === " ") e.preventDefault?.();
33
- };
34
- props.onKeyUp = (e) => {
35
- if (disabled) {
36
- e.preventDefault?.();
37
- e.stopPropagation?.();
38
- return;
39
- }
40
- if (e.key === " ") {
41
- e.preventDefault?.();
42
- onPress?.(e);
43
- }
44
- };
45
- if (disabled) Object.assign(props, ariaDisabled(disabled));
46
- return props;
47
- }
48
- //#endregion
49
- export { pressable };
@@ -1,51 +0,0 @@
1
- import { KeyboardLikeEvent } from "../utilities/event-types.js";
2
-
3
- //#region src/foundations/interactions/roving-focus.d.ts
4
- type Orientation = 'horizontal' | 'vertical' | 'both';
5
- interface RovingFocusOptions {
6
- /**
7
- * Current focused index
8
- */
9
- currentIndex: number;
10
- /**
11
- * Total number of items
12
- */
13
- itemCount: number;
14
- /**
15
- * Navigation orientation
16
- * - horizontal: ArrowLeft/ArrowRight
17
- * - vertical: ArrowUp/ArrowDown
18
- * - both: all arrow keys
19
- */
20
- orientation?: Orientation;
21
- /**
22
- * Whether to loop when reaching the end
23
- */
24
- loop?: boolean;
25
- /**
26
- * Callback when navigation occurs
27
- */
28
- onNavigate?: (index: number) => void;
29
- /**
30
- * Optional disabled state check per index
31
- */
32
- isDisabled?: (index: number) => boolean;
33
- }
34
- interface RovingFocusResult {
35
- /**
36
- * Props for the container element (composes via mergeProps)
37
- */
38
- container: {
39
- onKeyDown: (e: KeyboardLikeEvent) => void;
40
- };
41
- /**
42
- * Generate props for an item at the given index (composes via mergeProps)
43
- */
44
- item: (index: number) => {
45
- tabIndex: number;
46
- 'data-roving-index': number;
47
- };
48
- }
49
- declare function rovingFocus(options: RovingFocusOptions): RovingFocusResult;
50
- //#endregion
51
- export { Orientation, RovingFocusOptions, RovingFocusResult, rovingFocus };
@@ -1,69 +0,0 @@
1
- //#region src/foundations/interactions/roving-focus.ts
2
- function rovingFocus(options) {
3
- const { currentIndex, itemCount, orientation = "horizontal", loop = false, onNavigate, isDisabled } = options;
4
- function findNextIndex(from, direction) {
5
- let next = from;
6
- for (let steps = 0; steps < itemCount; steps += 1) {
7
- next += direction;
8
- if (loop) {
9
- if (next < 0) next = itemCount - 1;
10
- if (next >= itemCount) next = 0;
11
- } else if (next < 0 || next >= itemCount) return;
12
- if (next === from) return void 0;
13
- if (!isDisabled?.(next)) return next;
14
- }
15
- }
16
- function handleKeyDown(e) {
17
- const { key } = e;
18
- let direction;
19
- if (orientation === "horizontal" || orientation === "both") {
20
- if (key === "ArrowRight") direction = 1;
21
- if (key === "ArrowLeft") direction = -1;
22
- }
23
- if (orientation === "vertical" || orientation === "both") {
24
- if (key === "ArrowDown") direction = 1;
25
- if (key === "ArrowUp") direction = -1;
26
- }
27
- if (direction === void 0) return;
28
- const nextIndex = findNextIndex(currentIndex, direction);
29
- if (nextIndex === void 0) return;
30
- e.preventDefault?.();
31
- e.stopPropagation?.();
32
- onNavigate?.(nextIndex);
33
- }
34
- return {
35
- container: { onKeyDown: handleKeyDown },
36
- item: (index) => ({
37
- tabIndex: index === currentIndex ? 0 : -1,
38
- "data-roving-index": index
39
- })
40
- };
41
- }
42
- /**
43
- * USAGE EXAMPLE:
44
- *
45
- * function Menu() {
46
- * const [focusIndex, setFocusIndex] = state(0);
47
- * const items = ['File', 'Edit', 'View'];
48
- *
49
- * const navigation = rovingFocus({
50
- * currentIndex: focusIndex(),
51
- * itemCount: items.length,
52
- * orientation: 'horizontal',
53
- * loop: true,
54
- * onNavigate: setFocusIndex,
55
- * });
56
- *
57
- * return (
58
- * <div {...navigation.container}>
59
- * {items.map((label, index) => (
60
- * <button {...navigation.item(index)}>
61
- * {label}
62
- * </button>
63
- * ))}
64
- * </div>
65
- * );
66
- * }
67
- */
68
- //#endregion
69
- export { rovingFocus };
@@ -1,32 +0,0 @@
1
- import { State } from "../../runtime/state.js";
2
- //#region src/foundations/state/controllable.d.ts
3
- declare function isControlled<T>(value: T | undefined): value is T;
4
- declare function resolveControllable<T>(value: T | undefined, defaultValue: T): {
5
- value: T;
6
- isControlled: boolean;
7
- };
8
- declare function makeControllable<T>(options: {
9
- value: T | undefined;
10
- defaultValue: T;
11
- onChange?: (next: T) => void;
12
- setInternal?: (next: T) => void;
13
- }): {
14
- set: (next: T) => void;
15
- isControlled: boolean;
16
- };
17
- type ControllableState<T> = State<T> & {
18
- isControlled: boolean;
19
- };
20
- /**
21
- * controllableState
22
- *
23
- * Hook-like primitive that mirrors `state()` semantics while supporting
24
- * controlled/uncontrolled behavior.
25
- */
26
- declare function controllableState<T>(options: {
27
- value: T | undefined;
28
- defaultValue: T;
29
- onChange?: (next: T) => void;
30
- }): ControllableState<T>;
31
- //#endregion
32
- export { ControllableState, controllableState, isControlled, makeControllable, resolveControllable };
@@ -1,80 +0,0 @@
1
- import { state } from "../../runtime/state.js";
2
- import "../../runtime/index.js";
3
- //#region src/foundations/state/controllable.ts
4
- /**
5
- * controllable
6
- *
7
- * Small utilities for controlled vs uncontrolled components. These helpers are
8
- * intentionally minimal and do not manage state themselves; they help component
9
- * implementations make correct decisions about when to call `onChange` vs
10
- * update internal state.
11
- *
12
- * POLICY DECISIONS (LOCKED):
13
- *
14
- * 1. Controlled Detection
15
- * A value is "controlled" if it is not `undefined`.
16
- * This matches React conventions and is SSR-safe.
17
- *
18
- * 2. onChange Timing
19
- * - Controlled mode: onChange called immediately, no internal update
20
- * - Uncontrolled mode: internal state updated first, then onChange called
21
- * This ensures onChange sees the new value in both modes.
22
- *
23
- * 3. Value Equality
24
- * controllableState uses Object.is() to prevent unnecessary onChange calls.
25
- * This is intentional — strict equality, no deep comparison.
26
- */
27
- function isControlled(value) {
28
- return value !== void 0;
29
- }
30
- function resolveControllable(value, defaultValue) {
31
- const controlled = isControlled(value);
32
- return {
33
- value: controlled ? value : defaultValue,
34
- isControlled: controlled
35
- };
36
- }
37
- function makeControllable(options) {
38
- const { value, defaultValue, onChange, setInternal } = options;
39
- const { isControlled } = resolveControllable(value, defaultValue);
40
- function set(next) {
41
- if (isControlled) onChange?.(next);
42
- else {
43
- setInternal?.(next);
44
- onChange?.(next);
45
- }
46
- }
47
- return {
48
- set,
49
- isControlled
50
- };
51
- }
52
- /**
53
- * controllableState
54
- *
55
- * Hook-like primitive that mirrors `state()` semantics while supporting
56
- * controlled/uncontrolled behavior.
57
- */
58
- function controllableState(options) {
59
- const isControlled = options.value !== void 0;
60
- const internal = isControlled ? null : state(options.defaultValue);
61
- function read() {
62
- if (isControlled) return options.value;
63
- return internal();
64
- }
65
- read.set = (nextOrUpdater) => {
66
- const prev = read();
67
- const next = typeof nextOrUpdater === "function" ? nextOrUpdater(prev) : nextOrUpdater;
68
- if (Object.is(prev, next)) return;
69
- if (isControlled) {
70
- options.onChange?.(next);
71
- return;
72
- }
73
- internal.set(nextOrUpdater);
74
- options.onChange?.(next);
75
- };
76
- read.isControlled = isControlled;
77
- return read;
78
- }
79
- //#endregion
80
- export { controllableState, isControlled, makeControllable, resolveControllable };
@@ -1,51 +0,0 @@
1
- //#region src/foundations/structures/collection.d.ts
2
- /**
3
- * createCollection
4
- *
5
- * Ordered descendant registry for coordinating items without DOM queries.
6
- *
7
- * INVARIANTS:
8
- * 1. Registration order determines item order (no DOM queries)
9
- * 2. Stable ordering across renders (insertion order preserved)
10
- * 3. Each item may have metadata (type-safe, user-defined)
11
- * 4. No implicit global state (explicit collection instances)
12
- * 5. No automatic cleanup (caller controls lifecycle)
13
- *
14
- * DESIGN:
15
- * - Returns a registry API ({ register, items, clear })
16
- * - Items are stored in insertion order
17
- * - Registration returns an unregister function
18
- * - No side effects on registration (pure data structure)
19
- *
20
- * USAGE:
21
- * const collection = createCollection<HTMLElement, { disabled: boolean }>();
22
- * const unregister = collection.register(element, { disabled: false });
23
- * const allItems = collection.items();
24
- * unregister();
25
- */
26
- type CollectionItem<TNode, TMetadata = unknown> = {
27
- node: TNode;
28
- metadata: TMetadata;
29
- };
30
- interface Collection<TNode, TMetadata = unknown> {
31
- /**
32
- * Register a node with optional metadata.
33
- * Returns an unregister function.
34
- */
35
- register(node: TNode, metadata: TMetadata): () => void;
36
- /**
37
- * Get all registered items in insertion order.
38
- */
39
- items(): ReadonlyArray<CollectionItem<TNode, TMetadata>>;
40
- /**
41
- * Clear all registered items.
42
- */
43
- clear(): void;
44
- /**
45
- * Get the count of registered items.
46
- */
47
- size(): number;
48
- }
49
- declare function createCollection<TNode, TMetadata = unknown>(): Collection<TNode, TMetadata>;
50
- //#endregion
51
- export { Collection, CollectionItem, createCollection };
@@ -1,49 +0,0 @@
1
- //#region src/foundations/structures/collection.ts
2
- function createCollection() {
3
- const registry = /* @__PURE__ */ new Map();
4
- function register(node, metadata) {
5
- const item = {
6
- node,
7
- metadata
8
- };
9
- registry.set(node, item);
10
- return () => {
11
- registry.delete(node);
12
- };
13
- }
14
- function items() {
15
- return Array.from(registry.values());
16
- }
17
- function clear() {
18
- registry.clear();
19
- }
20
- function size() {
21
- return registry.size;
22
- }
23
- return {
24
- register,
25
- items,
26
- clear,
27
- size
28
- };
29
- }
30
- /**
31
- * USAGE EXAMPLE:
32
- *
33
- * // Create a collection for menu items
34
- * const menuItems = createCollection<HTMLElement, { disabled: boolean }>();
35
- *
36
- * // Register items
37
- * const unregister1 = menuItems.register(element1, { disabled: false });
38
- * const unregister2 = menuItems.register(element2, { disabled: true });
39
- *
40
- * // Query items
41
- * const allItems = menuItems.items();
42
- * const enabledItems = allItems.filter(item => !item.metadata.disabled);
43
- *
44
- * // Cleanup
45
- * unregister1();
46
- * unregister2();
47
- */
48
- //#endregion
49
- export { createCollection };
@@ -1,80 +0,0 @@
1
- //#region src/foundations/structures/layer.d.ts
2
- /**
3
- * createLayer
4
- *
5
- * Manages stacking order and coordination for overlays (modals, popovers, etc).
6
- *
7
- * INVARIANTS:
8
- * 1. Layers are ordered by registration time (FIFO)
9
- * 2. Only the top layer handles Escape key
10
- * 3. Only the top layer handles outside pointer events
11
- * 4. Nested layers are supported
12
- * 5. Does not implement portals (orthogonal concern)
13
- * 6. No automatic DOM insertion (caller controls mounting)
14
- *
15
- * DESIGN:
16
- * - Returns a layer manager with register/unregister API
17
- * - Each layer has a unique ID and can query if it's the top layer
18
- * - Escape and outside pointer coordination via callbacks
19
- * - No z-index management (CSS concern)
20
- *
21
- * USAGE:
22
- * const manager = createLayer();
23
- *
24
- * const layer = manager.register({
25
- * onEscape: () => { ... },
26
- * onOutsidePointer: () => { ... }
27
- * });
28
- *
29
- * layer.isTop(); // true if this is the topmost layer
30
- * layer.unregister();
31
- */
32
- interface LayerOptions {
33
- /**
34
- * Called when Escape is pressed and this is the top layer
35
- */
36
- onEscape?: () => void;
37
- /**
38
- * Called when pointer event occurs outside and this is the top layer
39
- */
40
- onOutsidePointer?: (e: PointerEvent) => void;
41
- /**
42
- * Optional node reference for outside pointer detection
43
- */
44
- node?: Node | null;
45
- }
46
- interface Layer {
47
- /**
48
- * Unique layer ID
49
- */
50
- id: number;
51
- /**
52
- * Check if this layer is the topmost
53
- */
54
- isTop(): boolean;
55
- /**
56
- * Remove this layer from the stack
57
- */
58
- unregister(): void;
59
- }
60
- interface LayerManager {
61
- /**
62
- * Register a new layer
63
- */
64
- register(options: LayerOptions): Layer;
65
- /**
66
- * Get all active layers in order
67
- */
68
- layers(): ReadonlyArray<Layer>;
69
- /**
70
- * Manually trigger escape handling on the top layer
71
- */
72
- handleEscape(): void;
73
- /**
74
- * Manually trigger outside pointer handling on the top layer
75
- */
76
- handleOutsidePointer(e: PointerEvent): void;
77
- }
78
- declare function createLayer(): LayerManager;
79
- //#endregion
80
- export { Layer, LayerManager, LayerOptions, createLayer };
@@ -1,79 +0,0 @@
1
- //#region src/foundations/structures/layer.ts
2
- function createLayer() {
3
- const stack = [];
4
- let nextId = 1;
5
- function register(options) {
6
- const id = nextId++;
7
- const entry = {
8
- id,
9
- options
10
- };
11
- stack.push(entry);
12
- function isTop() {
13
- return stack[stack.length - 1]?.id === id;
14
- }
15
- function unregister() {
16
- const index = stack.findIndex((e) => e.id === id);
17
- if (index !== -1) stack.splice(index, 1);
18
- }
19
- return {
20
- id,
21
- isTop,
22
- unregister
23
- };
24
- }
25
- function layers() {
26
- return stack.map((entry) => ({
27
- id: entry.id,
28
- isTop: () => stack[stack.length - 1]?.id === entry.id,
29
- unregister: () => {
30
- const index = stack.findIndex((e) => e.id === entry.id);
31
- if (index !== -1) stack.splice(index, 1);
32
- }
33
- }));
34
- }
35
- function handleEscape() {
36
- const top = stack[stack.length - 1];
37
- if (top) top.options.onEscape?.();
38
- }
39
- function handleOutsidePointer(e) {
40
- const top = stack[stack.length - 1];
41
- if (!top) return;
42
- const node = top.options.node;
43
- if (node && e.target instanceof Node) {
44
- if (!node.contains(e.target)) top.options.onOutsidePointer?.(e);
45
- } else top.options.onOutsidePointer?.(e);
46
- }
47
- return {
48
- register,
49
- layers,
50
- handleEscape,
51
- handleOutsidePointer
52
- };
53
- }
54
- /**
55
- * USAGE EXAMPLE:
56
- *
57
- * const layerManager = createLayer();
58
- *
59
- * function Modal({ onClose }) {
60
- * const modalRef = ref<HTMLDivElement>();
61
- *
62
- * const layer = layerManager.register({
63
- * node: modalRef.current,
64
- * onEscape: onClose,
65
- * onOutsidePointer: onClose,
66
- * });
67
- *
68
- * onUnmount(() => layer.unregister());
69
- *
70
- * return (
71
- * <div ref={modalRef}>
72
- * <h1>Modal</h1>
73
- * {layer.isTop() && <p>I am on top!</p>}
74
- * </div>
75
- * );
76
- * }
77
- */
78
- //#endregion
79
- export { createLayer };
@@ -1,32 +0,0 @@
1
- import { RenderableChild } from "../../common/vnode.js";
2
-
3
- //#region src/foundations/structures/layout.d.ts
4
- /**
5
- * Layout helper.
6
- *
7
- * A layout is just a normal component that wraps children.
8
- * Persistence and reuse are handled by the runtime via component identity.
9
- *
10
- * This helper exists purely for readability and convention.
11
- *
12
- * POLICY DECISIONS (LOCKED):
13
- *
14
- * 1. Return Type is Opaque (unknown)
15
- * Layout components return `unknown` to remain runtime-agnostic.
16
- * The runtime owns concrete JSX element types.
17
- *
18
- * 2. Children Positioning
19
- * Layout receives children as first argument (router-friendly).
20
- * Props come second. This matches route layout conventions where
21
- * children represent the nested route content.
22
- *
23
- * 3. Props Spreading
24
- * Props are spread into the layout component. This is intentional
25
- * and deterministic — no merging or composition.
26
- */
27
- type LayoutComponent<P = object> = (props: P & {
28
- children?: RenderableChild;
29
- }) => unknown;
30
- declare function layout<P = object>(Layout: LayoutComponent<P>): (children?: RenderableChild, props?: P) => unknown;
31
- //#endregion
32
- export { LayoutComponent, layout };
@@ -1,11 +0,0 @@
1
- //#region src/foundations/structures/layout.tsx
2
- function layout(Layout) {
3
- return (children, props) => {
4
- return Layout({
5
- ...props,
6
- children
7
- });
8
- };
9
- }
10
- //#endregion
11
- export { layout };
@@ -1,2 +0,0 @@
1
- import { DefaultPortal, Portal, PortalProps, definePortal } from "../../runtime/portal.js";
2
- export { DefaultPortal, Portal, type PortalProps, definePortal };
@@ -1,3 +0,0 @@
1
- import { DefaultPortal, Portal, definePortal } from "../../runtime/portal.js";
2
- import "../../runtime/index.js";
3
- export { DefaultPortal, Portal, definePortal };
@@ -1,36 +0,0 @@
1
- import { JSXElement } from "../../common/jsx.js";
2
- import { RenderableChild } from "../../common/vnode.js";
3
- //#region src/foundations/structures/presence.d.ts
4
- interface PresenceProps {
5
- present: boolean | (() => boolean);
6
- children?: RenderableChild;
7
- }
8
- /**
9
- * Presence
10
- *
11
- * Structural policy primitive for conditional mount/unmount.
12
- * - No timers
13
- * - No animation coupling
14
- * - No DOM side-effects
15
- *
16
- * POLICY DECISIONS (LOCKED):
17
- *
18
- * 1. Present as Function
19
- * Accepts boolean OR function to support lazy evaluation patterns.
20
- * Function is called once per render. Use boolean form for static values.
21
- *
22
- * 2. Children Type
23
- * Presence forwards normal renderable child content only.
24
- * Imperative DOM nodes are not part of the public contract.
25
- *
26
- * 3. Immediate Mount/Unmount
27
- * No exit animations or transitions. When `present` becomes false,
28
- * children are removed immediately. Animation must be layered above
29
- * this primitive.
30
- */
31
- declare function Presence({
32
- present,
33
- children
34
- }: PresenceProps): JSXElement | null;
35
- //#endregion
36
- export { Presence, PresenceProps };