@askrjs/askr 0.0.28 → 0.0.30

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 (457) hide show
  1. package/README.md +44 -172
  2. package/dist/_virtual/_rolldown/runtime.js +7 -0
  3. package/dist/bench/components/benchmark-row.d.ts +20 -0
  4. package/dist/bench/components/benchmark-row.d.ts.map +1 -0
  5. package/dist/bench/components/benchmark-row.js +42 -0
  6. package/dist/bench/components/benchmark-row.js.map +1 -0
  7. package/dist/bench/components/benchmark-table.js +25 -0
  8. package/dist/bench/components/benchmark-table.js.map +1 -0
  9. package/dist/benchmark.d.ts +22 -0
  10. package/dist/benchmark.d.ts.map +1 -0
  11. package/dist/benchmark.js +64 -1
  12. package/dist/benchmark.js.map +1 -0
  13. package/dist/bin/askr-ssg.d.ts +22 -26
  14. package/dist/bin/askr-ssg.d.ts.map +1 -1
  15. package/dist/bin/askr-ssg.js +149 -2
  16. package/dist/bin/askr-ssg.js.map +1 -0
  17. package/dist/boot/index.d.ts +64 -42
  18. package/dist/boot/index.d.ts.map +1 -1
  19. package/dist/boot/index.js +416 -2
  20. package/dist/boot/index.js.map +1 -0
  21. package/dist/common/component.d.ts +14 -13
  22. package/dist/common/component.d.ts.map +1 -1
  23. package/dist/common/control.d.ts +13 -0
  24. package/dist/common/control.d.ts.map +1 -0
  25. package/dist/common/control.js +14 -0
  26. package/dist/common/control.js.map +1 -0
  27. package/dist/common/env.js +47 -0
  28. package/dist/common/env.js.map +1 -0
  29. package/dist/common/jsx.d.ts +17 -15
  30. package/dist/common/jsx.d.ts.map +1 -1
  31. package/dist/common/jsx.js +8 -1
  32. package/dist/common/jsx.js.map +1 -0
  33. package/dist/common/props.d.ts +14 -11
  34. package/dist/common/props.d.ts.map +1 -1
  35. package/dist/common/router.d.ts +190 -32
  36. package/dist/common/router.d.ts.map +1 -1
  37. package/dist/common/ssr-errors.d.ts +6 -3
  38. package/dist/common/ssr-errors.d.ts.map +1 -1
  39. package/dist/common/ssr-errors.js +16 -1
  40. package/dist/common/ssr-errors.js.map +1 -0
  41. package/dist/common/ssr.d.ts +12 -9
  42. package/dist/common/ssr.d.ts.map +1 -1
  43. package/dist/common/vnode.d.ts +17 -15
  44. package/dist/common/vnode.d.ts.map +1 -1
  45. package/dist/common/vnode.js +10 -1
  46. package/dist/common/vnode.js.map +1 -0
  47. package/dist/components/link.d.ts +37 -25
  48. package/dist/components/link.d.ts.map +1 -1
  49. package/dist/components/link.js +64 -1
  50. package/dist/components/link.js.map +1 -0
  51. package/dist/control/case.d.ts +17 -0
  52. package/dist/control/case.d.ts.map +1 -0
  53. package/dist/control/case.js +69 -0
  54. package/dist/control/case.js.map +1 -0
  55. package/dist/control/for.d.ts +23 -0
  56. package/dist/control/for.d.ts.map +1 -0
  57. package/dist/control/for.js +62 -0
  58. package/dist/control/for.js.map +1 -0
  59. package/dist/control/index.d.ts +4 -0
  60. package/dist/control/index.js +4 -0
  61. package/dist/control/shared.js +20 -0
  62. package/dist/control/shared.js.map +1 -0
  63. package/dist/control/show.d.ts +14 -0
  64. package/dist/control/show.d.ts.map +1 -0
  65. package/dist/control/show.js +33 -0
  66. package/dist/control/show.js.map +1 -0
  67. package/dist/dev/invariant.js +29 -2
  68. package/dist/dev/invariant.js.map +1 -0
  69. package/dist/dev/logger.js +37 -1
  70. package/dist/dev/logger.js.map +1 -0
  71. package/dist/foundations/core.d.ts +15 -23
  72. package/dist/foundations/core.js +13 -1
  73. package/dist/foundations/icon/icon.d.ts +53 -0
  74. package/dist/foundations/icon/icon.d.ts.map +1 -0
  75. package/dist/foundations/icon/icon.js +88 -0
  76. package/dist/foundations/icon/icon.js.map +1 -0
  77. package/dist/foundations/icon/icon.types.d.ts +21 -0
  78. package/dist/foundations/icon/icon.types.d.ts.map +1 -0
  79. package/dist/foundations/index.d.ts +23 -3
  80. package/dist/foundations/index.js +22 -1
  81. package/dist/foundations/interactions/dismissable.d.ts +25 -17
  82. package/dist/foundations/interactions/dismissable.d.ts.map +1 -1
  83. package/dist/foundations/interactions/dismissable.js +26 -1
  84. package/dist/foundations/interactions/dismissable.js.map +1 -0
  85. package/dist/foundations/interactions/focusable.d.ts +13 -7
  86. package/dist/foundations/interactions/focusable.d.ts.map +1 -1
  87. package/dist/foundations/interactions/focusable.js +18 -1
  88. package/dist/foundations/interactions/focusable.js.map +1 -0
  89. package/dist/foundations/interactions/hoverable.d.ts +17 -10
  90. package/dist/foundations/interactions/hoverable.d.ts.map +1 -1
  91. package/dist/foundations/interactions/hoverable.js +15 -1
  92. package/dist/foundations/interactions/hoverable.js.map +1 -0
  93. package/dist/foundations/interactions/interaction-policy.d.ts +32 -78
  94. package/dist/foundations/interactions/interaction-policy.d.ts.map +1 -1
  95. package/dist/foundations/interactions/interaction-policy.js +122 -1
  96. package/dist/foundations/interactions/interaction-policy.js.map +1 -0
  97. package/dist/foundations/interactions/pressable.d.ts +25 -18
  98. package/dist/foundations/interactions/pressable.d.ts.map +1 -1
  99. package/dist/foundations/interactions/pressable.js +51 -1
  100. package/dist/foundations/interactions/pressable.js.map +1 -0
  101. package/dist/foundations/interactions/roving-focus.d.ts +49 -114
  102. package/dist/foundations/interactions/roving-focus.d.ts.map +1 -1
  103. package/dist/foundations/interactions/roving-focus.js +71 -1
  104. package/dist/foundations/interactions/roving-focus.js.map +1 -0
  105. package/dist/foundations/state/controllable.d.ts +22 -41
  106. package/dist/foundations/state/controllable.d.ts.map +1 -1
  107. package/dist/foundations/state/controllable.js +81 -1
  108. package/dist/foundations/state/controllable.js.map +1 -0
  109. package/dist/foundations/structures/collection.d.ts +25 -40
  110. package/dist/foundations/structures/collection.d.ts.map +1 -1
  111. package/dist/foundations/structures/collection.js +51 -1
  112. package/dist/foundations/structures/collection.js.map +1 -0
  113. package/dist/foundations/structures/layer.d.ts +47 -68
  114. package/dist/foundations/structures/layer.d.ts.map +1 -1
  115. package/dist/foundations/structures/layer.js +81 -1
  116. package/dist/foundations/structures/layer.js.map +1 -0
  117. package/dist/foundations/structures/layout.d.ts +6 -3
  118. package/dist/foundations/structures/layout.d.ts.map +1 -1
  119. package/dist/foundations/structures/layout.js +13 -1
  120. package/dist/foundations/structures/layout.js.map +1 -0
  121. package/dist/foundations/structures/portal.d.ts +17 -10
  122. package/dist/foundations/structures/portal.d.ts.map +1 -1
  123. package/dist/foundations/structures/portal.js +105 -1
  124. package/dist/foundations/structures/portal.js.map +1 -0
  125. package/dist/foundations/structures/presence.d.ts +11 -5
  126. package/dist/foundations/structures/presence.d.ts.map +1 -1
  127. package/dist/foundations/structures/presence.js +39 -1
  128. package/dist/foundations/structures/presence.js.map +1 -0
  129. package/dist/foundations/structures/slot.d.ts +11 -8
  130. package/dist/foundations/structures/slot.d.ts.map +1 -1
  131. package/dist/foundations/structures/slot.js +41 -1
  132. package/dist/foundations/structures/slot.js.map +1 -0
  133. package/dist/foundations/structures.d.ts +7 -14
  134. package/dist/foundations/structures.js +6 -1
  135. package/dist/foundations/utilities/aria.d.ts +9 -6
  136. package/dist/foundations/utilities/aria.d.ts.map +1 -1
  137. package/dist/foundations/utilities/aria.js +17 -1
  138. package/dist/foundations/utilities/aria.js.map +1 -0
  139. package/dist/foundations/utilities/compose-handlers.d.ts +10 -7
  140. package/dist/foundations/utilities/compose-handlers.d.ts.map +1 -1
  141. package/dist/foundations/utilities/compose-handlers.js +20 -1
  142. package/dist/foundations/utilities/compose-handlers.js.map +1 -0
  143. package/dist/foundations/utilities/compose-ref.d.ts +7 -4
  144. package/dist/foundations/utilities/compose-ref.d.ts.map +1 -1
  145. package/dist/foundations/utilities/compose-ref.js +18 -1
  146. package/dist/foundations/utilities/compose-ref.js.map +1 -0
  147. package/dist/foundations/utilities/event-types.d.ts +14 -11
  148. package/dist/foundations/utilities/event-types.d.ts.map +1 -1
  149. package/dist/foundations/utilities/merge-props.d.ts +4 -1
  150. package/dist/foundations/utilities/merge-props.d.ts.map +1 -1
  151. package/dist/foundations/utilities/merge-props.js +49 -1
  152. package/dist/foundations/utilities/merge-props.js.map +1 -0
  153. package/dist/foundations/utilities/use-id.d.ts +9 -6
  154. package/dist/foundations/utilities/use-id.d.ts.map +1 -1
  155. package/dist/foundations/utilities/use-id.js +29 -1
  156. package/dist/foundations/utilities/use-id.js.map +1 -0
  157. package/dist/fx/fx.d.ts +24 -21
  158. package/dist/fx/fx.d.ts.map +1 -1
  159. package/dist/fx/fx.js +212 -1
  160. package/dist/fx/fx.js.map +1 -0
  161. package/dist/fx/index.d.ts +4 -7
  162. package/dist/fx/index.js +4 -1
  163. package/dist/fx/noop.js +9 -1
  164. package/dist/fx/noop.js.map +1 -0
  165. package/dist/fx/timing.d.ts +24 -21
  166. package/dist/fx/timing.d.ts.map +1 -1
  167. package/dist/fx/timing.js +236 -1
  168. package/dist/fx/timing.js.map +1 -0
  169. package/dist/index.d.ts +21 -23
  170. package/dist/index.js +34 -1
  171. package/dist/index.js.map +1 -0
  172. package/dist/jsx/index.d.ts +1 -4
  173. package/dist/jsx/index.js +3 -1
  174. package/dist/jsx/types.d.ts +18 -25
  175. package/dist/jsx/types.d.ts.map +1 -1
  176. package/dist/jsx/types.js +1 -1
  177. package/dist/jsx/utils.d.ts +4 -3
  178. package/dist/jsx/utils.d.ts.map +1 -1
  179. package/dist/jsx/utils.js +19 -1
  180. package/dist/jsx/utils.js.map +1 -0
  181. package/dist/jsx-dev-runtime.d.ts +8 -0
  182. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  183. package/dist/jsx-dev-runtime.js +32 -1
  184. package/dist/jsx-dev-runtime.js.map +1 -0
  185. package/dist/jsx-runtime.d.ts +12 -0
  186. package/dist/jsx-runtime.d.ts.map +1 -0
  187. package/dist/jsx-runtime.js +45 -1
  188. package/dist/jsx-runtime.js.map +1 -0
  189. package/dist/jsx-runtime2.d.ts +2 -0
  190. package/dist/jsx-runtime2.js +3 -0
  191. package/dist/renderer/children.js +293 -0
  192. package/dist/renderer/children.js.map +1 -0
  193. package/dist/renderer/cleanup.js +150 -1
  194. package/dist/renderer/cleanup.js.map +1 -0
  195. package/dist/renderer/dom.js +2439 -1
  196. package/dist/renderer/dom.js.map +1 -0
  197. package/dist/renderer/env.js +1 -0
  198. package/dist/renderer/evaluate.js +450 -1
  199. package/dist/renderer/evaluate.js.map +1 -0
  200. package/dist/renderer/fastpath.js +145 -1
  201. package/dist/renderer/fastpath.js.map +1 -0
  202. package/dist/renderer/index.js +24 -1
  203. package/dist/renderer/index.js.map +1 -0
  204. package/dist/renderer/keyed.js +119 -1
  205. package/dist/renderer/keyed.js.map +1 -0
  206. package/dist/renderer/reconcile.js +359 -1
  207. package/dist/renderer/reconcile.js.map +1 -0
  208. package/dist/renderer/types.js +1 -1
  209. package/dist/renderer/utils.js +220 -1
  210. package/dist/renderer/utils.js.map +1 -0
  211. package/dist/resources/index.d.ts +3 -9
  212. package/dist/resources/index.js +3 -1
  213. package/dist/router/index.d.ts +6 -10
  214. package/dist/router/index.js +5 -1
  215. package/dist/router/match.js +83 -1
  216. package/dist/router/match.js.map +1 -0
  217. package/dist/router/navigate.d.ts +20 -8
  218. package/dist/router/navigate.d.ts.map +1 -1
  219. package/dist/router/navigate.js +288 -1
  220. package/dist/router/navigate.js.map +1 -0
  221. package/dist/router/policy.d.ts +22 -0
  222. package/dist/router/policy.d.ts.map +1 -0
  223. package/dist/router/policy.js +116 -0
  224. package/dist/router/policy.js.map +1 -0
  225. package/dist/router/route-context.js +79 -0
  226. package/dist/router/route-context.js.map +1 -0
  227. package/dist/router/route.d.ts +101 -34
  228. package/dist/router/route.d.ts.map +1 -1
  229. package/dist/router/route.js +599 -1
  230. package/dist/router/route.js.map +1 -0
  231. package/dist/runtime/child-scope.d.ts +21 -0
  232. package/dist/runtime/child-scope.d.ts.map +1 -0
  233. package/dist/runtime/child-scope.js +77 -0
  234. package/dist/runtime/child-scope.js.map +1 -0
  235. package/dist/runtime/component.d.ts +67 -56
  236. package/dist/runtime/component.d.ts.map +1 -1
  237. package/dist/runtime/component.js +462 -1
  238. package/dist/runtime/component.js.map +1 -0
  239. package/dist/runtime/context.d.ts +28 -42
  240. package/dist/runtime/context.d.ts.map +1 -1
  241. package/dist/runtime/context.js +205 -1
  242. package/dist/runtime/context.js.map +1 -0
  243. package/dist/runtime/control.d.ts +43 -0
  244. package/dist/runtime/control.d.ts.map +1 -0
  245. package/dist/runtime/control.js +125 -0
  246. package/dist/runtime/control.js.map +1 -0
  247. package/dist/runtime/derive.d.ts +12 -9
  248. package/dist/runtime/derive.d.ts.map +1 -1
  249. package/dist/runtime/derive.js +134 -1
  250. package/dist/runtime/derive.js.map +1 -0
  251. package/dist/runtime/dev-namespace.js +57 -1
  252. package/dist/runtime/dev-namespace.js.map +1 -0
  253. package/dist/runtime/effect.d.ts +32 -0
  254. package/dist/runtime/effect.d.ts.map +1 -0
  255. package/dist/runtime/effect.js +146 -0
  256. package/dist/runtime/effect.js.map +1 -0
  257. package/dist/runtime/events.js +162 -1
  258. package/dist/runtime/events.js.map +1 -0
  259. package/dist/runtime/execution-model.js +15 -1
  260. package/dist/runtime/execution-model.js.map +1 -0
  261. package/dist/runtime/fastlane.js +204 -1
  262. package/dist/runtime/fastlane.js.map +1 -0
  263. package/dist/runtime/for-bench.d.ts +41 -0
  264. package/dist/runtime/for-bench.d.ts.map +1 -0
  265. package/dist/runtime/for-bench.js +173 -0
  266. package/dist/runtime/for-bench.js.map +1 -0
  267. package/dist/runtime/for.d.ts +62 -49
  268. package/dist/runtime/for.d.ts.map +1 -1
  269. package/dist/runtime/for.js +668 -1
  270. package/dist/runtime/for.js.map +1 -0
  271. package/dist/runtime/operations.d.ts +18 -15
  272. package/dist/runtime/operations.d.ts.map +1 -1
  273. package/dist/runtime/operations.js +209 -1
  274. package/dist/runtime/operations.js.map +1 -0
  275. package/dist/runtime/perf-metrics.js +64 -1
  276. package/dist/runtime/perf-metrics.js.map +1 -0
  277. package/dist/runtime/readable.d.ts +24 -18
  278. package/dist/runtime/readable.d.ts.map +1 -1
  279. package/dist/runtime/readable.js +118 -1
  280. package/dist/runtime/readable.js.map +1 -0
  281. package/dist/runtime/resource-cell.js +102 -1
  282. package/dist/runtime/resource-cell.js.map +1 -0
  283. package/dist/runtime/scheduler.d.ts +51 -50
  284. package/dist/runtime/scheduler.d.ts.map +1 -1
  285. package/dist/runtime/scheduler.js +328 -1
  286. package/dist/runtime/scheduler.js.map +1 -0
  287. package/dist/runtime/selector.d.ts +7 -5
  288. package/dist/runtime/selector.d.ts.map +1 -1
  289. package/dist/runtime/selector.js +188 -1
  290. package/dist/runtime/selector.js.map +1 -0
  291. package/dist/runtime/ssr-bridge.js +24 -1
  292. package/dist/runtime/ssr-bridge.js.map +1 -0
  293. package/dist/runtime/state.d.ts +11 -19
  294. package/dist/runtime/state.d.ts.map +1 -1
  295. package/dist/runtime/state.js +99 -1
  296. package/dist/runtime/state.js.map +1 -0
  297. package/dist/ssg/batch-render.d.ts +10 -10
  298. package/dist/ssg/batch-render.d.ts.map +1 -1
  299. package/dist/ssg/batch-render.js +84 -1
  300. package/dist/ssg/batch-render.js.map +1 -0
  301. package/dist/ssg/create-static-gen.d.ts +28 -29
  302. package/dist/ssg/create-static-gen.d.ts.map +1 -1
  303. package/dist/ssg/create-static-gen.js +282 -1
  304. package/dist/ssg/create-static-gen.js.map +1 -0
  305. package/dist/ssg/generate-metadata.d.ts +12 -15
  306. package/dist/ssg/generate-metadata.d.ts.map +1 -1
  307. package/dist/ssg/generate-metadata.js +94 -1
  308. package/dist/ssg/generate-metadata.js.map +1 -0
  309. package/dist/ssg/incremental-manifest.js +56 -1
  310. package/dist/ssg/incremental-manifest.js.map +1 -0
  311. package/dist/ssg/index.d.ts +8 -28
  312. package/dist/ssg/index.js +7 -1
  313. package/dist/ssg/resolve-ssg-data.d.ts +10 -13
  314. package/dist/ssg/resolve-ssg-data.d.ts.map +1 -1
  315. package/dist/ssg/resolve-ssg-data.js +46 -1
  316. package/dist/ssg/resolve-ssg-data.js.map +1 -0
  317. package/dist/ssg/route-utils.d.ts +14 -10
  318. package/dist/ssg/route-utils.d.ts.map +1 -1
  319. package/dist/ssg/route-utils.js +24 -1
  320. package/dist/ssg/route-utils.js.map +1 -0
  321. package/dist/ssg/types.d.ts +157 -144
  322. package/dist/ssg/types.d.ts.map +1 -1
  323. package/dist/ssg/write-static-files.d.ts +8 -14
  324. package/dist/ssg/write-static-files.d.ts.map +1 -1
  325. package/dist/ssg/write-static-files.js +73 -1
  326. package/dist/ssg/write-static-files.js.map +1 -0
  327. package/dist/ssr/attrs.js +93 -1
  328. package/dist/ssr/attrs.js.map +1 -0
  329. package/dist/ssr/context.d.ts +31 -35
  330. package/dist/ssr/context.d.ts.map +1 -1
  331. package/dist/ssr/context.js +63 -1
  332. package/dist/ssr/context.js.map +1 -0
  333. package/dist/ssr/errors.d.ts +6 -4
  334. package/dist/ssr/errors.d.ts.map +1 -1
  335. package/dist/ssr/errors.js +4 -1
  336. package/dist/ssr/errors.js.map +1 -0
  337. package/dist/ssr/escape.js +153 -1
  338. package/dist/ssr/escape.js.map +1 -0
  339. package/dist/ssr/index.d.ts +74 -72
  340. package/dist/ssr/index.d.ts.map +1 -1
  341. package/dist/ssr/index.js +543 -1
  342. package/dist/ssr/index.js.map +1 -0
  343. package/dist/ssr/render-keys.d.ts +27 -29
  344. package/dist/ssr/render-keys.d.ts.map +1 -1
  345. package/dist/ssr/render-keys.js +39 -1
  346. package/dist/ssr/render-keys.js.map +1 -0
  347. package/dist/ssr/sink.js +86 -1
  348. package/dist/ssr/sink.js.map +1 -0
  349. package/dist/ssr/stream-render.js +76 -1
  350. package/dist/ssr/stream-render.js.map +1 -0
  351. package/dist/ssr/types.d.ts +14 -13
  352. package/dist/ssr/types.d.ts.map +1 -1
  353. package/package.json +49 -69
  354. package/dist/_virtual/___vite-browser-external.js +0 -1
  355. package/dist/_virtual/__vite-browser-external.js +0 -1
  356. package/dist/_virtual/_commonjsHelpers.js +0 -1
  357. package/dist/_virtual/_fs.js +0 -1
  358. package/dist/_virtual/_path.js +0 -1
  359. package/dist/_virtual/main.js +0 -1
  360. package/dist/_virtual/preload-helper.js +0 -1
  361. package/dist/bench/benchmark-entry.d.ts +0 -14
  362. package/dist/bench/benchmark-entry.d.ts.map +0 -1
  363. package/dist/common/errors.d.ts +0 -53
  364. package/dist/common/errors.d.ts.map +0 -1
  365. package/dist/common/index.d.ts +0 -14
  366. package/dist/common/index.d.ts.map +0 -1
  367. package/dist/dev/invariant.d.ts +0 -83
  368. package/dist/dev/invariant.d.ts.map +0 -1
  369. package/dist/dev/logger.d.ts +0 -13
  370. package/dist/dev/logger.d.ts.map +0 -1
  371. package/dist/dev/vite-plugin-askr.d.ts +0 -25
  372. package/dist/dev/vite-plugin-askr.d.ts.map +0 -1
  373. package/dist/dev/warnings.d.ts +0 -5
  374. package/dist/dev/warnings.d.ts.map +0 -1
  375. package/dist/for/for.d.ts +0 -16
  376. package/dist/for/for.d.ts.map +0 -1
  377. package/dist/for/for.js +0 -1
  378. package/dist/for/index.d.ts +0 -2
  379. package/dist/for/index.d.ts.map +0 -1
  380. package/dist/for/index.js +0 -1
  381. package/dist/foundations/core.d.ts.map +0 -1
  382. package/dist/foundations/index.d.ts.map +0 -1
  383. package/dist/foundations/interactions/index.d.ts +0 -5
  384. package/dist/foundations/interactions/index.d.ts.map +0 -1
  385. package/dist/foundations/state/index.d.ts +0 -2
  386. package/dist/foundations/state/index.d.ts.map +0 -1
  387. package/dist/foundations/structures/index.d.ts +0 -5
  388. package/dist/foundations/structures/index.d.ts.map +0 -1
  389. package/dist/foundations/structures.d.ts.map +0 -1
  390. package/dist/foundations/utilities/index.d.ts +0 -7
  391. package/dist/foundations/utilities/index.d.ts.map +0 -1
  392. package/dist/fx/index.d.ts.map +0 -1
  393. package/dist/fx/noop.d.ts +0 -12
  394. package/dist/fx/noop.d.ts.map +0 -1
  395. package/dist/index.d.ts.map +0 -1
  396. package/dist/jsx/index.d.ts.map +0 -1
  397. package/dist/jsx/jsx-dev-runtime.d.ts +0 -4
  398. package/dist/jsx/jsx-dev-runtime.d.ts.map +0 -1
  399. package/dist/jsx/jsx-runtime.d.ts +0 -10
  400. package/dist/jsx/jsx-runtime.d.ts.map +0 -1
  401. package/dist/node_modules/esbuild/lib/main.js +0 -65
  402. package/dist/renderer/cleanup.d.ts +0 -28
  403. package/dist/renderer/cleanup.d.ts.map +0 -1
  404. package/dist/renderer/dom.d.ts +0 -64
  405. package/dist/renderer/dom.d.ts.map +0 -1
  406. package/dist/renderer/evaluate.d.ts +0 -4
  407. package/dist/renderer/evaluate.d.ts.map +0 -1
  408. package/dist/renderer/fastpath.d.ts +0 -7
  409. package/dist/renderer/fastpath.d.ts.map +0 -1
  410. package/dist/renderer/index.d.ts +0 -6
  411. package/dist/renderer/index.d.ts.map +0 -1
  412. package/dist/renderer/keyed.d.ts +0 -23
  413. package/dist/renderer/keyed.d.ts.map +0 -1
  414. package/dist/renderer/reconcile.d.ts +0 -88
  415. package/dist/renderer/reconcile.d.ts.map +0 -1
  416. package/dist/renderer/types.d.ts +0 -3
  417. package/dist/renderer/types.d.ts.map +0 -1
  418. package/dist/renderer/utils.d.ts +0 -63
  419. package/dist/renderer/utils.d.ts.map +0 -1
  420. package/dist/resources/index.d.ts.map +0 -1
  421. package/dist/router/index.d.ts.map +0 -1
  422. package/dist/router/match.d.ts +0 -22
  423. package/dist/router/match.d.ts.map +0 -1
  424. package/dist/runtime/dev-namespace.d.ts +0 -31
  425. package/dist/runtime/dev-namespace.d.ts.map +0 -1
  426. package/dist/runtime/events.d.ts +0 -53
  427. package/dist/runtime/events.d.ts.map +0 -1
  428. package/dist/runtime/execution-model.d.ts +0 -4
  429. package/dist/runtime/execution-model.d.ts.map +0 -1
  430. package/dist/runtime/fastlane.d.ts +0 -27
  431. package/dist/runtime/fastlane.d.ts.map +0 -1
  432. package/dist/runtime/hydration.d.ts +0 -25
  433. package/dist/runtime/hydration.d.ts.map +0 -1
  434. package/dist/runtime/perf-metrics.d.ts +0 -25
  435. package/dist/runtime/perf-metrics.d.ts.map +0 -1
  436. package/dist/runtime/resource-cell.d.ts +0 -35
  437. package/dist/runtime/resource-cell.d.ts.map +0 -1
  438. package/dist/runtime/snapshot.d.ts +0 -25
  439. package/dist/runtime/snapshot.d.ts.map +0 -1
  440. package/dist/runtime/ssr-bridge.d.ts +0 -10
  441. package/dist/runtime/ssr-bridge.d.ts.map +0 -1
  442. package/dist/ssg/discover-resources.d.ts +0 -15
  443. package/dist/ssg/discover-resources.d.ts.map +0 -1
  444. package/dist/ssg/incremental-manifest.d.ts +0 -23
  445. package/dist/ssg/incremental-manifest.d.ts.map +0 -1
  446. package/dist/ssg/index.d.ts.map +0 -1
  447. package/dist/ssr/attrs.d.ts +0 -26
  448. package/dist/ssr/attrs.d.ts.map +0 -1
  449. package/dist/ssr/create-ssr.d.ts +0 -19
  450. package/dist/ssr/create-ssr.d.ts.map +0 -1
  451. package/dist/ssr/escape.d.ts +0 -38
  452. package/dist/ssr/escape.d.ts.map +0 -1
  453. package/dist/ssr/sink.d.ts +0 -23
  454. package/dist/ssr/sink.d.ts.map +0 -1
  455. package/dist/ssr/stream-render.d.ts +0 -7
  456. package/dist/ssr/stream-render.d.ts.map +0 -1
  457. package/dist/vite/index.js +0 -4
