@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,160 +0,0 @@
1
- //#region src/data/types.d.ts
2
- type QueryConsistency = 'fresh' | 'stale' | 'refreshing' | 'pending-write';
3
- type QueryStaleReason = 'aborted' | 'error' | 'inconsistent';
4
- interface DataRuntime {
5
- readonly queryCache: Map<string, unknown>;
6
- }
7
- interface DataRuntimeOptions {
8
- queryCache?: Map<string, unknown>;
9
- }
10
- interface InvalidateOptions {
11
- markPendingWrite?: boolean;
12
- runtime?: DataRuntime;
13
- }
14
- interface InvalidateOnIntervalOptions extends InvalidateOptions {
15
- intervalMs: number;
16
- activeOn?: string | readonly string[];
17
- visibleOnly?: boolean;
18
- focusedOnly?: boolean;
19
- }
20
- type QueryKeyPart = string | number | boolean | null | undefined | readonly QueryKeyPart[] | {
21
- readonly [key: string]: QueryKeyPart;
22
- };
23
- interface QueryScope {
24
- key(...parts: QueryKeyPart[]): string;
25
- prefix(...parts: QueryKeyPart[]): string;
26
- invalidate(parts: readonly QueryKeyPart[], options?: InvalidateOptions): void;
27
- }
28
- type QueryControls = {
29
- refresh(): Promise<void>;
30
- };
31
- type QueryLoading = {
32
- data: null;
33
- error: null;
34
- loading: true;
35
- refreshing: false;
36
- stale: false;
37
- consistency: 'fresh';
38
- staleReason: null;
39
- };
40
- type QueryFresh<T> = {
41
- data: T;
42
- error: null;
43
- loading: false;
44
- refreshing: false;
45
- stale: false;
46
- consistency: 'fresh';
47
- staleReason: null;
48
- };
49
- type QueryRefreshing<T> = {
50
- data: T;
51
- error: null;
52
- loading: false;
53
- refreshing: true;
54
- stale: true;
55
- consistency: 'refreshing';
56
- staleReason: null;
57
- };
58
- type QueryPendingWrite<T> = {
59
- data: T;
60
- error: null;
61
- loading: false;
62
- refreshing: true;
63
- stale: true;
64
- consistency: 'pending-write';
65
- staleReason: null;
66
- };
67
- type QueryStaleValue<T> = {
68
- data: T;
69
- error: null;
70
- loading: false;
71
- refreshing: false;
72
- stale: true;
73
- consistency: 'stale';
74
- staleReason: 'aborted' | 'inconsistent';
75
- };
76
- type QueryStaleErrorWithValue<T> = {
77
- data: T;
78
- error: {};
79
- loading: false;
80
- refreshing: false;
81
- stale: true;
82
- consistency: 'stale';
83
- staleReason: 'error';
84
- };
85
- type QueryStaleError = {
86
- data: null;
87
- error: {};
88
- loading: false;
89
- refreshing: false;
90
- stale: true;
91
- consistency: 'stale';
92
- staleReason: 'error';
93
- };
94
- type Query<T extends {}> = QueryControls & (QueryLoading | QueryFresh<T> | QueryRefreshing<T> | QueryPendingWrite<T> | QueryStaleValue<T> | QueryStaleErrorWithValue<T> | QueryStaleError);
95
- type MutationControls<TInput, TResult> = {
96
- execute(input: TInput): Promise<TResult>;
97
- abort(): void;
98
- reset(): void;
99
- };
100
- type MutationIdle = {
101
- status: 'idle';
102
- pending: false;
103
- error: null;
104
- result: null;
105
- };
106
- type MutationPending = {
107
- status: 'pending';
108
- pending: true;
109
- error: null;
110
- result: null;
111
- };
112
- type MutationSuccess<TResult> = {
113
- status: 'success';
114
- pending: false;
115
- error: null;
116
- result: TResult;
117
- };
118
- type MutationError = {
119
- status: 'error';
120
- pending: false;
121
- error: {};
122
- result: null;
123
- };
124
- type Mutation<TInput, TResult> = MutationControls<TInput, TResult> & (MutationIdle | MutationPending | MutationSuccess<TResult> | MutationError);
125
- type MutationRecord<TResult> = {
126
- status: 'idle' | 'pending' | 'success' | 'error';
127
- error: {} | null;
128
- result: TResult | null;
129
- };
130
- type QueryOptions<T> = {
131
- key: string;
132
- fetch: (ctx: {
133
- signal: AbortSignal;
134
- }) => Promise<T>;
135
- isConsistent?: (data: T) => boolean;
136
- reconcile?: (data: T, ctx: {
137
- key: string;
138
- }) => Promise<boolean> | boolean;
139
- runtime?: DataRuntime;
140
- };
141
- type MutationOptions<TInput, TResult> = {
142
- action: (input: TInput, ctx: {
143
- signal: AbortSignal;
144
- }) => Promise<TResult>;
145
- affects?: (input: TInput, result: TResult) => string[];
146
- afterSuccess?: 'invalidate';
147
- runtime?: DataRuntime;
148
- };
149
- type QueryState<T> = {
150
- data: T | null;
151
- error: {} | null;
152
- loading: boolean;
153
- refreshing: boolean;
154
- stale: boolean;
155
- consistency: QueryConsistency;
156
- staleReason: QueryStaleReason | null;
157
- };
158
- type QueryDefinitionField = 'fetch' | 'isConsistent' | 'reconcile';
159
- //#endregion
160
- export { DataRuntime, DataRuntimeOptions, InvalidateOnIntervalOptions, InvalidateOptions, Mutation, MutationOptions, Query, QueryConsistency, QueryKeyPart, QueryOptions, QueryScope, QueryStaleReason, QueryState };
@@ -1,52 +0,0 @@
1
- import { JSXElement } from "../../common/jsx.js";
2
- import { IconProps, IconSizeToken, IconStyleObject } from "./icon.types.js";
3
-
4
- //#region src/foundations/icon/icon.d.ts
5
- declare function isIconSizeToken(value: unknown): value is IconSizeToken;
6
- declare function normalizeIconSizeValue(size: number | string): string;
7
- declare function resolveIconSizeVariable(size: number | string): string;
8
- declare function resolveIconStrokeWidthVariable(strokeWidth: number, sizeToken: IconSizeToken | undefined): string;
9
- declare function serializeIconStyle(style: string | IconStyleObject | undefined): string;
10
- declare function joinIconStyle(...styles: Array<string | undefined>): string | undefined;
11
- declare function getIconContractProps({
12
- size,
13
- strokeWidth,
14
- color,
15
- title,
16
- style,
17
- iconName
18
- }: Pick<IconProps, 'color' | 'iconName' | 'size' | 'strokeWidth' | 'style' | 'title'>): {
19
- sizeToken: IconSizeToken | undefined;
20
- decorative: string | undefined;
21
- iconStyle: string | undefined;
22
- attrs: {
23
- xmlns: string;
24
- width: string;
25
- height: string;
26
- fill: string;
27
- stroke: string;
28
- 'stroke-width': string;
29
- role: string;
30
- 'aria-hidden': string | undefined;
31
- style: string | undefined;
32
- 'data-slot': string;
33
- 'data-icon': string | undefined;
34
- 'data-size': IconSizeToken | undefined;
35
- 'data-decorative': string | undefined;
36
- 'data-color': string | undefined;
37
- };
38
- };
39
- declare function IconBase({
40
- size,
41
- strokeWidth,
42
- color,
43
- title,
44
- class: className,
45
- style,
46
- iconName,
47
- children,
48
- ref,
49
- ...rest
50
- }: IconProps): JSXElement;
51
- //#endregion
52
- export { IconBase, getIconContractProps, isIconSizeToken, joinIconStyle, normalizeIconSizeValue, resolveIconSizeVariable, resolveIconStrokeWidthVariable, serializeIconStyle };
@@ -1,86 +0,0 @@
1
- import { jsx, jsxs } from "../../jsx-runtime.js";
2
- //#region src/foundations/icon/icon.tsx
3
- const ICON_SIZE_TOKENS = [
4
- "sm",
5
- "md",
6
- "lg",
7
- "xl"
8
- ];
9
- function isIconSizeToken(value) {
10
- return typeof value === "string" && ICON_SIZE_TOKENS.includes(value);
11
- }
12
- function normalizeIconSizeValue(size) {
13
- if (typeof size === "number") return `${size}px`;
14
- return size;
15
- }
16
- function resolveIconSizeVariable(size) {
17
- if (isIconSizeToken(size)) return `var(--ak-icon-size-${size}, var(--ak-icon-size-md, 1.25rem))`;
18
- return normalizeIconSizeValue(size);
19
- }
20
- function resolveIconStrokeWidthVariable(strokeWidth, sizeToken) {
21
- if (sizeToken) return `var(--ak-icon-stroke-width-${sizeToken}, var(--ak-icon-stroke-width-md, ${strokeWidth}))`;
22
- return `var(--ak-icon-stroke-width-md, ${strokeWidth})`;
23
- }
24
- function camelToKebab(key) {
25
- return key.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`);
26
- }
27
- function serializeIconStyle(style) {
28
- if (!style) return "";
29
- if (typeof style === "string") return style.trim();
30
- return Object.entries(style).filter(([, value]) => value !== void 0 && value !== null).map(([key, value]) => `${camelToKebab(key)}:${String(value)}`).join(";");
31
- }
32
- function joinIconStyle(...styles) {
33
- const merged = styles.map((style) => style?.trim()).filter(Boolean);
34
- return merged.length > 0 ? merged.join(";") : void 0;
35
- }
36
- function getIconContractProps({ size = 20, strokeWidth = 2, color = "currentColor", title, style, iconName }) {
37
- const sizeToken = isIconSizeToken(size) ? size : void 0;
38
- const decorative = title ? void 0 : "true";
39
- const resolvedSize = resolveIconSizeVariable(size);
40
- const resolvedStrokeWidth = resolveIconStrokeWidthVariable(strokeWidth, sizeToken);
41
- const iconStyle = joinIconStyle(`--ak-icon-size:${resolvedSize}`, `--ak-icon-stroke-width:${resolvedStrokeWidth}`, "display:inline-block", "flex-shrink:0", "width:var(--ak-icon-size)", "height:var(--ak-icon-size)", "stroke-width:var(--ak-icon-stroke-width)", serializeIconStyle(style));
42
- return {
43
- sizeToken,
44
- decorative,
45
- iconStyle,
46
- attrs: {
47
- xmlns: "http://www.w3.org/2000/svg",
48
- width: "24",
49
- height: "24",
50
- fill: "none",
51
- stroke: color,
52
- "stroke-width": "var(--ak-icon-stroke-width)",
53
- role: "img",
54
- "aria-hidden": title ? void 0 : "true",
55
- style: iconStyle,
56
- "data-slot": "icon",
57
- "data-icon": iconName,
58
- "data-size": sizeToken,
59
- "data-decorative": decorative,
60
- "data-color": color === "currentColor" ? "current" : void 0
61
- }
62
- };
63
- }
64
- function IconBase({ size = 20, strokeWidth = 2, color = "currentColor", title, class: className, style, iconName, children, ref, ...rest }) {
65
- const { attrs } = getIconContractProps({
66
- size,
67
- strokeWidth,
68
- color,
69
- title,
70
- style,
71
- iconName
72
- });
73
- const finalChildren = title ? [jsx("title", { children: title }), children] : children;
74
- return jsxs("svg", {
75
- ...rest,
76
- ...attrs,
77
- viewBox: rest.viewBox ?? "0 0 24 24",
78
- "stroke-linecap": rest["stroke-linecap"] ?? "round",
79
- "stroke-linejoin": rest["stroke-linejoin"] ?? "round",
80
- class: className,
81
- ref,
82
- children: finalChildren
83
- });
84
- }
85
- //#endregion
86
- export { IconBase, getIconContractProps, isIconSizeToken, joinIconStyle, normalizeIconSizeValue, resolveIconSizeVariable, resolveIconStrokeWidthVariable, serializeIconStyle };
@@ -1,21 +0,0 @@
1
- import { Props } from "../../common/props.js";
2
- import { Ref } from "../utilities/compose-ref.js";
3
-
4
- //#region src/foundations/icon/icon.types.d.ts
5
- type IconSizeToken = 'sm' | 'md' | 'lg' | 'xl';
6
- type IconStyleObject = Record<string, unknown>;
7
- type IconOwnProps = {
8
- size?: number | string;
9
- strokeWidth?: number;
10
- color?: string;
11
- title?: string;
12
- class?: string;
13
- style?: string | IconStyleObject;
14
- iconName?: string;
15
- };
16
- type IconProps = Omit<Props, 'children' | 'class' | 'color' | 'height' | 'ref' | 'role' | 'stroke' | 'stroke-width' | 'style' | 'title' | 'width'> & IconOwnProps & {
17
- children?: unknown;
18
- ref?: Ref<SVGSVGElement>;
19
- };
20
- //#endregion
21
- export { IconOwnProps, IconProps, IconSizeToken, IconStyleObject };
@@ -1,71 +0,0 @@
1
- import { KeyboardLikeEvent, PointerLikeEvent } from "../utilities/event-types.js";
2
-
3
- //#region src/foundations/interactions/dismissable.d.ts
4
- /**
5
- * dismissable
6
- *
7
- * THE dismissal primitive. Handles Escape key and outside interactions.
8
- *
9
- * INVARIANTS:
10
- * 1. Returns props that compose via mergeProps (no factories)
11
- * 2. Disabled state respected exactly once, here
12
- * 3. No side effects - pure props generation
13
- * 4. Outside detection requires explicit node reference
14
- * 5. This is the ONLY dismissal primitive - do not create alternatives
15
- *
16
- * DESIGN:
17
- * - Returns standard event handler props (onKeyDown, onPointerDownCapture)
18
- * - Composable via mergeProps with other foundations
19
- * - Caller provides the protected node reference for outside detection
20
- * - Returned capture props must be attached to a surface that can observe both
21
- * the protected subtree and the outside interaction path (for example, an
22
- * overlay or wrapper around the protected node)
23
- * - Single onDismiss callback for all dismiss triggers
24
- *
25
- * PIT OF SUCCESS:
26
- * ✓ Can't accidentally bypass (only way to get dismiss behavior)
27
- * ✓ Can't duplicate (disabled checked once)
28
- * ✓ Composes via mergeProps (standard props)
29
- * ✓ Wrong usage is hard (no factories to misuse)
30
- *
31
- * USAGE:
32
- * const props = dismissable({
33
- * node: elementRef,
34
- * disabled: false,
35
- * onDismiss: () => close()
36
- * });
37
- *
38
- * <div {...props}>
39
- * <div ref={elementRef}>Content</div>
40
- * </div>
41
- *
42
- * MISUSE EXAMPLE (PREVENTED):
43
- * ❌ Can't forget to check disabled - checked inside dismissable
44
- * ❌ Can't create custom escape handler - this is the only one
45
- * ❌ Can't bypass via direct event listeners - mergeProps composes correctly
46
- */
47
- interface DismissableOptions {
48
- /**
49
- * Reference to the protected element for outside click detection. Attach the
50
- * returned capture props to a surface that encloses this node.
51
- */
52
- node?: Node | null;
53
- /**
54
- * Whether dismiss is disabled
55
- */
56
- disabled?: boolean;
57
- /**
58
- * Called when dismiss is triggered (Escape or outside click)
59
- */
60
- onDismiss?: (trigger: 'escape' | 'outside') => void;
61
- }
62
- declare function dismissable({
63
- node,
64
- disabled,
65
- onDismiss
66
- }: DismissableOptions): {
67
- onKeyDown: (e: KeyboardLikeEvent) => void;
68
- onPointerDownCapture: (e: PointerLikeEvent) => void;
69
- };
70
- //#endregion
71
- export { DismissableOptions, dismissable };
@@ -1,24 +0,0 @@
1
- //#region src/foundations/interactions/dismissable.ts
2
- function dismissable({ node, disabled, onDismiss }) {
3
- function handleKeyDown(e) {
4
- if (disabled) return;
5
- if (e.key === "Escape") {
6
- e.preventDefault?.();
7
- e.stopPropagation?.();
8
- onDismiss?.("escape");
9
- }
10
- }
11
- function handlePointerDownCapture(e) {
12
- if (disabled) return;
13
- const target = e.target;
14
- if (!(target instanceof Node)) return;
15
- if (!node) return;
16
- if (!node.contains(target)) onDismiss?.("outside");
17
- }
18
- return {
19
- onKeyDown: handleKeyDown,
20
- onPointerDownCapture: handlePointerDownCapture
21
- };
22
- }
23
- //#endregion
24
- export { dismissable };
@@ -1,21 +0,0 @@
1
- //#region src/foundations/interactions/focusable.d.ts
2
- /**
3
- * focusable
4
- *
5
- * Normalize focus-related props for hosts.
6
- * - No DOM manipulation here; returns props that the runtime may attach.
7
- */
8
- interface FocusableOptions {
9
- disabled?: boolean;
10
- tabIndex?: number | undefined;
11
- }
12
- interface FocusableResult {
13
- tabIndex?: number;
14
- 'aria-disabled'?: 'true';
15
- }
16
- declare function focusable({
17
- disabled,
18
- tabIndex
19
- }: FocusableOptions): FocusableResult;
20
- //#endregion
21
- export { FocusableOptions, FocusableResult, focusable };
@@ -1,16 +0,0 @@
1
- import { ariaDisabled } from "../utilities/aria.js";
2
- //#region src/foundations/interactions/focusable.ts
3
- /**
4
- * focusable
5
- *
6
- * Normalize focus-related props for hosts.
7
- * - No DOM manipulation here; returns props that the runtime may attach.
8
- */
9
- function focusable({ disabled, tabIndex }) {
10
- return {
11
- tabIndex: disabled ? -1 : tabIndex === void 0 ? 0 : tabIndex,
12
- ...ariaDisabled(disabled)
13
- };
14
- }
15
- //#endregion
16
- export { focusable };
@@ -1,25 +0,0 @@
1
- import { DefaultPreventable, PropagationStoppable } from "../utilities/event-types.js";
2
-
3
- //#region src/foundations/interactions/hoverable.d.ts
4
- /**
5
- * hoverable
6
- *
7
- * Produces props for pointer enter/leave handling. Pure and deterministic.
8
- */
9
- interface HoverableOptions {
10
- disabled?: boolean;
11
- onEnter?: (e: HoverEvent) => void;
12
- onLeave?: (e: HoverEvent) => void;
13
- }
14
- type HoverEvent = DefaultPreventable & PropagationStoppable;
15
- interface HoverableResult {
16
- onPointerEnter?: (e: HoverEvent) => void;
17
- onPointerLeave?: (e: HoverEvent) => void;
18
- }
19
- declare function hoverable({
20
- disabled,
21
- onEnter,
22
- onLeave
23
- }: HoverableOptions): HoverableResult;
24
- //#endregion
25
- export { HoverableOptions, HoverableResult, hoverable };
@@ -1,13 +0,0 @@
1
- //#region src/foundations/interactions/hoverable.ts
2
- function hoverable({ disabled, onEnter, onLeave }) {
3
- return {
4
- onPointerEnter: disabled ? void 0 : (e) => {
5
- onEnter?.(e);
6
- },
7
- onPointerLeave: disabled ? void 0 : (e) => {
8
- onLeave?.(e);
9
- }
10
- };
11
- }
12
- //#endregion
13
- export { hoverable };
@@ -1,49 +0,0 @@
1
- import { Ref } from "../utilities/compose-ref.js";
2
- import { DefaultPreventable, KeyboardLikeEvent, PropagationStoppable } from "../utilities/event-types.js";
3
- //#region src/foundations/interactions/interaction-policy.d.ts
4
- interface InteractionPolicyInput {
5
- /** Whether the host element is a native interactive element (button, a, etc) */
6
- isNative: boolean;
7
- /** Disabled state - checked ONLY here, never in components */
8
- disabled: boolean;
9
- /** User-provided press handler - semantic action, not DOM event */
10
- onPress?: (e: Event) => void;
11
- /** Optional ref to compose */
12
- ref?: Ref<unknown>;
13
- }
14
- /**
15
- * THE interaction policy. Components MUST use this, NEVER implement
16
- * interaction logic directly.
17
- */
18
- declare function applyInteractionPolicy({
19
- isNative,
20
- disabled,
21
- onPress,
22
- ref
23
- }: InteractionPolicyInput): {
24
- disabled: true | undefined;
25
- onClick: (e: Event) => void;
26
- ref: Ref<unknown>;
27
- } | {
28
- tabIndex: number;
29
- ref: Ref<unknown>;
30
- 'aria-disabled'?: "true";
31
- onClick: (e: DefaultPreventable & PropagationStoppable) => void;
32
- disabled?: true;
33
- role?: "button";
34
- onKeyDown?: (e: KeyboardLikeEvent) => void;
35
- onKeyUp?: (e: KeyboardLikeEvent) => void;
36
- };
37
- /**
38
- * Merge rule for Slot / asChild
39
- *
40
- * Precedence:
41
- * policy → user → child
42
- *
43
- * Event handlers are composed (policy first).
44
- * Refs are always composed.
45
- * Policy props MUST take precedence to enforce invariants.
46
- */
47
- declare function mergeInteractionProps(childProps: Record<string, unknown>, policyProps: Record<string, unknown>, userProps?: Record<string, unknown>): Record<string, unknown>;
48
- //#endregion
49
- export { InteractionPolicyInput, applyInteractionPolicy, mergeInteractionProps };
@@ -1,120 +0,0 @@
1
- import { composeHandlers } from "../utilities/compose-handlers.js";
2
- import { mergeProps } from "../utilities/merge-props.js";
3
- import { ariaDisabled } from "../utilities/aria.js";
4
- import { composeRefs } from "../utilities/compose-ref.js";
5
- import { pressable } from "./pressable.js";
6
- //#region src/foundations/interactions/interaction-policy.ts
7
- /**
8
- * INTERACTION POLICY (FRAMEWORK LAW)
9
- *
10
- * This is THE ONLY way to create interactive elements. Components MUST NOT
11
- * implement interaction logic directly.
12
- *
13
- * INVARIANTS (ENFORCED):
14
- * 1. "Press" is the semantic. Click/touch/Enter/Space are implementation details.
15
- * 2. Disabled is enforced exactly once, here. Components may not check disabled.
16
- * 3. Keyboard handling is automatic. Components may not add onKeyDown for activation.
17
- * 4. Native elements opt out of polyfills, not semantics.
18
- * 5. asChild may replace the host element, not interaction behavior.
19
- * 6. This policy is the SINGLE SOURCE OF TRUTH for interactive behavior.
20
- *
21
- * DESIGN:
22
- * - Single public function: applyInteractionPolicy
23
- * - Returns props that compose via mergeProps
24
- * - Delegates to pressable for mechanics
25
- * - Enforces disabled once and only once
26
- * - No configuration beyond disabled and native element type
27
- *
28
- * PIT OF SUCCESS:
29
- * ✓ Can't bypass policy (only way to get interaction behavior)
30
- * ✓ Can't duplicate disabled checks (enforced once, here)
31
- * ✓ Can't write custom keyboard handlers for buttons (policy owns it)
32
- * ✓ Composes via mergeProps (standard props)
33
- * ✓ Wrong usage is impossible (no escape hatch)
34
- *
35
- * USAGE:
36
- * function Button({ onPress, disabled }) {
37
- * const interaction = applyInteractionPolicy({
38
- * isNative: true,
39
- * disabled,
40
- * onPress
41
- * });
42
- *
43
- * return <button {...interaction}>Click me</button>;
44
- * }
45
- *
46
- * MISUSE EXAMPLE (PREVENTED):
47
- * ❌ Button checking disabled again:
48
- * function Button({ disabled, onPress }) {
49
- * if (disabled) return; // NO! Policy handles this
50
- * const interaction = applyInteractionPolicy(...);
51
- * }
52
- *
53
- * ❌ Custom keyboard handler:
54
- * function Button({ onPress }) {
55
- * const interaction = applyInteractionPolicy(...);
56
- * return <button {...interaction} onKeyDown={...}>; // NO! Policy owns this
57
- * }
58
- *
59
- * ❌ Direct event handler:
60
- * <button onClick={onPress}>; // NO! Use applyInteractionPolicy
61
- */
62
- /**
63
- * THE interaction policy. Components MUST use this, NEVER implement
64
- * interaction logic directly.
65
- */
66
- function applyInteractionPolicy({ isNative, disabled, onPress, ref }) {
67
- function invokePress(e) {
68
- if (disabled) {
69
- e.preventDefault?.();
70
- return;
71
- }
72
- onPress?.(e);
73
- }
74
- if (isNative) return {
75
- disabled: disabled || void 0,
76
- onClick: (e) => invokePress(e),
77
- ref
78
- };
79
- const interaction = pressable({
80
- disabled,
81
- isNativeButton: false,
82
- onPress: (e) => invokePress(e)
83
- });
84
- return {
85
- ...interaction,
86
- ...ariaDisabled(disabled),
87
- tabIndex: disabled ? -1 : interaction.tabIndex ?? 0,
88
- ref
89
- };
90
- }
91
- /**
92
- * Merge rule for Slot / asChild
93
- *
94
- * Precedence:
95
- * policy → user → child
96
- *
97
- * Event handlers are composed (policy first).
98
- * Refs are always composed.
99
- * Policy props MUST take precedence to enforce invariants.
100
- */
101
- function mergeInteractionProps(childProps, policyProps, userProps) {
102
- const out = mergeProps(policyProps, userProps ? mergeProps(userProps, childProps) : childProps);
103
- for (const k in out) {
104
- if (!k.startsWith("on")) continue;
105
- const policyHandler = policyProps?.[k];
106
- const userHandler = userProps?.[k];
107
- const childHandler = childProps?.[k];
108
- if (policyHandler || userHandler || childHandler) {
109
- const toHandler = (h) => typeof h === "function" ? h : void 0;
110
- out[k] = composeHandlers(toHandler(policyHandler), composeHandlers(toHandler(userHandler), toHandler(childHandler)));
111
- }
112
- }
113
- const childRef = childProps?.ref;
114
- const userRef = userProps?.ref;
115
- const policyRef = policyProps?.ref;
116
- out.ref = composeRefs(childRef, userRef, policyRef);
117
- return out;
118
- }
119
- //#endregion
120
- export { applyInteractionPolicy, mergeInteractionProps };