@askrjs/askr 0.0.52 → 0.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +182 -9
- package/dist/actions/index.d.ts +2 -0
- package/dist/actions/index.js +103 -0
- package/dist/{common/attr-names.js → attr-names-CjhzmHOn.js} +1 -1
- package/dist/benchmark.d.ts +6 -2
- package/dist/benchmark.js +63 -11
- package/dist/boot/index.d.ts +61 -2
- package/dist/boot/index.js +1 -203
- package/dist/boot-2ZR3MtO0.js +647 -0
- package/dist/cleanup-DScKZG2i.js +487 -0
- package/dist/component-internal-D9PLuFUc.js +614 -0
- package/dist/component-lifecycle-C7lnU9Bt.js +359 -0
- package/dist/{runtime/component-scope.js → component-scope-CC3cojX9.js} +8 -1
- package/dist/component-scope-CvPba6O6.d.ts +12 -0
- package/dist/components/index.d.ts +17 -2
- package/dist/components/index.js +39 -1
- package/dist/compose-ref-Cc_YkUpM.js +92 -0
- package/dist/{foundations/utilities/compose-ref.d.ts → compose-ref-Cizq72-x.d.ts} +1 -1
- package/dist/control/index.d.ts +1 -3
- package/dist/control/index.js +1 -3
- package/dist/control-BI4RMD2z.d.ts +437 -0
- package/dist/control-Bf4Wkdvv.d.ts +9 -0
- package/dist/{common/control.js → control-DhFRTIoE.js} +1 -1
- package/dist/control-mXROCjL3.js +165 -0
- package/dist/data/index.d.ts +2 -6
- package/dist/data/index.js +4 -5
- package/dist/data-B9dauyDn.js +559 -0
- package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +32 -31
- package/dist/deferred-DklLG4qM.js +386 -0
- package/dist/{runtime/effect.js → effect-BwnIvLah.js} +4 -4
- package/dist/fastlane-Dw8SOBr9.js +343 -0
- package/dist/for-internal-CSz8Unkq.js +1563 -0
- package/dist/foundations/icon/index.d.ts +68 -2
- package/dist/foundations/icon/index.js +85 -1
- package/dist/foundations/index.d.ts +2 -5
- package/dist/foundations/index.js +2 -5
- package/dist/foundations/interactions/index.d.ts +264 -6
- package/dist/foundations/interactions/index.js +1 -6
- package/dist/foundations/state/index.d.ts +32 -1
- package/dist/foundations/state/index.js +78 -1
- package/dist/foundations/structures/index.d.ts +2 -7
- package/dist/foundations/structures/index.js +2 -7
- package/dist/foundations/utilities/index.d.ts +2 -6
- package/dist/foundations/utilities/index.js +2 -5
- package/dist/fx/index.d.ts +190 -3
- package/dist/fx/index.js +454 -4
- package/dist/index-B1LNotpU.d.ts +239 -0
- package/dist/index-Bki2rqcr.d.ts +233 -0
- package/dist/index-BnU0NPwM.d.ts +101 -0
- package/dist/index-C8iW3xCt.d.ts +44 -0
- package/dist/index-DwxdIA-t.d.ts +48 -0
- package/dist/{runtime/runtime.d.ts → index-Zb31mCiU.d.ts} +31 -8
- package/dist/index.d.ts +8 -13
- package/dist/index.js +150 -15
- package/dist/interactions-w7gQN4ha.js +280 -0
- package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -1
- package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -5
- package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -1
- package/dist/jsx-dev-runtime.d.ts +2 -4
- package/dist/jsx-dev-runtime.js +7 -5
- package/dist/jsx-runtime-92bV2hSa.d.ts +34 -0
- package/dist/jsx-runtime-BVVgDSdq.d.ts +1 -0
- package/dist/jsx-runtime.d.ts +2 -35
- package/dist/jsx-runtime.js +11 -5
- package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-CdRjdsHo.js} +4 -5
- package/dist/navigate-BVDCzOuB.d.ts +34 -0
- package/dist/navigate-D17eVQyI.js +1449 -0
- package/dist/{runtime/portal.js → portal-C47xkwXj.js} +71 -41
- package/dist/query-registry-CQIT4mXr.js +73 -0
- package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -6
- package/dist/renderer-DrLRAD5y.js +6266 -0
- package/dist/{runtime/resource-operation.js → resource-operation-BNY29MVH.js} +118 -15
- package/dist/resources/index.d.ts +42 -3
- package/dist/resources/index.js +3 -4
- package/dist/{common/route-activity.js → route-activity-CNJfpwx-.js} +1 -1
- package/dist/route-matching-vJpvLVbX.js +515 -0
- package/dist/router/index.d.ts +166 -14
- package/dist/router/index.js +150 -12
- package/dist/{common/router.d.ts → router-DCfwLBr-.d.ts} +72 -28
- package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -1
- package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -3
- package/dist/{runtime/selector.js → selector-DafVYzV4.js} +34 -11
- package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -1
- package/dist/ssg/index.d.ts +252 -4
- package/dist/ssg/index.js +857 -1
- package/dist/ssr/index.d.ts +225 -8
- package/dist/ssr/index.js +3 -6
- package/dist/{common/ssr.js → ssr-CbQO5xd3.js} +1 -1
- package/dist/ssr-DEARZxJ5.js +1413 -0
- package/dist/{runtime/state.js → state-DPl8lffD.js} +3 -5
- package/dist/structures-DUB3HchX.js +221 -0
- package/dist/testing/index.d.ts +3 -2
- package/dist/testing/index.js +2 -5
- package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -5
- package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -1
- package/dist/{ssr/verify-hydration.js → verify-hydration-BWwu-mWu.js} +2 -2
- package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -2
- package/package.json +12 -7
- package/dist/bench/components/benchmark-row.d.ts +0 -20
- package/dist/bench/components/benchmark-row.js +0 -40
- package/dist/bench/components/benchmark-table.js +0 -23
- package/dist/bin/askr-ssg.d.ts +0 -27
- package/dist/bin/askr-ssg.js +0 -186
- package/dist/boot/hydration.js +0 -139
- package/dist/boot/root-lifecycle.d.ts +0 -18
- package/dist/boot/root-lifecycle.js +0 -209
- package/dist/boot/route-startup.js +0 -54
- package/dist/boot/types.d.ts +0 -61
- package/dist/common/component.d.ts +0 -18
- package/dist/common/control.d.ts +0 -12
- package/dist/common/dom-range.d.ts +0 -13
- package/dist/common/env.js +0 -41
- package/dist/common/error-boundary.d.ts +0 -15
- package/dist/common/invariant.js +0 -15
- package/dist/common/jsx.d.ts +0 -22
- package/dist/common/logger.js +0 -34
- package/dist/common/promise.js +0 -6
- package/dist/common/ssr-errors.d.ts +0 -10
- package/dist/common/ssr-errors.js +0 -14
- package/dist/common/ssr.d.ts +0 -41
- package/dist/common/vnode.d.ts +0 -21
- package/dist/components/error-boundary.d.ts +0 -14
- package/dist/components/error-boundary.js +0 -41
- package/dist/components/link.d.ts +0 -68
- package/dist/components/link.js +0 -74
- package/dist/control/case.d.ts +0 -18
- package/dist/control/case.js +0 -68
- package/dist/control/for.d.ts +0 -23
- package/dist/control/for.js +0 -61
- package/dist/control/shared.d.ts +0 -8
- package/dist/control/shared.js +0 -18
- package/dist/control/show.d.ts +0 -14
- package/dist/control/show.js +0 -32
- package/dist/data/data-runtime.d.ts +0 -27
- package/dist/data/invalidation.d.ts +0 -8
- package/dist/data/invalidation.js +0 -25
- package/dist/data/mutation-cell.d.ts +0 -27
- package/dist/data/mutation-cell.js +0 -133
- package/dist/data/query-cell.d.ts +0 -47
- package/dist/data/query-cell.js +0 -324
- package/dist/data/query-key.js +0 -40
- package/dist/data/shared.js +0 -20
- package/dist/data/testing.js +0 -2
- package/dist/data/types.d.ts +0 -160
- package/dist/foundations/icon/icon.d.ts +0 -52
- package/dist/foundations/icon/icon.js +0 -86
- package/dist/foundations/icon/icon.types.d.ts +0 -21
- package/dist/foundations/interactions/dismissable.d.ts +0 -71
- package/dist/foundations/interactions/dismissable.js +0 -24
- package/dist/foundations/interactions/focusable.d.ts +0 -21
- package/dist/foundations/interactions/focusable.js +0 -16
- package/dist/foundations/interactions/hoverable.d.ts +0 -25
- package/dist/foundations/interactions/hoverable.js +0 -13
- package/dist/foundations/interactions/interaction-policy.d.ts +0 -49
- package/dist/foundations/interactions/interaction-policy.js +0 -120
- package/dist/foundations/interactions/pressable.d.ts +0 -60
- package/dist/foundations/interactions/pressable.js +0 -49
- package/dist/foundations/interactions/roving-focus.d.ts +0 -51
- package/dist/foundations/interactions/roving-focus.js +0 -69
- package/dist/foundations/state/controllable.d.ts +0 -32
- package/dist/foundations/state/controllable.js +0 -80
- package/dist/foundations/structures/collection.d.ts +0 -51
- package/dist/foundations/structures/collection.js +0 -49
- package/dist/foundations/structures/layer.d.ts +0 -80
- package/dist/foundations/structures/layer.js +0 -79
- package/dist/foundations/structures/layout.d.ts +0 -32
- package/dist/foundations/structures/layout.js +0 -11
- package/dist/foundations/structures/portal.d.ts +0 -2
- package/dist/foundations/structures/portal.js +0 -3
- package/dist/foundations/structures/presence.d.ts +0 -36
- package/dist/foundations/structures/presence.js +0 -37
- package/dist/foundations/structures/slot.d.ts +0 -34
- package/dist/foundations/structures/slot.js +0 -39
- package/dist/foundations/utilities/aria.d.ts +0 -15
- package/dist/foundations/utilities/aria.js +0 -15
- package/dist/foundations/utilities/compose-handlers.d.ts +0 -36
- package/dist/foundations/utilities/compose-handlers.js +0 -18
- package/dist/foundations/utilities/compose-ref.js +0 -16
- package/dist/foundations/utilities/event-types.d.ts +0 -19
- package/dist/foundations/utilities/merge-props.d.ts +0 -4
- package/dist/foundations/utilities/merge-props.js +0 -47
- package/dist/foundations/utilities/use-id.d.ts +0 -31
- package/dist/fx/fx.d.ts +0 -32
- package/dist/fx/fx.js +0 -211
- package/dist/fx/noop.js +0 -7
- package/dist/fx/timing.d.ts +0 -158
- package/dist/fx/timing.js +0 -241
- package/dist/jsx/index.d.ts +0 -2
- package/dist/jsx/index.js +0 -4
- package/dist/jsx/types.js +0 -2
- package/dist/jsx/utils.d.ts +0 -4
- package/dist/jsx/utils.js +0 -17
- package/dist/jsx-runtime2.d.ts +0 -3
- package/dist/jsx-runtime2.js +0 -4
- package/dist/renderer/attributes.js +0 -254
- package/dist/renderer/boundaries.js +0 -142
- package/dist/renderer/boundary-materialization.js +0 -72
- package/dist/renderer/boundary-range-adoption.js +0 -76
- package/dist/renderer/boundary-range-sync.js +0 -101
- package/dist/renderer/boundary-state.js +0 -50
- package/dist/renderer/child-shape.js +0 -83
- package/dist/renderer/children-fastpath.js +0 -149
- package/dist/renderer/children.js +0 -158
- package/dist/renderer/cleanup.js +0 -267
- package/dist/renderer/component-host-cleanup.js +0 -143
- package/dist/renderer/component-host-instances.js +0 -116
- package/dist/renderer/component-host-replacement.js +0 -105
- package/dist/renderer/component-host-results.js +0 -138
- package/dist/renderer/component-host.js +0 -172
- package/dist/renderer/dom-host.js +0 -11
- package/dist/renderer/dom-internal.js +0 -243
- package/dist/renderer/dom-range.js +0 -161
- package/dist/renderer/dom.js +0 -11
- package/dist/renderer/element-children.js +0 -359
- package/dist/renderer/env.js +0 -2
- package/dist/renderer/error-boundary-dom.js +0 -86
- package/dist/renderer/evaluate-dom-range.js +0 -84
- package/dist/renderer/evaluate-reconcile.js +0 -257
- package/dist/renderer/evaluate.js +0 -95
- package/dist/renderer/fastpath.js +0 -142
- package/dist/renderer/for-commit-dom-map.js +0 -71
- package/dist/renderer/for-commit-removal.js +0 -27
- package/dist/renderer/for-commit-reorder.js +0 -87
- package/dist/renderer/for-commit.js +0 -442
- package/dist/renderer/hydration-boundaries.js +0 -60
- package/dist/renderer/hydration-listener-transaction.js +0 -49
- package/dist/renderer/index.js +0 -39
- package/dist/renderer/intrinsic-blueprint-analysis.js +0 -202
- package/dist/renderer/intrinsic-blueprint-bindings.js +0 -152
- package/dist/renderer/intrinsic-blueprint-materialization.js +0 -100
- package/dist/renderer/intrinsic-blueprint.js +0 -30
- package/dist/renderer/intrinsic-hydration-adoption.js +0 -66
- package/dist/renderer/keyed-children.js +0 -26
- package/dist/renderer/keyed.js +0 -167
- package/dist/renderer/namespaces.js +0 -21
- package/dist/renderer/prop-bindings.js +0 -315
- package/dist/renderer/reactive-child-dom.js +0 -139
- package/dist/renderer/reactive-child-sources.js +0 -182
- package/dist/renderer/reactive-children.js +0 -303
- package/dist/renderer/reconcile-commit.js +0 -36
- package/dist/renderer/reconcile-fastpaths.js +0 -100
- package/dist/renderer/reconcile-resolution.js +0 -163
- package/dist/renderer/reconcile.js +0 -37
- package/dist/renderer/retained-element-rollback.js +0 -288
- package/dist/renderer/stable-patch.js +0 -80
- package/dist/renderer/static-reuse.js +0 -94
- package/dist/renderer/types.js +0 -2
- package/dist/renderer/utils.js +0 -265
- package/dist/router/access.js +0 -34
- package/dist/router/activity.d.ts +0 -9
- package/dist/router/activity.js +0 -85
- package/dist/router/authoring.d.ts +0 -21
- package/dist/router/authoring.js +0 -196
- package/dist/router/internal-types.d.ts +0 -30
- package/dist/router/lazy.d.ts +0 -18
- package/dist/router/lazy.js +0 -50
- package/dist/router/manifest.d.ts +0 -9
- package/dist/router/manifest.js +0 -47
- package/dist/router/match.js +0 -120
- package/dist/router/navigate.d.ts +0 -10
- package/dist/router/navigate.js +0 -73
- package/dist/router/navigation-registry.d.ts +0 -31
- package/dist/router/navigation-registry.js +0 -103
- package/dist/router/navigation-scroll.d.ts +0 -13
- package/dist/router/navigation-scroll.js +0 -91
- package/dist/router/navigation-targets.d.ts +0 -30
- package/dist/router/navigation-targets.js +0 -634
- package/dist/router/policy.d.ts +0 -27
- package/dist/router/policy.js +0 -130
- package/dist/router/rendering.d.ts +0 -9
- package/dist/router/rendering.js +0 -47
- package/dist/router/resolution.d.ts +0 -3
- package/dist/router/resolution.js +0 -84
- package/dist/router/route-context.js +0 -77
- package/dist/router/route-matching.d.ts +0 -19
- package/dist/router/route-matching.js +0 -173
- package/dist/router/route-query.d.ts +0 -16
- package/dist/router/route-query.js +0 -45
- package/dist/router/route.d.ts +0 -8
- package/dist/router/route.js +0 -10
- package/dist/router/store.d.ts +0 -49
- package/dist/router/store.js +0 -169
- package/dist/router/testing.js +0 -4
- package/dist/runtime/access.d.ts +0 -19
- package/dist/runtime/access.js +0 -43
- package/dist/runtime/child-scope.d.ts +0 -41
- package/dist/runtime/child-scope.js +0 -134
- package/dist/runtime/component-cleanup.d.ts +0 -15
- package/dist/runtime/component-cleanup.js +0 -68
- package/dist/runtime/component-commit.js +0 -167
- package/dist/runtime/component-facade.d.ts +0 -5
- package/dist/runtime/component-facade.js +0 -6
- package/dist/runtime/component-internal.d.ts +0 -105
- package/dist/runtime/component-internal.js +0 -237
- package/dist/runtime/component-lifecycle.d.ts +0 -10
- package/dist/runtime/component-lifecycle.js +0 -33
- package/dist/runtime/component-scope.d.ts +0 -54
- package/dist/runtime/component.d.ts +0 -5
- package/dist/runtime/component.js +0 -6
- package/dist/runtime/context.d.ts +0 -72
- package/dist/runtime/context.js +0 -236
- package/dist/runtime/control.d.ts +0 -62
- package/dist/runtime/control.js +0 -239
- package/dist/runtime/derive.d.ts +0 -16
- package/dist/runtime/derive.js +0 -140
- package/dist/runtime/dev-namespace.d.ts +0 -30
- package/dist/runtime/dev-namespace.js +0 -64
- package/dist/runtime/effect.d.ts +0 -35
- package/dist/runtime/error-boundary.d.ts +0 -4
- package/dist/runtime/error-boundary.js +0 -29
- package/dist/runtime/events.d.ts +0 -58
- package/dist/runtime/events.js +0 -201
- package/dist/runtime/execution-model.d.ts +0 -6
- package/dist/runtime/execution-model.js +0 -13
- package/dist/runtime/fastlane.d.ts +0 -33
- package/dist/runtime/fastlane.js +0 -173
- package/dist/runtime/for-bench.d.ts +0 -40
- package/dist/runtime/for-bench.js +0 -13
- package/dist/runtime/for-internal.d.ts +0 -106
- package/dist/runtime/for-internal.js +0 -285
- package/dist/runtime/for-reconcile.d.ts +0 -7
- package/dist/runtime/for-reconcile.js +0 -442
- package/dist/runtime/for-scopes.d.ts +0 -26
- package/dist/runtime/for-scopes.js +0 -280
- package/dist/runtime/for-signals.d.ts +0 -39
- package/dist/runtime/for-signals.js +0 -213
- package/dist/runtime/for-types.d.ts +0 -8
- package/dist/runtime/for.d.ts +0 -4
- package/dist/runtime/for.js +0 -5
- package/dist/runtime/index.d.ts +0 -24
- package/dist/runtime/index.js +0 -33
- package/dist/runtime/lifecycle-batch.d.ts +0 -59
- package/dist/runtime/lifecycle-batch.js +0 -178
- package/dist/runtime/lifecycle-operation-settlement.d.ts +0 -5
- package/dist/runtime/lifecycle-operation-settlement.js +0 -51
- package/dist/runtime/lifecycle-operations.d.ts +0 -30
- package/dist/runtime/operations.d.ts +0 -3
- package/dist/runtime/operations.js +0 -3
- package/dist/runtime/perf-metrics.d.ts +0 -27
- package/dist/runtime/perf-metrics.js +0 -6
- package/dist/runtime/portal.d.ts +0 -21
- package/dist/runtime/readable.d.ts +0 -34
- package/dist/runtime/readable.js +0 -183
- package/dist/runtime/resource-cell.js +0 -112
- package/dist/runtime/resource-operation.d.ts +0 -12
- package/dist/runtime/runtime.js +0 -57
- package/dist/runtime/selector-store.js +0 -22
- package/dist/runtime/selector.d.ts +0 -10
- package/dist/runtime/snapshot-source.d.ts +0 -9
- package/dist/runtime/state.d.ts +0 -54
- package/dist/ssg/batch-render.js +0 -101
- package/dist/ssg/create-static-gen.d.ts +0 -66
- package/dist/ssg/create-static-gen.js +0 -250
- package/dist/ssg/generate-metadata.js +0 -92
- package/dist/ssg/generation-plan.js +0 -68
- package/dist/ssg/incremental-manifest.js +0 -54
- package/dist/ssg/resolve-ssg-data.js +0 -103
- package/dist/ssg/route-utils.js +0 -22
- package/dist/ssg/static-routes.js +0 -100
- package/dist/ssg/types.d.ts +0 -188
- package/dist/ssg/write-static-files.js +0 -77
- package/dist/ssr/attrs.js +0 -92
- package/dist/ssr/boundaries.js +0 -124
- package/dist/ssr/component-runtime.js +0 -85
- package/dist/ssr/context.d.ts +0 -49
- package/dist/ssr/context.js +0 -89
- package/dist/ssr/errors.d.ts +0 -9
- package/dist/ssr/errors.js +0 -12
- package/dist/ssr/escape.js +0 -191
- package/dist/ssr/hydration-data.js +0 -8
- package/dist/ssr/hydration-verify.d.ts +0 -11
- package/dist/ssr/hydration-verify.js +0 -171
- package/dist/ssr/index-internal.d.ts +0 -14
- package/dist/ssr/index-internal.js +0 -17
- package/dist/ssr/render-keys.js +0 -14
- package/dist/ssr/render-resolved.d.ts +0 -19
- package/dist/ssr/render-resolved.js +0 -33
- package/dist/ssr/render-sync.d.ts +0 -20
- package/dist/ssr/render-sync.js +0 -283
- package/dist/ssr/route-policy-resolution.js +0 -76
- package/dist/ssr/route-render.d.ts +0 -76
- package/dist/ssr/route-render.js +0 -118
- package/dist/ssr/sink.d.ts +0 -25
- package/dist/ssr/sink.js +0 -84
- package/dist/ssr/types.d.ts +0 -22
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { ComponentInstance } from "./
|
|
2
|
-
import {
|
|
3
|
-
import { Scheduler } from "./scheduler.js";
|
|
4
|
-
|
|
1
|
+
import { n as ReadableSource, r as ComponentInstance } from "./control-BI4RMD2z.js";
|
|
2
|
+
import { t as Scheduler } from "./scheduler-CmLO4Dfm.js";
|
|
5
3
|
//#region src/runtime/runtime.d.ts
|
|
6
4
|
interface RuntimeKeyedReorderDecision {
|
|
7
5
|
useFastPath: boolean;
|
|
@@ -16,7 +14,7 @@ interface RuntimeKeyedReorderDecision {
|
|
|
16
14
|
interface RuntimeRendererHost {
|
|
17
15
|
evaluate(node: unknown, target: Element | null, context?: object, retainedOwner?: ComponentInstance): void;
|
|
18
16
|
cleanupInstancesUnder(node: Node): void;
|
|
19
|
-
teardownNodeSubtree(root:
|
|
17
|
+
teardownNodeSubtree(root: Node): void;
|
|
20
18
|
populateKeyMapForElement(parent: Element): void;
|
|
21
19
|
getKeyMapForElement(parent: Element): Map<string | number, Element> | undefined;
|
|
22
20
|
isKeyedReorderFastPathEligible(parent: Element, children: unknown[], oldKeyMap: Map<string | number, Element> | undefined): RuntimeKeyedReorderDecision;
|
|
@@ -33,9 +31,34 @@ declare class AskrRuntime {
|
|
|
33
31
|
get renderer(): RuntimeRendererHost;
|
|
34
32
|
configureRenderer(renderer: RuntimeRendererHost): void;
|
|
35
33
|
}
|
|
36
|
-
declare const defaultRuntime: AskrRuntime;
|
|
37
34
|
declare function createRuntime(options?: AskrRuntimeOptions): AskrRuntime;
|
|
38
35
|
declare function getDefaultRuntime(): AskrRuntime;
|
|
39
|
-
declare function configureRuntimeRenderer(renderer: RuntimeRendererHost, runtime?: AskrRuntime): void;
|
|
40
36
|
//#endregion
|
|
41
|
-
|
|
37
|
+
//#region src/runtime/snapshot-source.d.ts
|
|
38
|
+
declare const SNAPSHOT_SOURCE_BRAND: unique symbol;
|
|
39
|
+
type SnapshotSourceBrand = {
|
|
40
|
+
readonly [SNAPSHOT_SOURCE_BRAND]: true;
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/runtime/derive.d.ts
|
|
44
|
+
interface Derived<T> extends ReadableSource<T> {
|
|
45
|
+
(): T;
|
|
46
|
+
}
|
|
47
|
+
type SnapshotSource<T> = {
|
|
48
|
+
value: T | null;
|
|
49
|
+
pending?: boolean;
|
|
50
|
+
error?: Error | null;
|
|
51
|
+
} & SnapshotSourceBrand;
|
|
52
|
+
declare function derive<TOut>(fn: () => TOut): Derived<TOut>;
|
|
53
|
+
declare function derive<TIn, TOut>(source: SnapshotSource<TIn> | TIn | (() => TIn), map: (value: TIn) => TOut): Derived<TOut | null>;
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region src/runtime/selector.d.ts
|
|
56
|
+
interface Selector<T> {
|
|
57
|
+
(candidate: T): boolean;
|
|
58
|
+
}
|
|
59
|
+
type SelectorEquals<T> = {
|
|
60
|
+
bivarianceHack(a: T, b: T): boolean;
|
|
61
|
+
}['bivarianceHack'];
|
|
62
|
+
declare function selector<T>(source: () => T, equals?: SelectorEquals<T>): Selector<T>;
|
|
63
|
+
//#endregion
|
|
64
|
+
export { AskrRuntime as a, RuntimeRendererHost as c, derive as i, createRuntime as l, selector as n, AskrRuntimeOptions as o, Derived as r, RuntimeKeyedReorderDecision as s, Selector as t, getDefaultRuntime as u };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Fragment } from "./
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
import { Selector, selector } from "./runtime/selector.js";
|
|
10
|
-
import { For, ForProps } from "./control/for.js";
|
|
11
|
-
import { Show, ShowProps } from "./control/show.js";
|
|
12
|
-
import { Case, CaseProps, Match, MatchProps } from "./control/case.js";
|
|
13
|
-
export { AskrRuntime, type AskrRuntimeOptions, Case, type CaseProps, type Context, type Derived, For, type ForProps, Fragment, Match, type MatchProps, type Props, type RuntimeKeyedReorderDecision, type RuntimeRendererHost, type Selector, Show, type ShowProps, type State, type StateSetter, type StateTuple, createRuntime, defineContext, derive, getDefaultRuntime, getSignal, jsx, jsxs, readContext, selector, state };
|
|
1
|
+
import { _ as state, a as defineScope, g as StateTuple, h as StateSetter, i as Scope, m as State, o as readScope } from "./control-BI4RMD2z.js";
|
|
2
|
+
import { s as Props, t as Fragment } from "./jsx-CP0gmYwJ.js";
|
|
3
|
+
import { t as getSignal } from "./component-scope-CvPba6O6.js";
|
|
4
|
+
import { a as AskrRuntime, c as RuntimeRendererHost, i as derive, l as createRuntime, n as selector, o as AskrRuntimeOptions, r as Derived, s as RuntimeKeyedReorderDecision, t as Selector, u as getDefaultRuntime } from "./index-Zb31mCiU.js";
|
|
5
|
+
import { a as Show, c as ForProps, i as MatchProps, n as CaseProps, o as ShowProps, r as Match, s as For, t as Case } from "./index-DwxdIA-t.js";
|
|
6
|
+
import { i as jsxs, n as jsx } from "./jsx-runtime-92bV2hSa.js";
|
|
7
|
+
import { A as ServerQueryHandler, D as QueryPrefetchContext, T as QueryDefinition, a as defineServerQueries, c as prefetchQuery, g as createQuery, i as defineQuery, l as serveQuery, o as dehydrateDataRuntime, s as hydrateDataRuntime, v as DataRuntime } from "./index-Bki2rqcr.js";
|
|
8
|
+
export { AskrRuntime, type AskrRuntimeOptions, Case, type CaseProps, type DataRuntime, type Derived, For, type ForProps, Fragment, Match, type MatchProps, type Props, type QueryDefinition, type QueryPrefetchContext, type RuntimeKeyedReorderDecision, type RuntimeRendererHost, type Scope, type Selector, type ServerQueryHandler, Show, type ShowProps, type State, type StateSetter, type StateTuple, createQuery, createRuntime, defineQuery, defineScope, defineServerQueries, dehydrateDataRuntime, derive, getDefaultRuntime, getSignal, hydrateDataRuntime, jsx, jsxs, prefetchQuery, readScope, selector, serveQuery, state };
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,153 @@
|
|
|
1
|
-
import { AskrRuntime, createRuntime,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import "./
|
|
1
|
+
import { a as getRuntimeFlushVersion, d as AskrRuntime, m as getDefaultRuntime, p as createRuntime, t as enqueueRuntimeLane } from "./access-Bg4RJNC8.js";
|
|
2
|
+
import { f as notifyReadableReaders, g as withDerivedReadTracking, h as syncDerivedDependencySubscriptions, l as markReactivePropsDirtySource, o as clearDerivedDependencySubscriptions, p as recordReadableRead, u as markReadableDerivedSubscribersDirty } from "./fastlane-Dw8SOBr9.js";
|
|
3
|
+
import { n as Fragment } from "./jsx-CUpRxrLH.js";
|
|
4
|
+
import { h as readScope, u as defineScope } from "./component-internal-D9PLuFUc.js";
|
|
5
|
+
import { g as getSignal, i as claimHookIndex, p as getCurrentInstance } from "./component-scope-CC3cojX9.js";
|
|
6
|
+
import { n as isSnapshotSource } from "./snapshot-source-BB42xgwb.js";
|
|
7
|
+
import { t as installRendererBridge } from "./renderer-DrLRAD5y.js";
|
|
8
|
+
import { t as state } from "./state-DPl8lffD.js";
|
|
9
|
+
import { t as selector } from "./selector-DafVYzV4.js";
|
|
9
10
|
import { jsx, jsxs } from "./jsx-runtime.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
import { i as For, n as Match, r as Show, t as Case } from "./control-mXROCjL3.js";
|
|
12
|
+
import { t as createQuery } from "./data-B9dauyDn.js";
|
|
13
|
+
import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery } from "./query-registry-CQIT4mXr.js";
|
|
14
|
+
//#region src/runtime/derive.ts
|
|
15
|
+
const deriveCells = /* @__PURE__ */ new WeakMap();
|
|
16
|
+
const dirtyDerivedCells = /* @__PURE__ */ new Set();
|
|
17
|
+
let hasPendingDerivedFlush = false;
|
|
18
|
+
function getDeriveStore(instance) {
|
|
19
|
+
const generation = instance._ownershipGeneration;
|
|
20
|
+
let store = deriveCells.get(generation);
|
|
21
|
+
if (!store) {
|
|
22
|
+
store = /* @__PURE__ */ new Map();
|
|
23
|
+
deriveCells.set(generation, store);
|
|
24
|
+
}
|
|
25
|
+
return store;
|
|
26
|
+
}
|
|
27
|
+
function markDerivedCellDirty(cell) {
|
|
28
|
+
cell._dirty = true;
|
|
29
|
+
if (cell._scheduled) return;
|
|
30
|
+
cell._scheduled = true;
|
|
31
|
+
dirtyDerivedCells.add(cell);
|
|
32
|
+
if (!hasPendingDerivedFlush) {
|
|
33
|
+
hasPendingDerivedFlush = true;
|
|
34
|
+
enqueueRuntimeLane("derived", flushDirtyDerivedCells);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function flushDirtyDerivedCells() {
|
|
38
|
+
hasPendingDerivedFlush = false;
|
|
39
|
+
if (dirtyDerivedCells.size === 0) return;
|
|
40
|
+
const pending = dirtyDerivedCells.values();
|
|
41
|
+
let next = pending.next();
|
|
42
|
+
while (!next.done) {
|
|
43
|
+
const cell = next.value;
|
|
44
|
+
dirtyDerivedCells.delete(cell);
|
|
45
|
+
cell._scheduled = false;
|
|
46
|
+
if (!cell._dirty) {
|
|
47
|
+
next = pending.next();
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
recomputeDerivedCell(cell, true);
|
|
51
|
+
next = pending.next();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function recomputeDerivedCell(cell, notifyDownstream) {
|
|
55
|
+
if (!cell._dirty && cell._hasValue) return cell._value;
|
|
56
|
+
if (cell._evaluating) throw new Error("derive() cannot read itself recursively");
|
|
57
|
+
cell._evaluating = true;
|
|
58
|
+
cell._dirty = false;
|
|
59
|
+
cell._pendingDependencySources = /* @__PURE__ */ new Set();
|
|
60
|
+
const prevSources = cell._sources;
|
|
61
|
+
let nextValue;
|
|
62
|
+
try {
|
|
63
|
+
nextValue = withDerivedReadTracking(cell, cell._compute);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
cell._dirty = true;
|
|
66
|
+
cell._pendingDependencySources = void 0;
|
|
67
|
+
throw error;
|
|
68
|
+
} finally {
|
|
69
|
+
cell._evaluating = false;
|
|
70
|
+
}
|
|
71
|
+
const nextSources = cell._pendingDependencySources ?? /* @__PURE__ */ new Set();
|
|
72
|
+
cell._pendingDependencySources = void 0;
|
|
73
|
+
syncDerivedDependencySubscriptions(cell, prevSources, nextSources);
|
|
74
|
+
cell._sources = nextSources;
|
|
75
|
+
const valueChanged = !cell._hasValue || !Object.is(cell._value, nextValue);
|
|
76
|
+
cell._hasValue = true;
|
|
77
|
+
cell._value = nextValue;
|
|
78
|
+
cell._lastRecomputeFlushVersion = getRuntimeFlushVersion();
|
|
79
|
+
if (valueChanged && notifyDownstream) {
|
|
80
|
+
markReadableDerivedSubscribersDirty(cell);
|
|
81
|
+
markReactivePropsDirtySource(cell);
|
|
82
|
+
notifyReadableReaders(cell);
|
|
83
|
+
}
|
|
84
|
+
return cell._value;
|
|
85
|
+
}
|
|
86
|
+
function createDerivedCell(instance, generation, store, hookIndex, compute) {
|
|
87
|
+
const cell = function derivedGetter() {
|
|
88
|
+
recordReadableRead(cell);
|
|
89
|
+
return recomputeDerivedCell(cell, cell._scheduled);
|
|
90
|
+
};
|
|
91
|
+
cell._owner = instance;
|
|
92
|
+
cell._hookIndex = hookIndex;
|
|
93
|
+
cell._compute = compute;
|
|
94
|
+
cell._value = void 0;
|
|
95
|
+
cell._hasValue = false;
|
|
96
|
+
cell._dirty = true;
|
|
97
|
+
cell._scheduled = false;
|
|
98
|
+
cell._evaluating = false;
|
|
99
|
+
cell._lastRecomputeFlushVersion = -1;
|
|
100
|
+
cell._sources = /* @__PURE__ */ new Set();
|
|
101
|
+
cell._markDirty = () => {
|
|
102
|
+
markDerivedCellDirty(cell);
|
|
103
|
+
};
|
|
104
|
+
cell._cleanup = () => {
|
|
105
|
+
cell._scheduled = false;
|
|
106
|
+
cell._dirty = false;
|
|
107
|
+
cell._hasValue = false;
|
|
108
|
+
dirtyDerivedCells.delete(cell);
|
|
109
|
+
clearDerivedDependencySubscriptions(cell, cell._sources);
|
|
110
|
+
cell._derivedSubscribers?.clear();
|
|
111
|
+
cell._readers?.size;
|
|
112
|
+
cell._readers?.clear();
|
|
113
|
+
};
|
|
114
|
+
(instance.cleanupFns ??= []).push(() => {
|
|
115
|
+
cell._cleanup();
|
|
116
|
+
store.delete(hookIndex);
|
|
117
|
+
if (store.size === 0 && deriveCells.get(generation) === store) deriveCells.delete(generation);
|
|
118
|
+
});
|
|
119
|
+
return cell;
|
|
120
|
+
}
|
|
121
|
+
function getOrCreateDerivedCell(instance, hookIndex, compute) {
|
|
122
|
+
const store = getDeriveStore(instance);
|
|
123
|
+
const existing = store.get(hookIndex);
|
|
124
|
+
if (existing) {
|
|
125
|
+
existing._compute = compute;
|
|
126
|
+
if (existing._lastRecomputeFlushVersion !== getRuntimeFlushVersion()) existing._dirty = true;
|
|
127
|
+
return existing;
|
|
128
|
+
}
|
|
129
|
+
const created = createDerivedCell(instance, instance._ownershipGeneration, store, hookIndex, compute);
|
|
130
|
+
store.set(hookIndex, created);
|
|
131
|
+
return created;
|
|
132
|
+
}
|
|
133
|
+
function createMappedSelector(source, map) {
|
|
134
|
+
return () => {
|
|
135
|
+
let value;
|
|
136
|
+
if (typeof source === "function") value = source();
|
|
137
|
+
else if (isSnapshotSource(source)) value = source.value ?? source;
|
|
138
|
+
else value = source;
|
|
139
|
+
if (value == null) return null;
|
|
140
|
+
return map(value);
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function derive(source, map) {
|
|
144
|
+
const instance = getCurrentInstance();
|
|
145
|
+
if (!instance) throw new Error("derive() can only be called during component render execution. Move derive() calls to the top level of your component function.");
|
|
146
|
+
const cell = getOrCreateDerivedCell(instance, claimHookIndex(instance, "derive"), map === void 0 ? () => source() : createMappedSelector(source, map));
|
|
147
|
+
recomputeDerivedCell(cell, false);
|
|
148
|
+
return cell;
|
|
149
|
+
}
|
|
150
|
+
//#endregion
|
|
16
151
|
//#region src/index.ts
|
|
17
152
|
/**
|
|
18
153
|
* Askr: Actor-backed deterministic UI framework
|
|
@@ -21,4 +156,4 @@ import "./jsx-runtime2.js";
|
|
|
21
156
|
*/
|
|
22
157
|
installRendererBridge();
|
|
23
158
|
//#endregion
|
|
24
|
-
export { AskrRuntime, Case, For, Fragment, Match, Show, createRuntime,
|
|
159
|
+
export { AskrRuntime, Case, For, Fragment, Match, Show, createQuery, createRuntime, defineQuery, defineScope, defineServerQueries, dehydrateDataRuntime, derive, getDefaultRuntime, getSignal, hydrateDataRuntime, jsx, jsxs, prefetchQuery, readScope, selector, serveQuery, state };
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { o as mergeProps, r as ariaDisabled, s as composeHandlers, t as composeRefs } from "./compose-ref-Cc_YkUpM.js";
|
|
2
|
+
//#region src/foundations/interactions/pressable.ts
|
|
3
|
+
function pressable({ disabled, onPress, isNativeButton = false }) {
|
|
4
|
+
const props = { onClick: (e) => {
|
|
5
|
+
if (disabled) {
|
|
6
|
+
e.preventDefault?.();
|
|
7
|
+
e.stopPropagation?.();
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
onPress?.(e);
|
|
11
|
+
} };
|
|
12
|
+
if (isNativeButton) {
|
|
13
|
+
if (disabled) {
|
|
14
|
+
props.disabled = true;
|
|
15
|
+
Object.assign(props, ariaDisabled(disabled));
|
|
16
|
+
}
|
|
17
|
+
return props;
|
|
18
|
+
}
|
|
19
|
+
props.role = "button";
|
|
20
|
+
props.tabIndex = disabled ? -1 : 0;
|
|
21
|
+
props.onKeyDown = (e) => {
|
|
22
|
+
if (disabled) {
|
|
23
|
+
e.preventDefault?.();
|
|
24
|
+
e.stopPropagation?.();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (e.key === "Enter") {
|
|
28
|
+
e.preventDefault?.();
|
|
29
|
+
onPress?.(e);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (e.key === " ") e.preventDefault?.();
|
|
33
|
+
};
|
|
34
|
+
props.onKeyUp = (e) => {
|
|
35
|
+
if (disabled) {
|
|
36
|
+
e.preventDefault?.();
|
|
37
|
+
e.stopPropagation?.();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (e.key === " ") {
|
|
41
|
+
e.preventDefault?.();
|
|
42
|
+
onPress?.(e);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
if (disabled) Object.assign(props, ariaDisabled(disabled));
|
|
46
|
+
return props;
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/foundations/interactions/dismissable.ts
|
|
50
|
+
function dismissable({ node, disabled, onDismiss }) {
|
|
51
|
+
function handleKeyDown(e) {
|
|
52
|
+
if (disabled) return;
|
|
53
|
+
if (e.key === "Escape") {
|
|
54
|
+
e.preventDefault?.();
|
|
55
|
+
e.stopPropagation?.();
|
|
56
|
+
onDismiss?.("escape");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function handlePointerDownCapture(e) {
|
|
60
|
+
if (disabled) return;
|
|
61
|
+
const target = e.target;
|
|
62
|
+
if (!(target instanceof Node)) return;
|
|
63
|
+
if (!node) return;
|
|
64
|
+
if (!node.contains(target)) onDismiss?.("outside");
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
onKeyDown: handleKeyDown,
|
|
68
|
+
onPointerDownCapture: handlePointerDownCapture
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
//#region src/foundations/interactions/focusable.ts
|
|
73
|
+
/**
|
|
74
|
+
* focusable
|
|
75
|
+
*
|
|
76
|
+
* Normalize focus-related props for hosts.
|
|
77
|
+
* - No DOM manipulation here; returns props that the runtime may attach.
|
|
78
|
+
*/
|
|
79
|
+
function focusable({ disabled, tabIndex }) {
|
|
80
|
+
return {
|
|
81
|
+
tabIndex: disabled ? -1 : tabIndex === void 0 ? 0 : tabIndex,
|
|
82
|
+
...ariaDisabled(disabled)
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
//#region src/foundations/interactions/hoverable.ts
|
|
87
|
+
function hoverable({ disabled, onEnter, onLeave }) {
|
|
88
|
+
return {
|
|
89
|
+
onPointerEnter: disabled ? void 0 : (e) => {
|
|
90
|
+
onEnter?.(e);
|
|
91
|
+
},
|
|
92
|
+
onPointerLeave: disabled ? void 0 : (e) => {
|
|
93
|
+
onLeave?.(e);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
//#region src/foundations/interactions/roving-focus.ts
|
|
99
|
+
function rovingFocus(options) {
|
|
100
|
+
const { currentIndex, itemCount, orientation = "horizontal", loop = false, onNavigate, isDisabled } = options;
|
|
101
|
+
function findNextIndex(from, direction) {
|
|
102
|
+
let next = from;
|
|
103
|
+
for (let steps = 0; steps < itemCount; steps += 1) {
|
|
104
|
+
next += direction;
|
|
105
|
+
if (loop) {
|
|
106
|
+
if (next < 0) next = itemCount - 1;
|
|
107
|
+
if (next >= itemCount) next = 0;
|
|
108
|
+
} else if (next < 0 || next >= itemCount) return;
|
|
109
|
+
if (next === from) return void 0;
|
|
110
|
+
if (!isDisabled?.(next)) return next;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function handleKeyDown(e) {
|
|
114
|
+
const { key } = e;
|
|
115
|
+
let direction;
|
|
116
|
+
if (orientation === "horizontal" || orientation === "both") {
|
|
117
|
+
if (key === "ArrowRight") direction = 1;
|
|
118
|
+
if (key === "ArrowLeft") direction = -1;
|
|
119
|
+
}
|
|
120
|
+
if (orientation === "vertical" || orientation === "both") {
|
|
121
|
+
if (key === "ArrowDown") direction = 1;
|
|
122
|
+
if (key === "ArrowUp") direction = -1;
|
|
123
|
+
}
|
|
124
|
+
if (direction === void 0) return;
|
|
125
|
+
const nextIndex = findNextIndex(currentIndex, direction);
|
|
126
|
+
if (nextIndex === void 0) return;
|
|
127
|
+
e.preventDefault?.();
|
|
128
|
+
e.stopPropagation?.();
|
|
129
|
+
onNavigate?.(nextIndex);
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
container: { onKeyDown: handleKeyDown },
|
|
133
|
+
item: (index) => ({
|
|
134
|
+
tabIndex: index === currentIndex ? 0 : -1,
|
|
135
|
+
"data-roving-index": index
|
|
136
|
+
})
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* USAGE EXAMPLE:
|
|
141
|
+
*
|
|
142
|
+
* function Menu() {
|
|
143
|
+
* const [focusIndex, setFocusIndex] = state(0);
|
|
144
|
+
* const items = ['File', 'Edit', 'View'];
|
|
145
|
+
*
|
|
146
|
+
* const navigation = rovingFocus({
|
|
147
|
+
* currentIndex: focusIndex(),
|
|
148
|
+
* itemCount: items.length,
|
|
149
|
+
* orientation: 'horizontal',
|
|
150
|
+
* loop: true,
|
|
151
|
+
* onNavigate: setFocusIndex,
|
|
152
|
+
* });
|
|
153
|
+
*
|
|
154
|
+
* return (
|
|
155
|
+
* <div {...navigation.container}>
|
|
156
|
+
* {items.map((label, index) => (
|
|
157
|
+
* <button {...navigation.item(index)}>
|
|
158
|
+
* {label}
|
|
159
|
+
* </button>
|
|
160
|
+
* ))}
|
|
161
|
+
* </div>
|
|
162
|
+
* );
|
|
163
|
+
* }
|
|
164
|
+
*/
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/foundations/interactions/interaction-policy.ts
|
|
167
|
+
/**
|
|
168
|
+
* INTERACTION POLICY (FRAMEWORK LAW)
|
|
169
|
+
*
|
|
170
|
+
* This is THE ONLY way to create interactive elements. Components MUST NOT
|
|
171
|
+
* implement interaction logic directly.
|
|
172
|
+
*
|
|
173
|
+
* INVARIANTS (ENFORCED):
|
|
174
|
+
* 1. "Press" is the semantic. Click/touch/Enter/Space are implementation details.
|
|
175
|
+
* 2. Disabled is enforced exactly once, here. Components may not check disabled.
|
|
176
|
+
* 3. Keyboard handling is automatic. Components may not add onKeyDown for activation.
|
|
177
|
+
* 4. Native elements opt out of polyfills, not semantics.
|
|
178
|
+
* 5. asChild may replace the host element, not interaction behavior.
|
|
179
|
+
* 6. This policy is the SINGLE SOURCE OF TRUTH for interactive behavior.
|
|
180
|
+
*
|
|
181
|
+
* DESIGN:
|
|
182
|
+
* - Single public function: applyInteractionPolicy
|
|
183
|
+
* - Returns props that compose via mergeProps
|
|
184
|
+
* - Delegates to pressable for mechanics
|
|
185
|
+
* - Enforces disabled once and only once
|
|
186
|
+
* - No configuration beyond disabled and native element type
|
|
187
|
+
*
|
|
188
|
+
* PIT OF SUCCESS:
|
|
189
|
+
* ✓ Can't bypass policy (only way to get interaction behavior)
|
|
190
|
+
* ✓ Can't duplicate disabled checks (enforced once, here)
|
|
191
|
+
* ✓ Can't write custom keyboard handlers for buttons (policy owns it)
|
|
192
|
+
* ✓ Composes via mergeProps (standard props)
|
|
193
|
+
* ✓ Wrong usage is impossible (no escape hatch)
|
|
194
|
+
*
|
|
195
|
+
* USAGE:
|
|
196
|
+
* function Button({ onPress, disabled }) {
|
|
197
|
+
* const interaction = applyInteractionPolicy({
|
|
198
|
+
* isNative: true,
|
|
199
|
+
* disabled,
|
|
200
|
+
* onPress
|
|
201
|
+
* });
|
|
202
|
+
*
|
|
203
|
+
* return <button {...interaction}>Click me</button>;
|
|
204
|
+
* }
|
|
205
|
+
*
|
|
206
|
+
* MISUSE EXAMPLE (PREVENTED):
|
|
207
|
+
* ❌ Button checking disabled again:
|
|
208
|
+
* function Button({ disabled, onPress }) {
|
|
209
|
+
* if (disabled) return; // NO! Policy handles this
|
|
210
|
+
* const interaction = applyInteractionPolicy(...);
|
|
211
|
+
* }
|
|
212
|
+
*
|
|
213
|
+
* ❌ Custom keyboard handler:
|
|
214
|
+
* function Button({ onPress }) {
|
|
215
|
+
* const interaction = applyInteractionPolicy(...);
|
|
216
|
+
* return <button {...interaction} onKeyDown={...}>; // NO! Policy owns this
|
|
217
|
+
* }
|
|
218
|
+
*
|
|
219
|
+
* ❌ Direct event handler:
|
|
220
|
+
* <button onClick={onPress}>; // NO! Use applyInteractionPolicy
|
|
221
|
+
*/
|
|
222
|
+
/**
|
|
223
|
+
* THE interaction policy. Components MUST use this, NEVER implement
|
|
224
|
+
* interaction logic directly.
|
|
225
|
+
*/
|
|
226
|
+
function applyInteractionPolicy({ isNative, disabled, onPress, ref }) {
|
|
227
|
+
function invokePress(e) {
|
|
228
|
+
if (disabled) {
|
|
229
|
+
e.preventDefault?.();
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
onPress?.(e);
|
|
233
|
+
}
|
|
234
|
+
if (isNative) return {
|
|
235
|
+
disabled: disabled || void 0,
|
|
236
|
+
onClick: (e) => invokePress(e),
|
|
237
|
+
ref
|
|
238
|
+
};
|
|
239
|
+
const interaction = pressable({
|
|
240
|
+
disabled,
|
|
241
|
+
isNativeButton: false,
|
|
242
|
+
onPress: (e) => invokePress(e)
|
|
243
|
+
});
|
|
244
|
+
return {
|
|
245
|
+
...interaction,
|
|
246
|
+
...ariaDisabled(disabled),
|
|
247
|
+
tabIndex: disabled ? -1 : interaction.tabIndex ?? 0,
|
|
248
|
+
ref
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Merge rule for Slot / asChild
|
|
253
|
+
*
|
|
254
|
+
* Precedence:
|
|
255
|
+
* policy → user → child
|
|
256
|
+
*
|
|
257
|
+
* Event handlers are composed (policy first).
|
|
258
|
+
* Refs are always composed.
|
|
259
|
+
* Policy props MUST take precedence to enforce invariants.
|
|
260
|
+
*/
|
|
261
|
+
function mergeInteractionProps(childProps, policyProps, userProps) {
|
|
262
|
+
const out = mergeProps(policyProps, userProps ? mergeProps(userProps, childProps) : childProps);
|
|
263
|
+
for (const k in out) {
|
|
264
|
+
if (!k.startsWith("on")) continue;
|
|
265
|
+
const policyHandler = policyProps?.[k];
|
|
266
|
+
const userHandler = userProps?.[k];
|
|
267
|
+
const childHandler = childProps?.[k];
|
|
268
|
+
if (policyHandler || userHandler || childHandler) {
|
|
269
|
+
const toHandler = (h) => typeof h === "function" ? h : void 0;
|
|
270
|
+
out[k] = composeHandlers(toHandler(policyHandler), composeHandlers(toHandler(userHandler), toHandler(childHandler)));
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
const childRef = childProps?.ref;
|
|
274
|
+
const userRef = userProps?.ref;
|
|
275
|
+
const policyRef = policyProps?.ref;
|
|
276
|
+
out.ref = composeRefs(childRef, userRef, policyRef);
|
|
277
|
+
return out;
|
|
278
|
+
}
|
|
279
|
+
//#endregion
|
|
280
|
+
export { focusable as a, hoverable as i, mergeInteractionProps as n, dismissable as o, rovingFocus as r, pressable as s, applyInteractionPolicy as t };
|
|
@@ -301,10 +301,22 @@ interface KnownIntrinsicElementProps {
|
|
|
301
301
|
tr: LayoutIntrinsicProps;
|
|
302
302
|
ul: LayoutIntrinsicProps;
|
|
303
303
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
304
|
+
//#endregion
|
|
305
|
+
//#region src/common/jsx.d.ts
|
|
306
|
+
declare const Fragment: unique symbol;
|
|
307
|
+
type JSXComponent<TProps extends object = Props> = {
|
|
308
|
+
bivarianceHack(props: TProps): unknown;
|
|
309
|
+
}['bivarianceHack'];
|
|
310
|
+
type JSXElementType = string | JSXComponent | symbol;
|
|
311
|
+
interface JSXElement {
|
|
312
|
+
/** Internal element marker */
|
|
313
|
+
$$typeof: symbol;
|
|
314
|
+
/** Element type: string, component, Fragment, etc */
|
|
315
|
+
type: JSXElementType;
|
|
316
|
+
/** Props bag */
|
|
317
|
+
props: Props;
|
|
318
|
+
/** Optional key (normalized by runtime) */
|
|
319
|
+
key?: string | number | null;
|
|
308
320
|
}
|
|
309
321
|
//#endregion
|
|
310
|
-
export {
|
|
322
|
+
export { IntrinsicFallbackProps as a, JSXElementType as i, JSXComponent as n, KnownIntrinsicElementProps as o, JSXElement as r, Props as s, Fragment as t };
|
|
@@ -3,4 +3,4 @@ const ELEMENT_TYPE = Symbol.for("askr.element");
|
|
|
3
3
|
const Fragment = Symbol.for("askr.fragment");
|
|
4
4
|
const STATIC_CHILDREN = Symbol.for("askr.static-children");
|
|
5
5
|
//#endregion
|
|
6
|
-
export {
|
|
6
|
+
export { Fragment as n, STATIC_CHILDREN as r, ELEMENT_TYPE as t };
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { IntrinsicFallbackProps, KnownIntrinsicElementProps, Props } from "./
|
|
2
|
-
import {
|
|
3
|
-
import { EagerControlPrimitive } from "./common/control.js";
|
|
4
|
-
|
|
1
|
+
import { a as IntrinsicFallbackProps, i as JSXElementType, n as JSXComponent, o as KnownIntrinsicElementProps, r as JSXElement, s as Props, t as Fragment } from "./jsx-CP0gmYwJ.js";
|
|
2
|
+
import { t as EagerControlPrimitive } from "./control-Bf4Wkdvv.js";
|
|
5
3
|
//#region src/jsx/jsx-dev-runtime.d.ts
|
|
6
4
|
declare namespace JSX {
|
|
7
5
|
interface Element extends JSXElement {
|
package/dist/jsx-dev-runtime.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { isEagerControlPrimitive } from "./
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import "./runtime/index.js";
|
|
5
|
-
import "./jsx/types.js";
|
|
1
|
+
import { n as isEagerControlPrimitive } from "./control-DhFRTIoE.js";
|
|
2
|
+
import { n as Fragment, r as STATIC_CHILDREN, t as ELEMENT_TYPE } from "./jsx-CUpRxrLH.js";
|
|
3
|
+
//#region src/jsx/jsx-dev-runtime.ts
|
|
6
4
|
function annotatePropsUsage(props) {
|
|
7
5
|
return props ?? {};
|
|
8
6
|
}
|
|
9
7
|
function markStaticChildren(props) {
|
|
8
|
+
if (Array.isArray(props.children)) Object.defineProperty(props.children, STATIC_CHILDREN, {
|
|
9
|
+
value: true,
|
|
10
|
+
configurable: true
|
|
11
|
+
});
|
|
10
12
|
return props;
|
|
11
13
|
}
|
|
12
14
|
function jsxDEV(type, props, key, isStaticChildren = false) {
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { a as IntrinsicFallbackProps, o as KnownIntrinsicElementProps, r as JSXElement, s as Props } from "./jsx-CP0gmYwJ.js";
|
|
2
|
+
import { t as EagerControlPrimitive } from "./control-Bf4Wkdvv.js";
|
|
3
|
+
//#region src/jsx/jsx-runtime.d.ts
|
|
4
|
+
declare namespace JSX {
|
|
5
|
+
interface Element extends JSXElement {
|
|
6
|
+
readonly __askrJsxElementBrand?: never;
|
|
7
|
+
}
|
|
8
|
+
interface IntrinsicElements extends KnownIntrinsicElementProps {
|
|
9
|
+
[elem: string]: IntrinsicFallbackProps | KnownIntrinsicElementProps[keyof KnownIntrinsicElementProps];
|
|
10
|
+
}
|
|
11
|
+
interface ElementAttributesProperty {
|
|
12
|
+
props: Props;
|
|
13
|
+
}
|
|
14
|
+
interface ElementChildrenAttribute {
|
|
15
|
+
children: unknown;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
declare function jsxDEV(type: EagerControlPrimitive, props: Props | null, key?: string | number, isStaticChildren?: boolean): unknown;
|
|
19
|
+
declare function jsxDEV<TTag extends keyof KnownIntrinsicElementProps>(type: TTag, props: KnownIntrinsicElementProps[TTag] | null, key?: string | number, isStaticChildren?: boolean): JSXElement;
|
|
20
|
+
declare function jsxDEV<TTag extends string>(type: Exclude<TTag, keyof KnownIntrinsicElementProps>, props: IntrinsicFallbackProps | null, key?: string | number, isStaticChildren?: boolean): JSXElement;
|
|
21
|
+
declare function jsxDEV<TProps extends object>(type: (props: TProps) => unknown, props: TProps | null, key?: string | number, isStaticChildren?: boolean): JSXElement;
|
|
22
|
+
declare function jsxDEV(type: symbol, props: Props | null, key?: string | number, isStaticChildren?: boolean): JSXElement;
|
|
23
|
+
declare function jsx(type: EagerControlPrimitive, props: Props | null, key?: string | number): unknown;
|
|
24
|
+
declare function jsx<TTag extends keyof KnownIntrinsicElementProps>(type: TTag, props: KnownIntrinsicElementProps[TTag] | null, key?: string | number): JSXElement;
|
|
25
|
+
declare function jsx<TTag extends string>(type: Exclude<TTag, keyof KnownIntrinsicElementProps>, props: IntrinsicFallbackProps | null, key?: string | number): JSXElement;
|
|
26
|
+
declare function jsx<TProps extends object>(type: (props: TProps) => unknown, props: TProps | null, key?: string | number): JSXElement;
|
|
27
|
+
declare function jsx(type: symbol, props: Props | null, key?: string | number): JSXElement;
|
|
28
|
+
declare function jsxs(type: EagerControlPrimitive, props: Props | null, key?: string | number): unknown;
|
|
29
|
+
declare function jsxs<TTag extends keyof KnownIntrinsicElementProps>(type: TTag, props: KnownIntrinsicElementProps[TTag] | null, key?: string | number): JSXElement;
|
|
30
|
+
declare function jsxs<TTag extends string>(type: Exclude<TTag, keyof KnownIntrinsicElementProps>, props: IntrinsicFallbackProps | null, key?: string | number): JSXElement;
|
|
31
|
+
declare function jsxs<TProps extends object>(type: (props: TProps) => unknown, props: TProps | null, key?: string | number): JSXElement;
|
|
32
|
+
declare function jsxs(type: symbol, props: Props | null, key?: string | number): JSXElement;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { jsxs as i, jsx as n, jsxDEV as r, JSX as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|