@@ -1 +1,81 @@
1
- import{state as s}from"../../runtime/state.js";function c(n){return n!==void 0}function a(n,t){const e=c(n);return{value:e?n:t,isControlled:e}}function C(n){const{value:t,defaultValue:e,onChange:o,setInternal:l}=n,{isControlled:r}=a(t,e);function u(i){r||l?.(i),o?.(i)}return{set:u,isControlled:r}}function d(n){const t=s(n.defaultValue),e=n.value!==void 0;function o(){return e?n.value:t()}return o.set=l=>{const r=o(),u=typeof l=="function"?l(r):l;if(!Object.is(r,u)){if(e){n.onChange?.(u);return}t.set(l),n.onChange?.(u)}},o.isControlled=e,o}export{d as controllableState,c as isControlled,C as makeControllable,a as resolveControllable};
1
+ import { state } from "../../runtime/state.js";
2
+ //#region src/foundations/state/controllable.ts
3
+ /**
4
+ * controllable
5
+ *
6
+ * Small utilities for controlled vs uncontrolled components. These helpers are
7
+ * intentionally minimal and do not manage state themselves; they help component
8
+ * implementations make correct decisions about when to call `onChange` vs
9
+ * update internal state.
10
+ *
11
+ * POLICY DECISIONS (LOCKED):
12
+ *
13
+ * 1. Controlled Detection
14
+ * A value is "controlled" if it is not `undefined`.
15
+ * This matches React conventions and is SSR-safe.
16
+ *
17
+ * 2. onChange Timing
18
+ * - Controlled mode: onChange called immediately, no internal update
19
+ * - Uncontrolled mode: internal state updated first, then onChange called
20
+ * This ensures onChange sees the new value in both modes.
21
+ *
22
+ * 3. Value Equality
23
+ * controllableState uses Object.is() to prevent unnecessary onChange calls.
24
+ * This is intentional — strict equality, no deep comparison.
25
+ */
26
+ function isControlled(value) {
27
+ return value !== void 0;
28
+ }
29
+ function resolveControllable(value, defaultValue) {
30
+ const controlled = isControlled(value);
31
+ return {
32
+ value: controlled ? value : defaultValue,
33
+ isControlled: controlled
34
+ };
35
+ }
36
+ function makeControllable(options) {
37
+ const { value, defaultValue, onChange, setInternal } = options;
38
+ const { isControlled } = resolveControllable(value, defaultValue);
39
+ function set(next) {
40
+ if (isControlled) onChange?.(next);
41
+ else {
42
+ setInternal?.(next);
43
+ onChange?.(next);
44
+ }
45
+ }
46
+ return {
47
+ set,
48
+ isControlled
49
+ };
50
+ }
51
+ /**
52
+ * controllableState
53
+ *
54
+ * Hook-like primitive that mirrors `state()` semantics while supporting
55
+ * controlled/uncontrolled behavior.
56
+ */
57
+ function controllableState(options) {
58
+ const isControlled = options.value !== void 0;
59
+ const internal = isControlled ? null : state(options.defaultValue);
60
+ function read() {
61
+ if (isControlled) return options.value;
62
+ return internal();
63
+ }
64
+ read.set = (nextOrUpdater) => {
65
+ const prev = read();
66
+ const next = typeof nextOrUpdater === "function" ? nextOrUpdater(prev) : nextOrUpdater;
67
+ if (Object.is(prev, next)) return;
68
+ if (isControlled) {
69
+ options.onChange?.(next);
70
+ return;
71
+ }
72
+ internal.set(nextOrUpdater);
73
+ options.onChange?.(next);
74
+ };
75
+ read.isControlled = isControlled;
76
+ return read;
77
+ }
78
+ //#endregion
79
+ export { controllableState, isControlled, makeControllable, resolveControllable };
80
+
81
+ //# sourceMappingURL=controllable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controllable.js","names":[],"sources":["../../../src/foundations/state/controllable.ts"],"sourcesContent":["/**\n * controllable\n *\n * Small utilities for controlled vs uncontrolled components. These helpers are\n * intentionally minimal and do not manage state themselves; they help component\n * implementations make correct decisions about when to call `onChange` vs\n * update internal state.\n *\n * POLICY DECISIONS (LOCKED):\n *\n * 1. Controlled Detection\n * A value is \"controlled\" if it is not `undefined`.\n * This matches React conventions and is SSR-safe.\n *\n * 2. onChange Timing\n * - Controlled mode: onChange called immediately, no internal update\n * - Uncontrolled mode: internal state updated first, then onChange called\n * This ensures onChange sees the new value in both modes.\n *\n * 3. Value Equality\n * controllableState uses Object.is() to prevent unnecessary onChange calls.\n * This is intentional — strict equality, no deep comparison.\n */\n\nimport { state, type State } from '../../runtime/state';\n\nexport function isControlled<T>(value: T | undefined): value is T {\n return value !== undefined;\n}\n\nexport function resolveControllable<T>(\n value: T | undefined,\n defaultValue: T\n): { value: T; isControlled: boolean } {\n const controlled = isControlled(value);\n return {\n value: controlled ? (value as T) : defaultValue,\n isControlled: controlled,\n };\n}\n\nexport function makeControllable<T>(options: {\n value: T | undefined;\n defaultValue: T;\n onChange?: (next: T) => void;\n setInternal?: (next: T) => void;\n}) {\n const { value, defaultValue, onChange, setInternal } = options;\n const { isControlled } = resolveControllable(value, defaultValue);\n\n function set(next: T) {\n if (isControlled) {\n onChange?.(next);\n } else {\n setInternal?.(next);\n onChange?.(next);\n }\n }\n\n return { set, isControlled };\n}\n\nexport type ControllableState<T> = State<T> & { isControlled: boolean };\n\n/**\n * controllableState\n *\n * Hook-like primitive that mirrors `state()` semantics while supporting\n * controlled/uncontrolled behavior.\n */\nexport function controllableState<T>(options: {\n value: T | undefined;\n defaultValue: T;\n onChange?: (next: T) => void;\n}): ControllableState<T> {\n const isControlled = options.value !== undefined;\n const internal = isControlled ? null : state<T>(options.defaultValue);\n\n function read(): T {\n if (isControlled) {\n return options.value as T;\n }\n\n return internal!();\n }\n\n read.set = (nextOrUpdater: T | ((prev: T) => T)) => {\n const prev = read();\n const next =\n typeof nextOrUpdater === 'function'\n ? (nextOrUpdater as (p: T) => T)(prev)\n : (nextOrUpdater as T);\n\n if (Object.is(prev, next)) return;\n\n if (isControlled) {\n options.onChange?.(next);\n return;\n }\n\n internal!.set(nextOrUpdater as never);\n options.onChange?.(next);\n };\n\n (read as ControllableState<T>).isControlled = isControlled;\n return read as ControllableState<T>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAAgB,aAAgB,OAAkC;AAChE,QAAO,UAAU;;AAGnB,SAAgB,oBACd,OACA,cACqC;CACrC,MAAM,aAAa,aAAa,MAAM;AACtC,QAAO;EACL,OAAO,aAAc,QAAc;EACnC,cAAc;EACf;;AAGH,SAAgB,iBAAoB,SAKjC;CACD,MAAM,EAAE,OAAO,cAAc,UAAU,gBAAgB;CACvD,MAAM,EAAE,iBAAiB,oBAAoB,OAAO,aAAa;CAEjE,SAAS,IAAI,MAAS;AACpB,MAAI,aACF,YAAW,KAAK;OACX;AACL,iBAAc,KAAK;AACnB,cAAW,KAAK;;;AAIpB,QAAO;EAAE;EAAK;EAAc;;;;;;;;AAW9B,SAAgB,kBAAqB,SAIZ;CACvB,MAAM,eAAe,QAAQ,UAAU;CACvC,MAAM,WAAW,eAAe,OAAO,MAAS,QAAQ,aAAa;CAErE,SAAS,OAAU;AACjB,MAAI,aACF,QAAO,QAAQ;AAGjB,SAAO,UAAW;;AAGpB,MAAK,OAAO,kBAAwC;EAClD,MAAM,OAAO,MAAM;EACnB,MAAM,OACJ,OAAO,kBAAkB,aACpB,cAA8B,KAAK,GACnC;AAEP,MAAI,OAAO,GAAG,MAAM,KAAK,CAAE;AAE3B,MAAI,cAAc;AAChB,WAAQ,WAAW,KAAK;AACxB;;AAGF,WAAU,IAAI,cAAuB;AACrC,UAAQ,WAAW,KAAK;;AAGzB,MAA8B,eAAe;AAC9C,QAAO"}
@@ -1,3 +1,4 @@
1
+ //#region src/foundations/structures/collection.d.ts
1
2
  /**
2
3
  * createCollection
3
4
  *
@@ -22,46 +23,30 @@
22
23
  * const allItems = collection.items();
23
24
  * unregister();
24
25
  */
