@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,158 +0,0 @@
1
- //#region src/fx/timing.d.ts
2
- /**
3
- * Timing utilities — pure helpers for common async patterns
4
- * No framework coupling. No lifecycle awareness.
5
- */
6
- interface DebounceOptions {
7
- leading?: boolean;
8
- trailing?: boolean;
9
- }
10
- interface ThrottleOptions {
11
- leading?: boolean;
12
- trailing?: boolean;
13
- }
14
- interface RetryOptions {
15
- maxAttempts?: number;
16
- delayMs?: number;
17
- backoff?: (attemptIndex: number) => number;
18
- }
19
- type AnyFn = (...args: never[]) => unknown;
20
- /**
21
- * Debounce — delay execution, coalesce rapid calls
22
- *
23
- * Useful for: text input, resize, autosave
24
- *
25
- * @param fn Function to debounce
26
- * @param ms Delay in milliseconds
27
- * @param options trailing (default true), leading
28
- * @returns Debounced function with cancel() method
29
- *
30
- * @example
31
- * ```ts
32
- * const save = debounce((text) => api.save(text), 500);
33
- * input.addEventListener('input', (e) => save(e.target.value));
34
- * save.cancel(); // stop any pending execution
35
- * ```
36
- */
37
- declare function debounce<T extends AnyFn>(fn: T, ms: number, options?: DebounceOptions): T & {
38
- cancel(): void;
39
- };
40
- /**
41
- * Throttle — rate-limit execution, keep first/last
42
- *
43
- * Useful for: scroll, mouse move, high-frequency events
44
- *
45
- * @param fn Function to throttle
46
- * @param ms Minimum interval between calls in milliseconds
47
- * @param options leading (default true), trailing (default true)
48
- * @returns Throttled function with cancel() method
49
- *
50
- * @example
51
- * ```ts
52
- * const handleScroll = throttle(updateUI, 100);
53
- * window.addEventListener('scroll', handleScroll);
54
- * handleScroll.cancel();
55
- * ```
56
- */
57
- declare function throttle<T extends AnyFn>(fn: T, ms: number, options?: ThrottleOptions): T & {
58
- cancel(): void;
59
- };
60
- /**
61
- * Once — guard against double execution
62
- *
63
- * Useful for: init logic, event safety
64
- *
65
- * @param fn Function to call at most once
66
- * @returns Function that executes fn only on first call
67
- *
68
- * @example
69
- * ```ts
70
- * const init = once(setup);
71
- * init(); // runs
72
- * init(); // does nothing
73
- * init(); // does nothing
74
- * ```
75
- */
76
- declare function once<T extends AnyFn>(fn: T): T;
77
- /**
78
- * Defer — schedule on microtask queue
79
- *
80
- * Useful for: run-after-current-stack logic
81
- * More reliable than setTimeout(..., 0)
82
- *
83
- * @param fn Function to defer
84
- *
85
- * @example
86
- * ```ts
87
- * defer(() => update()); // runs after current stack, before next macrotask
88
- * ```
89
- */
90
- declare function defer(fn: () => void): void;
91
- /**
92
- * RAF — coalesce multiple updates into single frame
93
- *
94
- * Useful for: animation, layout work, render updates
95
- *
96
- * @param fn Function to schedule on next animation frame
97
- * @returns Function that schedules fn on requestAnimationFrame
98
- *
99
- * @example
100
- * ```ts
101
- * const update = raf(render);
102
- * update(); // schedules on next frame
103
- * update(); // same frame, no duplicate
104
- * ```
105
- */
106
- declare function raf<T extends AnyFn>(fn: T): T;
107
- /**
108
- * Idle — schedule low-priority work
109
- *
110
- * Useful for: background prep, non-urgent updates
111
- * Falls back to setTimeout if requestIdleCallback unavailable
112
- *
113
- * @param fn Function to call when idle
114
- * @param options timeout for fallback
115
- *
116
- * @example
117
- * ```ts
118
- * idle(() => prefetchData());
119
- * ```
120
- */
121
- declare function idle(fn: () => void, options?: {
122
- timeout?: number;
123
- }): void;
124
- /**
125
- * Timeout — Promise-based delay
126
- *
127
- * Useful for: readable async code, waiting between retries
128
- *
129
- * @param ms Milliseconds to wait
130
- * @returns Promise that resolves after delay
131
- *
132
- * @example
133
- * ```ts
134
- * await timeout(300);
135
- * console.log('300ms later');
136
- * ```
137
- */
138
- declare function timeout(ms: number): Promise<void>;
139
- /**
140
- * Retry — attempt function with backoff
141
- *
142
- * Useful for: network calls, transient failures
143
- *
144
- * @param fn Async function to retry
145
- * @param options maxAttempts, delayMs, backoff function
146
- * @returns Promise with final result or error
147
- *
148
- * @example
149
- * ```ts
150
- * const data = await retry(() => fetch(url), {
151
- * maxAttempts: 3,
152
- * delayMs: 100,
153
- * });
154
- * ```
155
- */
156
- declare function retry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
157
- //#endregion
158
- export { DebounceOptions, RetryOptions, ThrottleOptions, debounce, defer, idle, once, raf, retry, throttle, timeout };
package/dist/fx/timing.js DELETED
@@ -1,241 +0,0 @@
1
- //#region src/fx/timing.ts
2
- /**
3
- * Debounce — delay execution, coalesce rapid calls
4
- *
5
- * Useful for: text input, resize, autosave
6
- *
7
- * @param fn Function to debounce
8
- * @param ms Delay in milliseconds
9
- * @param options trailing (default true), leading
10
- * @returns Debounced function with cancel() method
11
- *
12
- * @example
13
- * ```ts
14
- * const save = debounce((text) => api.save(text), 500);
15
- * input.addEventListener('input', (e) => save(e.target.value));
16
- * save.cancel(); // stop any pending execution
17
- * ```
18
- */
19
- function debounce(fn, ms, options) {
20
- const callable = fn;
21
- let timeoutId = null;
22
- const { leading = false, trailing = true } = options || {};
23
- let lastArgs = null;
24
- let lastThis = null;
25
- let lastCallTime = 0;
26
- const debounced = function(...args) {
27
- const callTime = Date.now();
28
- lastArgs = args;
29
- lastThis = this;
30
- if (timeoutId !== null) clearTimeout(timeoutId);
31
- if (leading && callTime - lastCallTime >= ms) {
32
- callable.apply(this, args);
33
- lastCallTime = callTime;
34
- }
35
- if (trailing) timeoutId = setTimeout(() => {
36
- callable.apply(lastThis, lastArgs);
37
- timeoutId = null;
38
- lastCallTime = Date.now();
39
- }, ms);
40
- };
41
- debounced.cancel = () => {
42
- if (timeoutId !== null) {
43
- clearTimeout(timeoutId);
44
- timeoutId = null;
45
- }
46
- };
47
- return debounced;
48
- }
49
- /**
50
- * Throttle — rate-limit execution, keep first/last
51
- *
52
- * Useful for: scroll, mouse move, high-frequency events
53
- *
54
- * @param fn Function to throttle
55
- * @param ms Minimum interval between calls in milliseconds
56
- * @param options leading (default true), trailing (default true)
57
- * @returns Throttled function with cancel() method
58
- *
59
- * @example
60
- * ```ts
61
- * const handleScroll = throttle(updateUI, 100);
62
- * window.addEventListener('scroll', handleScroll);
63
- * handleScroll.cancel();
64
- * ```
65
- */
66
- function throttle(fn, ms, options) {
67
- const callable = fn;
68
- let lastCallTime = null;
69
- let timeoutId = null;
70
- const { leading = true, trailing = true } = options || {};
71
- let lastArgs = null;
72
- let lastThis = null;
73
- const throttled = function(...args) {
74
- const callTime = Date.now();
75
- const timeSinceLastCall = lastCallTime === null ? Number.POSITIVE_INFINITY : callTime - lastCallTime;
76
- lastArgs = args;
77
- lastThis = this;
78
- if (leading && timeSinceLastCall >= ms) {
79
- callable.apply(this, args);
80
- lastCallTime = callTime;
81
- if (timeoutId !== null) {
82
- clearTimeout(timeoutId);
83
- timeoutId = null;
84
- }
85
- return;
86
- }
87
- if (!leading && lastCallTime === null) lastCallTime = callTime;
88
- if (trailing && timeoutId === null) timeoutId = setTimeout(() => {
89
- callable.apply(lastThis, lastArgs);
90
- lastCallTime = Date.now();
91
- timeoutId = null;
92
- }, lastCallTime === null ? ms : Math.max(0, ms - (callTime - lastCallTime)));
93
- };
94
- throttled.cancel = () => {
95
- if (timeoutId !== null) {
96
- clearTimeout(timeoutId);
97
- timeoutId = null;
98
- }
99
- };
100
- return throttled;
101
- }
102
- /**
103
- * Once — guard against double execution
104
- *
105
- * Useful for: init logic, event safety
106
- *
107
- * @param fn Function to call at most once
108
- * @returns Function that executes fn only on first call
109
- *
110
- * @example
111
- * ```ts
112
- * const init = once(setup);
113
- * init(); // runs
114
- * init(); // does nothing
115
- * init(); // does nothing
116
- * ```
117
- */
118
- function once(fn) {
119
- const callable = fn;
120
- let called = false;
121
- let result;
122
- return ((...args) => {
123
- if (!called) {
124
- called = true;
125
- result = callable(...args);
126
- }
127
- return result;
128
- });
129
- }
130
- /**
131
- * Defer — schedule on microtask queue
132
- *
133
- * Useful for: run-after-current-stack logic
134
- * More reliable than setTimeout(..., 0)
135
- *
136
- * @param fn Function to defer
137
- *
138
- * @example
139
- * ```ts
140
- * defer(() => update()); // runs after current stack, before next macrotask
141
- * ```
142
- */
143
- function defer(fn) {
144
- Promise.resolve().then(fn);
145
- }
146
- /**
147
- * RAF — coalesce multiple updates into single frame
148
- *
149
- * Useful for: animation, layout work, render updates
150
- *
151
- * @param fn Function to schedule on next animation frame
152
- * @returns Function that schedules fn on requestAnimationFrame
153
- *
154
- * @example
155
- * ```ts
156
- * const update = raf(render);
157
- * update(); // schedules on next frame
158
- * update(); // same frame, no duplicate
159
- * ```
160
- */
161
- function raf(fn) {
162
- const callable = fn;
163
- let frameId = null;
164
- let lastArgs = null;
165
- let lastThis = null;
166
- return function(...args) {
167
- lastArgs = args;
168
- lastThis = this;
169
- if (frameId === null) frameId = requestAnimationFrame(() => {
170
- callable.apply(lastThis, lastArgs);
171
- frameId = null;
172
- });
173
- };
174
- }
175
- /**
176
- * Idle — schedule low-priority work
177
- *
178
- * Useful for: background prep, non-urgent updates
179
- * Falls back to setTimeout if requestIdleCallback unavailable
180
- *
181
- * @param fn Function to call when idle
182
- * @param options timeout for fallback
183
- *
184
- * @example
185
- * ```ts
186
- * idle(() => prefetchData());
187
- * ```
188
- */
189
- function idle(fn, options) {
190
- if (typeof requestIdleCallback !== "undefined") requestIdleCallback(fn, options ? { timeout: options.timeout } : void 0);
191
- else Promise.resolve().then(() => {
192
- setTimeout(fn, 0);
193
- });
194
- }
195
- /**
196
- * Timeout — Promise-based delay
197
- *
198
- * Useful for: readable async code, waiting between retries
199
- *
200
- * @param ms Milliseconds to wait
201
- * @returns Promise that resolves after delay
202
- *
203
- * @example
204
- * ```ts
205
- * await timeout(300);
206
- * console.log('300ms later');
207
- * ```
208
- */
209
- function timeout(ms) {
210
- return new Promise((resolve) => setTimeout(resolve, ms));
211
- }
212
- /**
213
- * Retry — attempt function with backoff
214
- *
215
- * Useful for: network calls, transient failures
216
- *
217
- * @param fn Async function to retry
218
- * @param options maxAttempts, delayMs, backoff function
219
- * @returns Promise with final result or error
220
- *
221
- * @example
222
- * ```ts
223
- * const data = await retry(() => fetch(url), {
224
- * maxAttempts: 3,
225
- * delayMs: 100,
226
- * });
227
- * ```
228
- */
229
- async function retry(fn, options) {
230
- const { maxAttempts = 3, delayMs = 100, backoff = (i) => delayMs * Math.pow(2, i) } = options || {};
231
- let lastError = null;
232
- for (let attempt = 0; attempt < maxAttempts; attempt++) try {
233
- return await fn();
234
- } catch (error) {
235
- lastError = error;
236
- if (attempt < maxAttempts - 1) await timeout(backoff(attempt));
237
- }
238
- throw lastError || /* @__PURE__ */ new Error("Retry failed");
239
- }
240
- //#endregion
241
- export { debounce, defer, idle, once, raf, retry, throttle, timeout };
@@ -1,2 +0,0 @@
1
- import { Fragment, JSXComponent, JSXElement, JSXElementType } from "../common/jsx.js";
2
- export type { JSXElement };
package/dist/jsx/index.js DELETED
@@ -1,4 +0,0 @@
1
- import { ELEMENT_TYPE, Fragment } from "../common/jsx.js";
2
- import "./types.js";
3
- import { cloneElement, isElement } from "./utils.js";
4
- export { ELEMENT_TYPE, Fragment, cloneElement, isElement };
package/dist/jsx/types.js DELETED
@@ -1,2 +0,0 @@
1
- import { ELEMENT_TYPE, Fragment, STATIC_CHILDREN } from "../common/jsx.js";
2
- export { ELEMENT_TYPE, Fragment, STATIC_CHILDREN };
@@ -1,4 +0,0 @@
1
- import { JSXElement } from "../common/jsx.js";
2
- //#region src/jsx/utils.d.ts
3
- declare function isElement(value: unknown): value is JSXElement;
4
- declare function cloneElement(element: JSXElement, props: Record<string, unknown>): JSXElement;
package/dist/jsx/utils.js DELETED
@@ -1,17 +0,0 @@
1
- import { ELEMENT_TYPE } from "../common/jsx.js";
2
- import "./types.js";
3
- //#region src/jsx/utils.ts
4
- function isElement(value) {
5
- return typeof value === "object" && value !== null && value.$$typeof === ELEMENT_TYPE;
6
- }
7
- function cloneElement(element, props) {
8
- return {
9
- ...element,
10
- props: {
11
- ...element.props,
12
- ...props
13
- }
14
- };
15
- }
16
- //#endregion
17
- export { cloneElement, isElement };
@@ -1,3 +0,0 @@
1
- import { Fragment, JSXComponent, JSXElement, JSXElementType } from "./common/jsx.js";
2
- import { JSX, jsx, jsxDEV, jsxs } from "./jsx-runtime.js";
3
- export { Fragment, jsx, jsxs };
@@ -1,4 +0,0 @@
1
- import { Fragment } from "./common/jsx.js";
2
- import "./jsx/types.js";
3
- import { jsx, jsxs } from "./jsx-runtime.js";
4
- export { Fragment, jsx, jsxs };
@@ -1,254 +0,0 @@
1
- import { incrementPerfMetric } from "../runtime/perf-metrics.js";
2
- import "../runtime/index.js";
3
- import { extractKey, getRenderedAttributeName, isSkippedProp, parseEventName, readElementClassName, removeRenderedAttribute, setRenderedAttribute, tagNamesEqualIgnoreCase, writeElementClassName } from "./utils.js";
4
- function applyFormControlProp(el, key, value, tagName) {
5
- if (key === "value") {
6
- if (tagNamesEqualIgnoreCase(tagName, "input") || tagNamesEqualIgnoreCase(tagName, "textarea") || tagNamesEqualIgnoreCase(tagName, "select")) {
7
- el.value = String(value);
8
- el.setAttribute("value", String(value));
9
- } else el.setAttribute("value", String(value));
10
- return;
11
- }
12
- if (key === "checked") if (tagNamesEqualIgnoreCase(tagName, "input")) {
13
- const checked = Boolean(value);
14
- el.checked = checked;
15
- if (checked) el.setAttribute("checked", "");
16
- else el.removeAttribute("checked");
17
- } else if (value) el.setAttribute("checked", "");
18
- else el.removeAttribute("checked");
19
- }
20
- function normalizeStylePropertyName(propertyName) {
21
- if (propertyName.startsWith("--")) return propertyName;
22
- return propertyName.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);
23
- }
24
- function collectCurrentStyleEntries(el) {
25
- const entries = /* @__PURE__ */ new Map();
26
- const style = el.style;
27
- if (!style) return entries;
28
- for (let index = 0; index < style.length; index += 1) {
29
- const propertyName = style.item(index);
30
- entries.set(propertyName, style.getPropertyValue(propertyName));
31
- }
32
- return entries;
33
- }
34
- function normalizeStyleEntries(value) {
35
- if (!value || typeof value !== "object" || Array.isArray(value)) return null;
36
- const entries = /* @__PURE__ */ new Map();
37
- for (const [key, entryValue] of Object.entries(value)) {
38
- if (entryValue === void 0 || entryValue === null || entryValue === false) continue;
39
- entries.set(normalizeStylePropertyName(key), String(entryValue));
40
- }
41
- return entries;
42
- }
43
- function applyStylePropValue(el, value) {
44
- const style = el.style;
45
- if (!style) {
46
- if (value === null || value === void 0 || value === false) {
47
- el.removeAttribute("style");
48
- return;
49
- }
50
- el.setAttribute("style", String(value));
51
- return;
52
- }
53
- if (value === null || value === void 0 || value === false) {
54
- if (!el.getAttribute("style")) {
55
- incrementPerfMetric("skippedDomPropWrites");
56
- return;
57
- }
58
- style.cssText = "";
59
- el.removeAttribute("style");
60
- return;
61
- }
62
- if (typeof value === "string") {
63
- if ((el.getAttribute("style") ?? "") === value) {
64
- incrementPerfMetric("skippedDomPropWrites");
65
- return;
66
- }
67
- style.cssText = value;
68
- return;
69
- }
70
- const nextEntries = normalizeStyleEntries(value);
71
- if (!nextEntries) {
72
- const nextText = String(value);
73
- if ((el.getAttribute("style") ?? "") === nextText) {
74
- incrementPerfMetric("skippedDomPropWrites");
75
- return;
76
- }
77
- style.cssText = nextText;
78
- return;
79
- }
80
- const previousEntries = collectCurrentStyleEntries(el);
81
- let didWrite = false;
82
- for (const [propertyName] of previousEntries) {
83
- if (nextEntries.has(propertyName)) continue;
84
- style.removeProperty(propertyName);
85
- didWrite = true;
86
- }
87
- for (const [propertyName, propertyValue] of nextEntries) {
88
- if (previousEntries.get(propertyName) === propertyValue) continue;
89
- style.setProperty(propertyName, propertyValue);
90
- didWrite = true;
91
- }
92
- if (!didWrite) incrementPerfMetric("skippedDomPropWrites");
93
- }
94
- function applyStaticScalarPropsToElement(el, props, tagName) {
95
- for (const key in props) {
96
- if (isSkippedProp(key)) continue;
97
- const value = props[key];
98
- if (value === void 0 || value === null || value === false) continue;
99
- if (key === "class" || key === "className") writeElementClassName(el, String(value));
100
- else if (key === "style") applyStylePropValue(el, value);
101
- else if (key === "value" || key === "checked") applyFormControlProp(el, key, value, tagName);
102
- else setRenderedAttribute(el, key, String(value));
103
- }
104
- }
105
- function tokenizeClassValue(value) {
106
- if (typeof value !== "string") return null;
107
- const trimmed = value.trim();
108
- if (trimmed.length === 0) return [];
109
- return trimmed.split(/\s+/);
110
- }
111
- function patchClassList(el, previousTokens, nextTokens) {
112
- if (previousTokens.length === nextTokens.length) {
113
- let identical = true;
114
- for (let index = 0; index < previousTokens.length; index += 1) if (previousTokens[index] !== nextTokens[index]) {
115
- identical = false;
116
- break;
117
- }
118
- if (identical) return;
119
- }
120
- if (previousTokens.length === 0) {
121
- if (nextTokens.length === 0) return;
122
- el.classList.add(...nextTokens);
123
- incrementPerfMetric("classListPatchOps");
124
- return;
125
- }
126
- if (nextTokens.length === 0) {
127
- el.classList.remove(...previousTokens);
128
- incrementPerfMetric("classListPatchOps");
129
- return;
130
- }
131
- if (previousTokens.length === 1 && nextTokens.length === 1) {
132
- el.classList.remove(previousTokens[0]);
133
- el.classList.add(nextTokens[0]);
134
- incrementPerfMetric("classListPatchOps");
135
- return;
136
- }
137
- const nextSet = new Set(nextTokens);
138
- const previousSet = new Set(previousTokens);
139
- for (const token of previousTokens) if (!nextSet.has(token)) el.classList.remove(token);
140
- for (const token of nextTokens) if (!previousSet.has(token)) el.classList.add(token);
141
- incrementPerfMetric("classListPatchOps");
142
- }
143
- function applyClassPropValue(el, value, previousValue, descriptor) {
144
- const nextString = String(value);
145
- const nextTokens = tokenizeClassValue(nextString);
146
- const previousTokens = descriptor?.lastClassTokens ?? tokenizeClassValue(previousValue);
147
- if (nextTokens && previousTokens) {
148
- patchClassList(el, previousTokens, nextTokens);
149
- if (descriptor) descriptor.lastClassTokens = nextTokens;
150
- return;
151
- }
152
- writeElementClassName(el, nextString);
153
- if (descriptor) descriptor.lastClassTokens = nextTokens;
154
- }
155
- function applyScalarPropValue(el, key, value, tagName, previousValue, descriptor) {
156
- if (value === void 0 || value === null || value === false) {
157
- if (key === "class" || key === "className") {
158
- const previousTokens = descriptor?.lastClassTokens;
159
- if (previousTokens && previousTokens.length > 0) {
160
- el.classList.remove(...previousTokens);
161
- incrementPerfMetric("classListPatchOps");
162
- } else writeElementClassName(el, "");
163
- if (descriptor) descriptor.lastClassTokens = [];
164
- } else if (key === "value") applyFormControlProp(el, key, "", tagName);
165
- else if (key === "checked") applyFormControlProp(el, key, false, tagName);
166
- else if (key === "style") applyStylePropValue(el, null);
167
- else removeRenderedAttribute(el, key);
168
- return;
169
- }
170
- if (key === "class" || key === "className") applyClassPropValue(el, value, previousValue, descriptor);
171
- else if (key === "style") applyStylePropValue(el, value);
172
- else if (key === "value" || key === "checked") applyFormControlProp(el, key, value, tagName);
173
- else setRenderedAttribute(el, key, String(value));
174
- }
175
- function removeStaleAttributes(el, vnode, props) {
176
- const desiredAttributes = /* @__PURE__ */ new Set();
177
- if (extractKey(vnode) !== void 0) {
178
- desiredAttributes.add("data-key");
179
- desiredAttributes.add("data-askr-key-kind");
180
- }
181
- for (const propName in props) {
182
- if (isSkippedProp(propName)) continue;
183
- if (parseEventName(propName)) continue;
184
- const value = props[propName];
185
- if (value === void 0 || value === null || value === false) continue;
186
- desiredAttributes.add(getRenderedAttributeName(el, propName));
187
- }
188
- for (const attribute of Array.from(el.attributes)) if (!desiredAttributes.has(getRenderedAttributeName(el, attribute.name))) removeRenderedAttribute(el, attribute.name);
189
- }
190
- function materializeKey(el, vnode, props) {
191
- const rawKey = vnode.key ?? props.key;
192
- const vnodeKey = rawKey === null || rawKey === void 0 ? void 0 : typeof rawKey === "symbol" ? String(rawKey) : rawKey;
193
- if (vnodeKey !== void 0) {
194
- const nextKey = String(vnodeKey);
195
- if (el.getAttribute("data-key") !== nextKey) el.setAttribute("data-key", nextKey);
196
- const keyKind = typeof vnodeKey;
197
- if (el.getAttribute("data-askr-key-kind") !== keyKind) el.setAttribute("data-askr-key-kind", keyKind);
198
- }
199
- }
200
- /** @internal Materialize keyed metadata on a newly created or cloned node. */
201
- function materializeFreshKey(el, vnode, props) {
202
- const rawKey = vnode.key ?? props.key;
203
- if (rawKey === null || rawKey === void 0) return;
204
- const vnodeKey = typeof rawKey === "symbol" ? String(rawKey) : rawKey;
205
- el.setAttribute("data-key", String(vnodeKey));
206
- const keyKind = typeof vnodeKey;
207
- if (el.getAttribute("data-askr-key-kind") !== keyKind) el.setAttribute("data-askr-key-kind", keyKind);
208
- }
209
- function hasMatchingStaticPropsInternal(el, props, vnodeType, ignoreEventProps) {
210
- let staticPropCount = 0;
211
- for (const key in props) {
212
- if (isSkippedProp(key)) continue;
213
- const value = props[key];
214
- if (value === void 0 || value === null || value === false) return false;
215
- if (parseEventName(key)) {
216
- if (ignoreEventProps) continue;
217
- return false;
218
- }
219
- if (typeof value === "function") return false;
220
- if (key === "class" || key === "className") {
221
- if (readElementClassName(el) !== String(value)) return false;
222
- staticPropCount += 1;
223
- continue;
224
- }
225
- if (key === "style") {
226
- const styleValue = typeof value === "string" ? value.trim().replace(/;$/, "") : null;
227
- const domStyle = el.getAttribute("style")?.trim().replace(/;$/, "") ?? "";
228
- if (styleValue === null || domStyle !== styleValue) return false;
229
- staticPropCount += 1;
230
- continue;
231
- }
232
- if (key === "value" || key === "checked") {
233
- if (el[key] !== value) return false;
234
- staticPropCount += 1;
235
- continue;
236
- }
237
- if (key === "selected" && vnodeType === "option") {
238
- if (el.selected !== Boolean(value)) return false;
239
- staticPropCount += 1;
240
- continue;
241
- }
242
- if (el.getAttribute(getRenderedAttributeName(el, key)) !== String(value)) return false;
243
- staticPropCount += 1;
244
- }
245
- return el.attributes.length === staticPropCount;
246
- }
247
- function hasMatchingStaticProps(el, props, vnodeType) {
248
- return hasMatchingStaticPropsInternal(el, props, vnodeType, false);
249
- }
250
- function hasMatchingStaticPropsIgnoringEvents(el, props, vnodeType) {
251
- return hasMatchingStaticPropsInternal(el, props, vnodeType, true);
252
- }
253
- //#endregion
254
- export { applyClassPropValue, applyFormControlProp, applyScalarPropValue, applyStaticScalarPropsToElement, applyStylePropValue, hasMatchingStaticProps, hasMatchingStaticPropsIgnoringEvents, materializeFreshKey, materializeKey, removeStaleAttributes };