25
- export type CollectionItem<TNode, TMetadata = unknown> = {
26
- node: TNode;
27
- metadata: TMetadata;
26
+ type CollectionItem<TNode, TMetadata = unknown> = {
27
+ node: TNode;
28
+ metadata: TMetadata;
28
29
  };
29
- export interface Collection<TNode, TMetadata = unknown> {
30
- /**
31
- * Register a node with optional metadata.
32
- * Returns an unregister function.
33
- */
34
- register(node: TNode, metadata: TMetadata): () => void;
35
- /**
36
- * Get all registered items in insertion order.
37
- */
38
- items(): ReadonlyArray<CollectionItem<TNode, TMetadata>>;
39
- /**
40
- * Clear all registered items.
41
- */
42
- clear(): void;
43
- /**
44
- * Get the count of registered items.
45
- */
46
- size(): number;
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;
47
48
  }
48
- export declare function createCollection<TNode, TMetadata = unknown>(): Collection<TNode, TMetadata>;
49
- /**
50
- * USAGE EXAMPLE:
51
- *
52
- * // Create a collection for menu items
53
- * const menuItems = createCollection<HTMLElement, { disabled: boolean }>();
54
- *
55
- * // Register items
56
- * const unregister1 = menuItems.register(element1, { disabled: false });
57
- * const unregister2 = menuItems.register(element2, { disabled: true });
58
- *
59
- * // Query items
60
- * const allItems = menuItems.items();
61
- * const enabledItems = allItems.filter(item => !item.metadata.disabled);
62
- *
63
- * // Cleanup
64
- * unregister1();
65
- * unregister2();
66
- */
49
+ declare function createCollection<TNode, TMetadata = unknown>(): Collection<TNode, TMetadata>;
50
+ //#endregion
51
+ export { Collection, CollectionItem, createCollection };
67
52
  //# sourceMappingURL=collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../../src/foundations/structures/collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,MAAM,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,IAAI;IACvD,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IACpD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM,IAAI,CAAC;IAEvD;;OAEG;IACH,KAAK,IAAI,aAAa,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,IAAI,IAAI,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,KAAK,UAAU,CACxE,KAAK,EACL,SAAS,CACV,CA8BA;AAED;;;;;;;;;;;;;;;;;GAiBG"}
1
+ {"version":3,"file":"collection.d.ts","names":[],"sources":["../../../src/foundations/structures/collection.ts"],"mappings":";;AAyBA;;;;;;;;;;;;AAKA;;;;;;;;;;;KALY,cAAA;EACV,IAAA,EAAM,KAAA;EACN,QAAA,EAAU,SAAA;AAAA;AAAA,UAGK,UAAA;EAKiB;;;;EAAhC,QAAA,CAAS,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,SAAA;EAKM;;;EAAtC,KAAA,IAAS,aAAA,CAAc,cAAA,CAAe,KAAA,EAAO,SAAA;EAUzC;;AAGN;EARE,KAAA;EAQ8B;;;EAH9B,IAAA;AAAA;AAAA,iBAGc,gBAAA,4BAAA,CAAA,GAAgD,UAAA,CAC9D,KAAA,EACA,SAAA"}
@@ -1 +1,51 @@
1
- function s(){const e=new Map;function r(t,u){const o={node:t,metadata:u};return e.set(t,o),()=>{e.delete(t)}}function n(){return Array.from(e.values())}function i(){e.clear()}function c(){return e.size}return{register:r,items:n,clear:i,size:c}}export{s as createCollection};
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 };
50
+
51
+ //# sourceMappingURL=collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection.js","names":[],"sources":["../../../src/foundations/structures/collection.ts"],"sourcesContent":["/**\n * createCollection\n *\n * Ordered descendant registry for coordinating items without DOM queries.\n *\n * INVARIANTS:\n * 1. Registration order determines item order (no DOM queries)\n * 2. Stable ordering across renders (insertion order preserved)\n * 3. Each item may have metadata (type-safe, user-defined)\n * 4. No implicit global state (explicit collection instances)\n * 5. No automatic cleanup (caller controls lifecycle)\n *\n * DESIGN:\n * - Returns a registry API ({ register, items, clear })\n * - Items are stored in insertion order\n * - Registration returns an unregister function\n * - No side effects on registration (pure data structure)\n *\n * USAGE:\n * const collection = createCollection<HTMLElement, { disabled: boolean }>();\n * const unregister = collection.register(element, { disabled: false });\n * const allItems = collection.items();\n * unregister();\n */\n\nexport type CollectionItem<TNode, TMetadata = unknown> = {\n node: TNode;\n metadata: TMetadata;\n};\n\nexport interface Collection<TNode, TMetadata = unknown> {\n /**\n * Register a node with optional metadata.\n * Returns an unregister function.\n */\n register(node: TNode, metadata: TMetadata): () => void;\n\n /**\n * Get all registered items in insertion order.\n */\n items(): ReadonlyArray<CollectionItem<TNode, TMetadata>>;\n\n /**\n * Clear all registered items.\n */\n clear(): void;\n\n /**\n * Get the count of registered items.\n */\n size(): number;\n}\n\nexport function createCollection<TNode, TMetadata = unknown>(): Collection<\n TNode,\n TMetadata\n> {\n const registry = new Map<TNode, CollectionItem<TNode, TMetadata>>();\n\n function register(node: TNode, metadata: TMetadata): () => void {\n const item: CollectionItem<TNode, TMetadata> = { node, metadata };\n registry.set(node, item);\n\n return () => {\n registry.delete(node);\n };\n }\n\n function items(): ReadonlyArray<CollectionItem<TNode, TMetadata>> {\n return Array.from(registry.values());\n }\n\n function clear(): void {\n registry.clear();\n }\n\n function size(): number {\n return registry.size;\n }\n\n return {\n register,\n items,\n clear,\n size,\n };\n}\n\n/**\n * USAGE EXAMPLE:\n *\n * // Create a collection for menu items\n * const menuItems = createCollection<HTMLElement, { disabled: boolean }>();\n *\n * // Register items\n * const unregister1 = menuItems.register(element1, { disabled: false });\n * const unregister2 = menuItems.register(element2, { disabled: true });\n *\n * // Query items\n * const allItems = menuItems.items();\n * const enabledItems = allItems.filter(item => !item.metadata.disabled);\n *\n * // Cleanup\n * unregister1();\n * unregister2();\n */\n"],"mappings":";AAqDA,SAAgB,mBAGd;CACA,MAAM,2BAAW,IAAI,KAA8C;CAEnE,SAAS,SAAS,MAAa,UAAiC;EAC9D,MAAM,OAAyC;GAAE;GAAM;GAAU;AACjE,WAAS,IAAI,MAAM,KAAK;AAExB,eAAa;AACX,YAAS,OAAO,KAAK;;;CAIzB,SAAS,QAAyD;AAChE,SAAO,MAAM,KAAK,SAAS,QAAQ,CAAC;;CAGtC,SAAS,QAAc;AACrB,WAAS,OAAO;;CAGlB,SAAS,OAAe;AACtB,SAAO,SAAS;;AAGlB,QAAO;EACL;EACA;EACA;EACA;EACD"}
@@ -1,3 +1,4 @@
1
+ //#region src/foundations/structures/layer.d.ts
1
2
  /**
2
3
  * createLayer
3
4
  *
@@ -28,75 +29,53 @@
28
29
  * layer.isTop(); // true if this is the topmost layer
29
30
  * layer.unregister();
30
31
  */
31
- export interface LayerOptions {
32
- /**
33
- * Called when Escape is pressed and this is the top layer
34
- */
35
- onEscape?: () => void;
36
- /**
37
- * Called when pointer event occurs outside and this is the top layer
38
- */
39
- onOutsidePointer?: (e: PointerEvent) => void;
40
- /**
41
- * Optional node reference for outside pointer detection
42
- */
43
- node?: Node | null;
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;
44
45
  }
45
- export interface Layer {
46
- /**
47
- * Unique layer ID
48
- */
49
- id: number;
50
- /**
51
- * Check if this layer is the topmost
52
- */
53
- isTop(): boolean;
54
- /**
55
- * Remove this layer from the stack
56
- */
57
- unregister(): void;
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;
58
59
  }
59
- export interface LayerManager {
60
- /**
61
- * Register a new layer
62
- */
63
- register(options: LayerOptions): Layer;
64
- /**
65
- * Get all active layers in order
66
- */
67
- layers(): ReadonlyArray<Layer>;
68
- /**
69
- * Manually trigger escape handling on the top layer
70
- */
71
- handleEscape(): void;
72
- /**
73
- * Manually trigger outside pointer handling on the top layer
74
- */
75
- handleOutsidePointer(e: PointerEvent): void;
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;
76
77
  }
77
- export declare function createLayer(): LayerManager;
78
- /**
79
- * USAGE EXAMPLE:
80
- *
81
- * const layerManager = createLayer();
82
- *
83
- * function Modal({ onClose }) {
84
- * const modalRef = ref<HTMLDivElement>();
85
- *
86
- * const layer = layerManager.register({
87
- * node: modalRef.current,
88
- * onEscape: onClose,
89
- * onOutsidePointer: onClose,
90
- * });
91
- *
92
- * onUnmount(() => layer.unregister());
93
- *
94
- * return (
95
- * <div ref={modalRef}>
96
- * <h1>Modal</h1>
97
- * {layer.isTop() && <p>I am on top!</p>}
98
- * </div>
99
- * );
100
- * }
101
- */
78
+ declare function createLayer(): LayerManager;
79
+ //#endregion
80
+ export { Layer, LayerManager, LayerOptions, createLayer };
102
81
  //# sourceMappingURL=layer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../../src/foundations/structures/layer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC;IAEjB;;OAEG;IACH,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,KAAK,CAAC;IAEvC;;OAEG;IACH,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IAE/B;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB;;OAEG;IACH,oBAAoB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7C;AAED,wBAAgB,WAAW,IAAI,YAAY,CAyE1C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
1
+ {"version":3,"file":"layer.d.ts","names":[],"sources":["../../../src/foundations/structures/layer.ts"],"mappings":";;AA+BA;;;;;;;;;;;;AAiBA;;;;;;;;;AAiBA;;;;;;;;UAlCiB,YAAA;EAqDqB;;;EAjDpC,QAAA;EAkCiC;;;EA7BjC,gBAAA,IAAoB,CAAA,EAAG,YAAA;EAuCvB;;;EAlCA,IAAA,GAAO,IAAA;AAAA;AAAA,UAGQ,KAAA;EAuCD;;;EAnCd,EAAA;EAmCyC;;;EA9BzC,KAAA;;;;EAKA,UAAA;AAAA;AAAA,UAGe,YAAA;;;;EAIf,QAAA,CAAS,OAAA,EAAS,YAAA,GAAe,KAAA;;;;EAKjC,MAAA,IAAU,aAAA,CAAc,KAAA;;;;EAKxB,YAAA;;;;EAKA,oBAAA,CAAqB,CAAA,EAAG,YAAA;AAAA;AAAA,iBAGV,WAAA,CAAA,GAAe,YAAA"}
@@ -1 +1,81 @@
1
- function l(){const n=[];let s=1;function d(t){const i=s++,e={id:i,options:t};n.push(e);function f(){return n[n.length-1]?.id===i}function p(){const o=n.findIndex(a=>a.id===i);o!==-1&&n.splice(o,1)}return{id:i,isTop:f,unregister:p}}function r(){return n.map(t=>({id:t.id,isTop:()=>n[n.length-1]?.id===t.id,unregister:()=>{const i=n.findIndex(e=>e.id===t.id);i!==-1&&n.splice(i,1)}}))}function c(){const t=n[n.length-1];t&&t.options.onEscape?.()}function u(t){const i=n[n.length-1];if(!i)return;const e=i.options.node;e&&t.target instanceof Node&&e.contains(t.target)||i.options.onOutsidePointer?.(t)}return{register:d,layers:r,handleEscape:c,handleOutsidePointer:u}}export{l as createLayer};
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 };
80
+
81
+ //# sourceMappingURL=layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer.js","names":[],"sources":["../../../src/foundations/structures/layer.ts"],"sourcesContent":["/**\n * createLayer\n *\n * Manages stacking order and coordination for overlays (modals, popovers, etc).\n *\n * INVARIANTS:\n * 1. Layers are ordered by registration time (FIFO)\n * 2. Only the top layer handles Escape key\n * 3. Only the top layer handles outside pointer events\n * 4. Nested layers are supported\n * 5. Does not implement portals (orthogonal concern)\n * 6. No automatic DOM insertion (caller controls mounting)\n *\n * DESIGN:\n * - Returns a layer manager with register/unregister API\n * - Each layer has a unique ID and can query if it's the top layer\n * - Escape and outside pointer coordination via callbacks\n * - No z-index management (CSS concern)\n *\n * USAGE:\n * const manager = createLayer();\n *\n * const layer = manager.register({\n * onEscape: () => { ... },\n * onOutsidePointer: () => { ... }\n * });\n *\n * layer.isTop(); // true if this is the topmost layer\n * layer.unregister();\n */\n\nexport interface LayerOptions {\n /**\n * Called when Escape is pressed and this is the top layer\n */\n onEscape?: () => void;\n\n /**\n * Called when pointer event occurs outside and this is the top layer\n */\n onOutsidePointer?: (e: PointerEvent) => void;\n\n /**\n * Optional node reference for outside pointer detection\n */\n node?: Node | null;\n}\n\nexport interface Layer {\n /**\n * Unique layer ID\n */\n id: number;\n\n /**\n * Check if this layer is the topmost\n */\n isTop(): boolean;\n\n /**\n * Remove this layer from the stack\n */\n unregister(): void;\n}\n\nexport interface LayerManager {\n /**\n * Register a new layer\n */\n register(options: LayerOptions): Layer;\n\n /**\n * Get all active layers in order\n */\n layers(): ReadonlyArray<Layer>;\n\n /**\n * Manually trigger escape handling on the top layer\n */\n handleEscape(): void;\n\n /**\n * Manually trigger outside pointer handling on the top layer\n */\n handleOutsidePointer(e: PointerEvent): void;\n}\n\nexport function createLayer(): LayerManager {\n const stack: Array<{\n id: number;\n options: LayerOptions;\n }> = [];\n\n let nextId = 1;\n\n function register(options: LayerOptions): Layer {\n const id = nextId++;\n const entry = { id, options };\n stack.push(entry);\n\n function isTop(): boolean {\n return stack[stack.length - 1]?.id === id;\n }\n\n function unregister(): void {\n const index = stack.findIndex((e) => e.id === id);\n if (index !== -1) {\n stack.splice(index, 1);\n }\n }\n\n return {\n id,\n isTop,\n unregister,\n };\n }\n\n function layers(): ReadonlyArray<Layer> {\n return stack.map((entry) => ({\n id: entry.id,\n isTop: () => stack[stack.length - 1]?.id === entry.id,\n unregister: () => {\n const index = stack.findIndex((e) => e.id === entry.id);\n if (index !== -1) {\n stack.splice(index, 1);\n }\n },\n }));\n }\n\n function handleEscape(): void {\n const top = stack[stack.length - 1];\n if (top) {\n top.options.onEscape?.();\n }\n }\n\n function handleOutsidePointer(e: PointerEvent): void {\n const top = stack[stack.length - 1];\n if (!top) return;\n\n const node = top.options.node;\n if (node && e.target instanceof Node) {\n // Check if the event target is outside the layer node\n if (!node.contains(e.target)) {\n top.options.onOutsidePointer?.(e);\n }\n } else {\n // No node provided, always trigger\n top.options.onOutsidePointer?.(e);\n }\n }\n\n return {\n register,\n layers,\n handleEscape,\n handleOutsidePointer,\n };\n}\n\n/**\n * USAGE EXAMPLE:\n *\n * const layerManager = createLayer();\n *\n * function Modal({ onClose }) {\n * const modalRef = ref<HTMLDivElement>();\n *\n * const layer = layerManager.register({\n * node: modalRef.current,\n * onEscape: onClose,\n * onOutsidePointer: onClose,\n * });\n *\n * onUnmount(() => layer.unregister());\n *\n * return (\n * <div ref={modalRef}>\n * <h1>Modal</h1>\n * {layer.isTop() && <p>I am on top!</p>}\n * </div>\n * );\n * }\n */\n"],"mappings":";AAuFA,SAAgB,cAA4B;CAC1C,MAAM,QAGD,EAAE;CAEP,IAAI,SAAS;CAEb,SAAS,SAAS,SAA8B;EAC9C,MAAM,KAAK;EACX,MAAM,QAAQ;GAAE;GAAI;GAAS;AAC7B,QAAM,KAAK,MAAM;EAEjB,SAAS,QAAiB;AACxB,UAAO,MAAM,MAAM,SAAS,IAAI,OAAO;;EAGzC,SAAS,aAAmB;GAC1B,MAAM,QAAQ,MAAM,WAAW,MAAM,EAAE,OAAO,GAAG;AACjD,OAAI,UAAU,GACZ,OAAM,OAAO,OAAO,EAAE;;AAI1B,SAAO;GACL;GACA;GACA;GACD;;CAGH,SAAS,SAA+B;AACtC,SAAO,MAAM,KAAK,WAAW;GAC3B,IAAI,MAAM;GACV,aAAa,MAAM,MAAM,SAAS,IAAI,OAAO,MAAM;GACnD,kBAAkB;IAChB,MAAM,QAAQ,MAAM,WAAW,MAAM,EAAE,OAAO,MAAM,GAAG;AACvD,QAAI,UAAU,GACZ,OAAM,OAAO,OAAO,EAAE;;GAG3B,EAAE;;CAGL,SAAS,eAAqB;EAC5B,MAAM,MAAM,MAAM,MAAM,SAAS;AACjC,MAAI,IACF,KAAI,QAAQ,YAAY;;CAI5B,SAAS,qBAAqB,GAAuB;EACnD,MAAM,MAAM,MAAM,MAAM,SAAS;AACjC,MAAI,CAAC,IAAK;EAEV,MAAM,OAAO,IAAI,QAAQ;AACzB,MAAI,QAAQ,EAAE,kBAAkB,MAE9B;OAAI,CAAC,KAAK,SAAS,EAAE,OAAO,CAC1B,KAAI,QAAQ,mBAAmB,EAAE;QAInC,KAAI,QAAQ,mBAAmB,EAAE;;AAIrC,QAAO;EACL;EACA;EACA;EACA;EACD"}
@@ -1,3 +1,4 @@
1
+ //#region src/foundations/structures/layout.d.ts
1
2
  /**
2
3
  * Layout helper.
3
4
  *
@@ -21,8 +22,10 @@
21
22
  * Props are spread into the layout component. This is intentional
22
23
  * and deterministic — no merging or composition.
23
24
  */
24
- export type LayoutComponent<P = object> = (props: P & {
25
- children?: unknown;
25
+ type LayoutComponent<P = object> = (props: P & {
26
+ children?: unknown;
26
27
  }) => unknown;
27
- export declare function layout<P = object>(Layout: LayoutComponent<P>): (children?: unknown, props?: P) => unknown;
28
+ declare function layout<P = object>(Layout: LayoutComponent<P>): (children?: unknown, props?: P) => unknown;
29
+ //#endregion
30
+ export { LayoutComponent, layout };
28
31
  //# sourceMappingURL=layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/foundations/structures/layout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,MAAM,IAAI,CACxC,KAAK,EAAE,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KAC9B,OAAO,CAAC;AAEb,wBAAgB,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,IACnD,WAAW,OAAO,EAAE,QAAQ,CAAC,aAItC"}
1
+ {"version":3,"file":"layout.d.ts","names":[],"sources":["../../../src/foundations/structures/layout.tsx"],"mappings":";;AAwBA;;;;;;;;;;AAIA;;;;;;;;;;;;KAJY,eAAA,gBACV,KAAA,EAAO,CAAA;EAAM,QAAA;AAAA;AAAA,iBAGC,MAAA,YAAA,CAAmB,MAAA,EAAQ,eAAA,CAAgB,CAAA,KACjD,QAAA,YAAoB,KAAA,GAAQ,CAAA"}
@@ -1 +1,13 @@
1
- function o(r){return(t,e)=>{const n={...e,children:t};return r(n)}}export{o as layout};
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 };
12
+
13
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","names":[],"sources":["../../../src/foundations/structures/layout.tsx"],"sourcesContent":["/**\n * Layout helper.\n *\n * A layout is just a normal component that wraps children.\n * Persistence and reuse are handled by the runtime via component identity.\n *\n * This helper exists purely for readability and convention.\n *\n * POLICY DECISIONS (LOCKED):\n *\n * 1. Return Type is Opaque (unknown)\n * Layout components return `unknown` to remain runtime-agnostic.\n * The runtime owns concrete JSX element types.\n *\n * 2. Children Positioning\n * Layout receives children as first argument (router-friendly).\n * Props come second. This matches route layout conventions where\n * children represent the nested route content.\n *\n * 3. Props Spreading\n * Props are spread into the layout component. This is intentional\n * and deterministic — no merging or composition.\n */\n\nexport type LayoutComponent<P = object> = (\n props: P & { children?: unknown }\n) => unknown;\n\nexport function layout<P = object>(Layout: LayoutComponent<P>) {\n return (children?: unknown, props?: P) => {\n const mergedProps = { ...props, children } as P & { children?: unknown };\n return Layout(mergedProps);\n };\n}\n"],"mappings":";AA4BA,SAAgB,OAAmB,QAA4B;AAC7D,SAAQ,UAAoB,UAAc;AAExC,SAAO,OAAO;GADQ,GAAG;GAAO;GAClB,CAAY"}
@@ -1,3 +1,4 @@
1
+ //#region src/foundations/structures/portal.d.ts
1
2
  /**
2
3
  * Portal / Host primitive.
3
4
  *
@@ -19,15 +20,21 @@
19
20
  * owns the concrete type. This prevents foundations from assuming JSX.Element
20
21
  * or DOM node types, maintaining runtime-agnostic portability.
21
22
  */
22
- export interface Portal<T = unknown> {
23
- /** Mount point — rendered exactly once */
24
- (): unknown;
25
- /** Render content into the portal */
26
- render(props: {
27
- children?: T;
28
- }): unknown;
23
+ interface Portal<T = unknown> {
24
+ /** Mount point — rendered exactly once */
25
+ (): unknown;
26
+ /** Render content into the portal */
27
+ render(props: {
28
+ children?: T;
29
+ }): unknown;
29
30
  }
30
- export declare function definePortal<T = unknown>(): Portal<T>;
31
- export declare function _resetDefaultPortal(): void;
32
- export declare const DefaultPortal: Portal<unknown>;
31
+ interface PortalProps {
32
+ children?: unknown;
33
+ }
34
+ declare function definePortal<T = unknown>(): Portal<T>;
35
+ declare function _resetDefaultPortal(): void;
36
+ declare const DefaultPortal: Portal<unknown>;
37
+ declare function Portal(props: PortalProps): null;
38
+ //#endregion
39
+ export { DefaultPortal, Portal, PortalProps, definePortal };
33
40
  //# sourceMappingURL=portal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../../src/foundations/structures/portal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,OAAO;IACjC,0CAA0C;IAC1C,IAAI,OAAO,CAAC;IAEZ,qCAAqC;IACrC,MAAM,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;CAC1C;AAED,wBAAgB,YAAY,CAAC,CAAC,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CA6CrD;AAaD,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAOD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,OAAO,CAUtC,CAAC"}
1
+ {"version":3,"file":"portal.d.ts","names":[],"sources":["../../../src/foundations/structures/portal.tsx"],"mappings":";;AA8BA;;;;;;;;;;;AAQA;;;;;AAgCA;;;;UAxCiB,MAAA;EAwC4B;EAAA;EAAQ;EAnCnD,MAAA,CAAO,KAAA;IAAS,QAAA,GAAW,CAAA;EAAA;AAAA;AAAA,UAGZ,WAAA;EACf,QAAA;AAAA;AAAA,iBA+Bc,YAAA,aAAA,CAAA,GAA6B,MAAA,CAAO,CAAA;AAAA,iBA0DpC,mBAAA,CAAA;AAAA,cASH,aAAA,EAAe,MAAA;AAAA,iBAYZ,MAAA,CAAO,KAAA,EAAO,WAAA"}