@rezi-ui/core 0.1.0-alpha.60 → 0.1.0-alpha.63
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/dist/app/createApp/breadcrumbs.d.ts +38 -0
- package/dist/app/createApp/breadcrumbs.d.ts.map +1 -0
- package/dist/app/createApp/breadcrumbs.js +65 -0
- package/dist/app/createApp/breadcrumbs.js.map +1 -0
- package/dist/app/createApp/config.d.ts +25 -0
- package/dist/app/createApp/config.d.ts.map +1 -0
- package/dist/app/createApp/config.js +130 -0
- package/dist/app/createApp/config.js.map +1 -0
- package/dist/app/createApp/eventLoop.d.ts +95 -0
- package/dist/app/createApp/eventLoop.d.ts.map +1 -0
- package/dist/app/createApp/eventLoop.js +384 -0
- package/dist/app/createApp/eventLoop.js.map +1 -0
- package/dist/app/createApp/guards.d.ts +21 -0
- package/dist/app/createApp/guards.d.ts.map +1 -0
- package/dist/app/createApp/guards.js +54 -0
- package/dist/app/createApp/guards.js.map +1 -0
- package/dist/app/createApp/keybindings.d.ts +28 -0
- package/dist/app/createApp/keybindings.d.ts.map +1 -0
- package/dist/app/createApp/keybindings.js +113 -0
- package/dist/app/createApp/keybindings.js.map +1 -0
- package/dist/app/createApp/renderLoop.d.ts +64 -0
- package/dist/app/createApp/renderLoop.d.ts.map +1 -0
- package/dist/app/createApp/renderLoop.js +305 -0
- package/dist/app/createApp/renderLoop.js.map +1 -0
- package/dist/app/createApp.d.ts +3 -39
- package/dist/app/createApp.d.ts.map +1 -1
- package/dist/app/createApp.js +403 -1205
- package/dist/app/createApp.js.map +1 -1
- package/dist/app/widgetRenderer/constraintState.d.ts +98 -0
- package/dist/app/widgetRenderer/constraintState.d.ts.map +1 -0
- package/dist/app/widgetRenderer/constraintState.js +563 -0
- package/dist/app/widgetRenderer/constraintState.js.map +1 -0
- package/dist/app/widgetRenderer/fileNodeCache.d.ts +2 -0
- package/dist/app/widgetRenderer/fileNodeCache.d.ts.map +1 -1
- package/dist/app/widgetRenderer/fileNodeCache.js +31 -0
- package/dist/app/widgetRenderer/fileNodeCache.js.map +1 -1
- package/dist/app/widgetRenderer/filePickerRouting.d.ts +12 -1
- package/dist/app/widgetRenderer/filePickerRouting.d.ts.map +1 -1
- package/dist/app/widgetRenderer/filePickerRouting.js +63 -14
- package/dist/app/widgetRenderer/filePickerRouting.js.map +1 -1
- package/dist/app/widgetRenderer/focusState.d.ts +46 -0
- package/dist/app/widgetRenderer/focusState.d.ts.map +1 -0
- package/dist/app/widgetRenderer/focusState.js +122 -0
- package/dist/app/widgetRenderer/focusState.js.map +1 -0
- package/dist/app/widgetRenderer/keyboardRouting.d.ts.map +1 -1
- package/dist/app/widgetRenderer/keyboardRouting.js.map +1 -1
- package/dist/app/widgetRenderer/mouseRouting.d.ts +5 -0
- package/dist/app/widgetRenderer/mouseRouting.d.ts.map +1 -1
- package/dist/app/widgetRenderer/mouseRouting.js +78 -8
- package/dist/app/widgetRenderer/mouseRouting.js.map +1 -1
- package/dist/app/widgetRenderer/overlayShortcuts.d.ts.map +1 -1
- package/dist/app/widgetRenderer/overlayShortcuts.js +14 -4
- package/dist/app/widgetRenderer/overlayShortcuts.js.map +1 -1
- package/dist/app/widgetRenderer/overlayState.d.ts +198 -0
- package/dist/app/widgetRenderer/overlayState.d.ts.map +1 -0
- package/dist/app/widgetRenderer/overlayState.js +590 -0
- package/dist/app/widgetRenderer/overlayState.js.map +1 -0
- package/dist/app/widgetRenderer/routeEngineEvent.d.ts +189 -0
- package/dist/app/widgetRenderer/routeEngineEvent.d.ts.map +1 -0
- package/dist/app/widgetRenderer/routeEngineEvent.js +527 -0
- package/dist/app/widgetRenderer/routeEngineEvent.js.map +1 -0
- package/dist/app/widgetRenderer.d.ts +2 -1
- package/dist/app/widgetRenderer.d.ts.map +1 -1
- package/dist/app/widgetRenderer.js +334 -1707
- package/dist/app/widgetRenderer.js.map +1 -1
- package/dist/forms/internal/arrayState.d.ts +35 -0
- package/dist/forms/internal/arrayState.d.ts.map +1 -0
- package/dist/forms/internal/arrayState.js +238 -0
- package/dist/forms/internal/arrayState.js.map +1 -0
- package/dist/forms/internal/bindings.d.ts +46 -0
- package/dist/forms/internal/bindings.d.ts.map +1 -0
- package/dist/forms/internal/bindings.js +161 -0
- package/dist/forms/internal/bindings.js.map +1 -0
- package/dist/forms/internal/dev.d.ts +4 -0
- package/dist/forms/internal/dev.d.ts.map +1 -0
- package/dist/forms/internal/dev.js +21 -0
- package/dist/forms/internal/dev.js.map +1 -0
- package/dist/forms/internal/state.d.ts +52 -0
- package/dist/forms/internal/state.d.ts.map +1 -0
- package/dist/forms/internal/state.js +240 -0
- package/dist/forms/internal/state.js.map +1 -0
- package/dist/forms/internal/submit.d.ts +43 -0
- package/dist/forms/internal/submit.d.ts.map +1 -0
- package/dist/forms/internal/submit.js +165 -0
- package/dist/forms/internal/submit.js.map +1 -0
- package/dist/forms/internal/wizard.d.ts +53 -0
- package/dist/forms/internal/wizard.d.ts.map +1 -0
- package/dist/forms/internal/wizard.js +311 -0
- package/dist/forms/internal/wizard.js.map +1 -0
- package/dist/forms/useForm.d.ts.map +1 -1
- package/dist/forms/useForm.js +90 -1117
- package/dist/forms/useForm.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/keybindings/manager.d.ts.map +1 -1
- package/dist/keybindings/manager.js.map +1 -1
- package/dist/keybindings/parser.d.ts.map +1 -1
- package/dist/keybindings/parser.js +10 -5
- package/dist/keybindings/parser.js.map +1 -1
- package/dist/layout/dropdownGeometry.d.ts +8 -0
- package/dist/layout/dropdownGeometry.d.ts.map +1 -1
- package/dist/layout/dropdownGeometry.js +40 -0
- package/dist/layout/dropdownGeometry.js.map +1 -1
- package/dist/layout/engine/layoutEngine.js +1 -1
- package/dist/layout/engine/layoutEngine.js.map +1 -1
- package/dist/layout/kinds/overlays.d.ts.map +1 -1
- package/dist/layout/kinds/stack.d.ts +1 -3
- package/dist/layout/kinds/stack.d.ts.map +1 -1
- package/dist/layout/kinds/stack.js +11 -1523
- package/dist/layout/kinds/stack.js.map +1 -1
- package/dist/layout/kinds/stackParts/axis.d.ts +32 -0
- package/dist/layout/kinds/stackParts/axis.d.ts.map +1 -0
- package/dist/layout/kinds/stackParts/axis.js +61 -0
- package/dist/layout/kinds/stackParts/axis.js.map +1 -0
- package/dist/layout/kinds/stackParts/constraintPlan.d.ts +18 -0
- package/dist/layout/kinds/stackParts/constraintPlan.d.ts.map +1 -0
- package/dist/layout/kinds/stackParts/constraintPlan.js +434 -0
- package/dist/layout/kinds/stackParts/constraintPlan.js.map +1 -0
- package/dist/layout/kinds/stackParts/layout.d.ts +6 -0
- package/dist/layout/kinds/stackParts/layout.d.ts.map +1 -0
- package/dist/layout/kinds/stackParts/layout.js +376 -0
- package/dist/layout/kinds/stackParts/layout.js.map +1 -0
- package/dist/layout/kinds/stackParts/measure.d.ts +6 -0
- package/dist/layout/kinds/stackParts/measure.d.ts.map +1 -0
- package/dist/layout/kinds/stackParts/measure.js +212 -0
- package/dist/layout/kinds/stackParts/measure.js.map +1 -0
- package/dist/layout/kinds/stackParts/shared.d.ts +31 -0
- package/dist/layout/kinds/stackParts/shared.d.ts.map +1 -0
- package/dist/layout/kinds/stackParts/shared.js +94 -0
- package/dist/layout/kinds/stackParts/shared.js.map +1 -0
- package/dist/layout/kinds/stackParts/wrap.d.ts +26 -0
- package/dist/layout/kinds/stackParts/wrap.d.ts.map +1 -0
- package/dist/layout/kinds/stackParts/wrap.js +374 -0
- package/dist/layout/kinds/stackParts/wrap.js.map +1 -0
- package/dist/layout/validate/interactive.d.ts +106 -0
- package/dist/layout/validate/interactive.d.ts.map +1 -0
- package/dist/layout/validate/interactive.js +430 -0
- package/dist/layout/validate/interactive.js.map +1 -0
- package/dist/layout/validate/layoutConstraints.d.ts +51 -0
- package/dist/layout/validate/layoutConstraints.d.ts.map +1 -0
- package/dist/layout/validate/layoutConstraints.js +100 -0
- package/dist/layout/validate/layoutConstraints.js.map +1 -0
- package/dist/layout/validate/primitives.d.ts +31 -0
- package/dist/layout/validate/primitives.d.ts.map +1 -0
- package/dist/layout/validate/primitives.js +299 -0
- package/dist/layout/validate/primitives.js.map +1 -0
- package/dist/layout/validate/shared.d.ts +23 -0
- package/dist/layout/validate/shared.d.ts.map +1 -0
- package/dist/layout/validate/shared.js +32 -0
- package/dist/layout/validate/shared.js.map +1 -0
- package/dist/layout/validate/spacing.d.ts +21 -0
- package/dist/layout/validate/spacing.d.ts.map +1 -0
- package/dist/layout/validate/spacing.js +33 -0
- package/dist/layout/validate/spacing.js.map +1 -0
- package/dist/layout/validateProps.d.ts +5 -159
- package/dist/layout/validateProps.d.ts.map +1 -1
- package/dist/layout/validateProps.js +1 -832
- package/dist/layout/validateProps.js.map +1 -1
- package/dist/pipeline.js +1 -1
- package/dist/pipeline.js.map +1 -1
- package/dist/renderer/renderToDrawlist/renderTree.d.ts +1 -1
- package/dist/renderer/renderToDrawlist/renderTree.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/renderTree.js +3 -3
- package/dist/renderer/renderToDrawlist/renderTree.js.map +1 -1
- package/dist/renderer/renderToDrawlist/types.d.ts +2 -0
- package/dist/renderer/renderToDrawlist/types.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/containers.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/containers.js +1 -1
- package/dist/renderer/renderToDrawlist/widgets/containers.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/files.d.ts +2 -1
- package/dist/renderer/renderToDrawlist/widgets/files.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/files.js +30 -3
- package/dist/renderer/renderToDrawlist/widgets/files.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts +1 -1
- package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/overlays.js +26 -6
- package/dist/renderer/renderToDrawlist/widgets/overlays.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.js +52 -18
- package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.js.map +1 -1
- package/dist/renderer/renderToDrawlist.d.ts +0 -8
- package/dist/renderer/renderToDrawlist.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist.js +1 -9
- package/dist/renderer/renderToDrawlist.js.map +1 -1
- package/dist/runtime/commit/composite.d.ts +11 -0
- package/dist/runtime/commit/composite.d.ts.map +1 -0
- package/dist/runtime/commit/composite.js +238 -0
- package/dist/runtime/commit/composite.js.map +1 -0
- package/dist/runtime/commit/container.d.ts +7 -0
- package/dist/runtime/commit/container.d.ts.map +1 -0
- package/dist/runtime/commit/container.js +350 -0
- package/dist/runtime/commit/container.js.map +1 -0
- package/dist/runtime/commit/equality.d.ts +20 -0
- package/dist/runtime/commit/equality.d.ts.map +1 -0
- package/dist/runtime/commit/equality.js +436 -0
- package/dist/runtime/commit/equality.js.map +1 -0
- package/dist/runtime/commit/errorBoundary.d.ts +7 -0
- package/dist/runtime/commit/errorBoundary.d.ts.map +1 -0
- package/dist/runtime/commit/errorBoundary.js +53 -0
- package/dist/runtime/commit/errorBoundary.js.map +1 -0
- package/dist/runtime/commit/shared.d.ts +138 -0
- package/dist/runtime/commit/shared.d.ts.map +1 -0
- package/dist/runtime/commit/shared.js +11 -0
- package/dist/runtime/commit/shared.js.map +1 -0
- package/dist/runtime/commit/transitions.d.ts +9 -0
- package/dist/runtime/commit/transitions.d.ts.map +1 -0
- package/dist/runtime/commit/transitions.js +93 -0
- package/dist/runtime/commit/transitions.js.map +1 -0
- package/dist/runtime/commit/validation.d.ts +16 -0
- package/dist/runtime/commit/validation.d.ts.map +1 -0
- package/dist/runtime/commit/validation.js +157 -0
- package/dist/runtime/commit/validation.js.map +1 -0
- package/dist/runtime/commit.d.ts +7 -117
- package/dist/runtime/commit.d.ts.map +1 -1
- package/dist/runtime/commit.js +13 -1394
- package/dist/runtime/commit.js.map +1 -1
- package/dist/runtime/localState.d.ts +4 -0
- package/dist/runtime/localState.d.ts.map +1 -1
- package/dist/runtime/localState.js.map +1 -1
- package/dist/runtime/widgetMeta/collector.d.ts +77 -0
- package/dist/runtime/widgetMeta/collector.d.ts.map +1 -0
- package/dist/runtime/widgetMeta/collector.js +293 -0
- package/dist/runtime/widgetMeta/collector.js.map +1 -0
- package/dist/runtime/widgetMeta/focusContainers.d.ts +44 -0
- package/dist/runtime/widgetMeta/focusContainers.d.ts.map +1 -0
- package/dist/runtime/widgetMeta/focusContainers.js +190 -0
- package/dist/runtime/widgetMeta/focusContainers.js.map +1 -0
- package/dist/runtime/widgetMeta/focusInfo.d.ts +19 -0
- package/dist/runtime/widgetMeta/focusInfo.d.ts.map +1 -0
- package/dist/runtime/widgetMeta/focusInfo.js +172 -0
- package/dist/runtime/widgetMeta/focusInfo.js.map +1 -0
- package/dist/runtime/widgetMeta/helpers.d.ts +47 -0
- package/dist/runtime/widgetMeta/helpers.d.ts.map +1 -0
- package/dist/runtime/widgetMeta/helpers.js +182 -0
- package/dist/runtime/widgetMeta/helpers.js.map +1 -0
- package/dist/runtime/widgetMeta.d.ts +12 -175
- package/dist/runtime/widgetMeta.d.ts.map +1 -1
- package/dist/runtime/widgetMeta.js +6 -847
- package/dist/runtime/widgetMeta.js.map +1 -1
- package/dist/ui/capabilities.d.ts.map +1 -1
- package/dist/ui/designTokens.d.ts.map +1 -1
- package/dist/widgets/accordion.d.ts.map +1 -1
- package/dist/widgets/accordion.js +8 -13
- package/dist/widgets/accordion.js.map +1 -1
- package/dist/widgets/factories/advanced.d.ts +20 -0
- package/dist/widgets/factories/advanced.d.ts.map +1 -0
- package/dist/widgets/factories/advanced.js +75 -0
- package/dist/widgets/factories/advanced.js.map +1 -0
- package/dist/widgets/factories/basic.d.ts +14 -0
- package/dist/widgets/factories/basic.d.ts.map +1 -0
- package/dist/widgets/factories/basic.js +44 -0
- package/dist/widgets/factories/basic.js.map +1 -0
- package/dist/widgets/factories/feedback.d.ts +20 -0
- package/dist/widgets/factories/feedback.d.ts.map +1 -0
- package/dist/widgets/factories/feedback.js +102 -0
- package/dist/widgets/factories/feedback.js.map +1 -0
- package/dist/widgets/factories/helpers.d.ts +41 -0
- package/dist/widgets/factories/helpers.d.ts.map +1 -0
- package/dist/widgets/factories/helpers.js +72 -0
- package/dist/widgets/factories/helpers.js.map +1 -0
- package/dist/widgets/factories/interactive.d.ts +15 -0
- package/dist/widgets/factories/interactive.d.ts.map +1 -0
- package/dist/widgets/factories/interactive.js +46 -0
- package/dist/widgets/factories/interactive.js.map +1 -0
- package/dist/widgets/factories/layoutShell.d.ts +22 -0
- package/dist/widgets/factories/layoutShell.d.ts.map +1 -0
- package/dist/widgets/factories/layoutShell.js +190 -0
- package/dist/widgets/factories/layoutShell.js.map +1 -0
- package/dist/widgets/factories/media.d.ts +14 -0
- package/dist/widgets/factories/media.d.ts.map +1 -0
- package/dist/widgets/factories/media.js +25 -0
- package/dist/widgets/factories/media.js.map +1 -0
- package/dist/widgets/factories/navigation.d.ts +10 -0
- package/dist/widgets/factories/navigation.d.ts.map +1 -0
- package/dist/widgets/factories/navigation.js +24 -0
- package/dist/widgets/factories/navigation.js.map +1 -0
- package/dist/widgets/field.d.ts +6 -1
- package/dist/widgets/field.d.ts.map +1 -1
- package/dist/widgets/field.js +8 -2
- package/dist/widgets/field.js.map +1 -1
- package/dist/widgets/filePicker.d.ts +5 -0
- package/dist/widgets/filePicker.d.ts.map +1 -0
- package/dist/widgets/filePicker.js +136 -0
- package/dist/widgets/filePicker.js.map +1 -0
- package/dist/widgets/protocol.d.ts +0 -6
- package/dist/widgets/protocol.d.ts.map +1 -1
- package/dist/widgets/protocol.js +0 -6
- package/dist/widgets/protocol.js.map +1 -1
- package/dist/widgets/select.js +1 -1
- package/dist/widgets/select.js.map +1 -1
- package/dist/widgets/splitPane.d.ts.map +1 -1
- package/dist/widgets/splitPane.js.map +1 -1
- package/dist/widgets/table.d.ts.map +1 -1
- package/dist/widgets/table.js +43 -1
- package/dist/widgets/table.js.map +1 -1
- package/dist/widgets/tree.d.ts.map +1 -1
- package/dist/widgets/types/advanced.d.ts +611 -0
- package/dist/widgets/types/advanced.d.ts.map +1 -0
- package/dist/widgets/types/advanced.js +2 -0
- package/dist/widgets/types/advanced.js.map +1 -0
- package/dist/widgets/types/base.d.ts +933 -0
- package/dist/widgets/types/base.d.ts.map +1 -0
- package/dist/widgets/types/base.js +2 -0
- package/dist/widgets/types/base.js.map +1 -0
- package/dist/widgets/types/forms.d.ts +136 -0
- package/dist/widgets/types/forms.d.ts.map +1 -0
- package/dist/widgets/types/forms.js +2 -0
- package/dist/widgets/types/forms.js.map +1 -0
- package/dist/widgets/types/navigation.d.ts +83 -0
- package/dist/widgets/types/navigation.d.ts.map +1 -0
- package/dist/widgets/types/navigation.js +2 -0
- package/dist/widgets/types/navigation.js.map +1 -0
- package/dist/widgets/types/overlaysShell.d.ts +223 -0
- package/dist/widgets/types/overlaysShell.d.ts.map +1 -0
- package/dist/widgets/types/overlaysShell.js +2 -0
- package/dist/widgets/types/overlaysShell.js.map +1 -0
- package/dist/widgets/types/table.d.ts +104 -0
- package/dist/widgets/types/table.d.ts.map +1 -0
- package/dist/widgets/types/table.js +2 -0
- package/dist/widgets/types/table.js.map +1 -0
- package/dist/widgets/types/tree.d.ts +64 -0
- package/dist/widgets/types/tree.d.ts.map +1 -0
- package/dist/widgets/types/tree.js +2 -0
- package/dist/widgets/types/tree.js.map +1 -0
- package/dist/widgets/types.d.ts +14 -2123
- package/dist/widgets/types.d.ts.map +1 -1
- package/dist/widgets/ui.d.ts +37 -843
- package/dist/widgets/ui.d.ts.map +1 -1
- package/dist/widgets/ui.js +37 -1262
- package/dist/widgets/ui.js.map +1 -1
- package/package.json +2 -2
- package/dist/constraints/aggregation.d.ts +0 -17
- package/dist/constraints/aggregation.d.ts.map +0 -1
- package/dist/constraints/aggregation.js +0 -59
- package/dist/constraints/aggregation.js.map +0 -1
- package/dist/renderer/renderToDrawlist/overflowCulling.d.ts +0 -3
- package/dist/renderer/renderToDrawlist/overflowCulling.d.ts.map +0 -1
- package/dist/renderer/renderToDrawlist/overflowCulling.js +0 -81
- package/dist/renderer/renderToDrawlist/overflowCulling.js.map +0 -1
- package/dist/widgets/tests/protocol.test.d.ts +0 -2
- package/dist/widgets/tests/protocol.test.d.ts.map +0 -1
- package/dist/widgets/tests/protocol.test.js +0 -120
- package/dist/widgets/tests/protocol.test.js.map +0 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { getWidgetProtocol, kindIsFocusable, kindIsPressable } from "../../widgets/protocol.js";
|
|
2
|
+
/** Extract interactive widget ID from a node with a valid `id` prop. */
|
|
3
|
+
export function readInteractiveId(v) {
|
|
4
|
+
const proto = getWidgetProtocol(v.kind);
|
|
5
|
+
if (!proto.requiresId && !proto.focusable && !proto.pressable)
|
|
6
|
+
return null;
|
|
7
|
+
const id = v.props.id;
|
|
8
|
+
if (typeof id !== "string" || id.length === 0)
|
|
9
|
+
return null;
|
|
10
|
+
return id;
|
|
11
|
+
}
|
|
12
|
+
export function isFocusableInteractive(v) {
|
|
13
|
+
const focusable = v.props.focusable;
|
|
14
|
+
if (focusable === false)
|
|
15
|
+
return false;
|
|
16
|
+
// Note: Some interactive widgets require an id for routing (e.g. SplitPane dividers),
|
|
17
|
+
// but are explicitly NOT focusable (PLAN.md).
|
|
18
|
+
return kindIsFocusable(v.kind);
|
|
19
|
+
}
|
|
20
|
+
export function isEnabledInteractive(v) {
|
|
21
|
+
const id = readInteractiveId(v);
|
|
22
|
+
if (id === null)
|
|
23
|
+
return null;
|
|
24
|
+
const proto = getWidgetProtocol(v.kind);
|
|
25
|
+
if (proto.disableable) {
|
|
26
|
+
const disabled = v.props.disabled;
|
|
27
|
+
if (disabled === true)
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
if (proto.openGated) {
|
|
31
|
+
const open = v.props.open;
|
|
32
|
+
if (open !== true)
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return id;
|
|
36
|
+
}
|
|
37
|
+
export function readNonEmptyString(v) {
|
|
38
|
+
if (typeof v !== "string")
|
|
39
|
+
return null;
|
|
40
|
+
const trimmed = v.trim();
|
|
41
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Collect focusable ids from a committed runtime tree.
|
|
45
|
+
*
|
|
46
|
+
* - Order: depth-first preorder
|
|
47
|
+
* - Children: left-to-right
|
|
48
|
+
* - Focusable set: enabled focusable interactive widgets
|
|
49
|
+
*/
|
|
50
|
+
export function collectFocusableIds(tree) {
|
|
51
|
+
const out = [];
|
|
52
|
+
const stack = [tree];
|
|
53
|
+
while (stack.length > 0) {
|
|
54
|
+
const node = stack.pop();
|
|
55
|
+
if (!node)
|
|
56
|
+
continue;
|
|
57
|
+
const id = isFocusableInteractive(node.vnode) ? isEnabledInteractive(node.vnode) : null;
|
|
58
|
+
if (id !== null)
|
|
59
|
+
out.push(id);
|
|
60
|
+
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
61
|
+
const c = node.children[i];
|
|
62
|
+
if (c)
|
|
63
|
+
stack.push(c);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return Object.freeze(out);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Collect a deterministic enabled map (interactive id -> enabled) from a committed runtime tree.
|
|
70
|
+
*
|
|
71
|
+
* Interactive widgets are always included when their `id` is a non-empty string;
|
|
72
|
+
* enabled is `true` iff `disabled !== true`.
|
|
73
|
+
*/
|
|
74
|
+
export function collectEnabledMap(tree) {
|
|
75
|
+
const m = new Map();
|
|
76
|
+
const stack = [tree];
|
|
77
|
+
while (stack.length > 0) {
|
|
78
|
+
const node = stack.pop();
|
|
79
|
+
if (!node)
|
|
80
|
+
continue;
|
|
81
|
+
const id = readInteractiveId(node.vnode);
|
|
82
|
+
if (id !== null && !m.has(id)) {
|
|
83
|
+
let enabled = true;
|
|
84
|
+
const proto = getWidgetProtocol(node.vnode.kind);
|
|
85
|
+
if (proto.disableable) {
|
|
86
|
+
const disabled = node.vnode.props.disabled;
|
|
87
|
+
enabled = disabled !== true;
|
|
88
|
+
}
|
|
89
|
+
if (proto.openGated) {
|
|
90
|
+
const open = node.vnode.props.open;
|
|
91
|
+
enabled = open === true;
|
|
92
|
+
}
|
|
93
|
+
m.set(id, enabled);
|
|
94
|
+
}
|
|
95
|
+
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
96
|
+
const c = node.children[i];
|
|
97
|
+
if (c)
|
|
98
|
+
stack.push(c);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return m;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Collect ids that can produce a "press" action (Buttons).
|
|
105
|
+
*
|
|
106
|
+
* Includes Buttons with a non-empty string id, regardless of disabled state.
|
|
107
|
+
*/
|
|
108
|
+
export function collectPressableIds(tree) {
|
|
109
|
+
const s = new Set();
|
|
110
|
+
const stack = [tree];
|
|
111
|
+
while (stack.length > 0) {
|
|
112
|
+
const node = stack.pop();
|
|
113
|
+
if (!node)
|
|
114
|
+
continue;
|
|
115
|
+
if (kindIsPressable(node.vnode.kind)) {
|
|
116
|
+
const id = node.vnode.props.id;
|
|
117
|
+
if (typeof id === "string" && id.length > 0)
|
|
118
|
+
s.add(id);
|
|
119
|
+
}
|
|
120
|
+
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
121
|
+
const c = node.children[i];
|
|
122
|
+
if (c)
|
|
123
|
+
stack.push(c);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return s;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Collect a deterministic map of Input id -> { instanceId, value, disabled } from a committed runtime tree.
|
|
130
|
+
*
|
|
131
|
+
* Inputs are included when their `id` is a non-empty string and `value` is a string.
|
|
132
|
+
*/
|
|
133
|
+
export function collectInputMetaById(tree) {
|
|
134
|
+
const m = new Map();
|
|
135
|
+
const stack = [tree];
|
|
136
|
+
while (stack.length > 0) {
|
|
137
|
+
const node = stack.pop();
|
|
138
|
+
if (!node)
|
|
139
|
+
continue;
|
|
140
|
+
if (node.vnode.kind === "input") {
|
|
141
|
+
const props = node.vnode.props;
|
|
142
|
+
const id = typeof props.id === "string" && props.id.length > 0 ? props.id : null;
|
|
143
|
+
const value = typeof props.value === "string" ? props.value : null;
|
|
144
|
+
if (id !== null && value !== null && !m.has(id)) {
|
|
145
|
+
const disabled = props.disabled === true;
|
|
146
|
+
const readOnly = props.readOnly === true;
|
|
147
|
+
const multiline = props.multiline === true;
|
|
148
|
+
const rowsRaw = typeof props.rows === "number" && Number.isFinite(props.rows) ? props.rows : 3;
|
|
149
|
+
const rows = multiline ? Math.max(1, Math.trunc(rowsRaw)) : 1;
|
|
150
|
+
const wordWrap = multiline ? props.wordWrap !== false : false;
|
|
151
|
+
const onInput = typeof props.onInput === "function"
|
|
152
|
+
? props.onInput
|
|
153
|
+
: undefined;
|
|
154
|
+
const onBlur = typeof props.onBlur === "function" ? props.onBlur : undefined;
|
|
155
|
+
const metaBase = {
|
|
156
|
+
instanceId: node.instanceId,
|
|
157
|
+
value,
|
|
158
|
+
disabled,
|
|
159
|
+
readOnly,
|
|
160
|
+
multiline,
|
|
161
|
+
rows,
|
|
162
|
+
wordWrap,
|
|
163
|
+
};
|
|
164
|
+
const meta = onInput || onBlur
|
|
165
|
+
? Object.freeze({
|
|
166
|
+
...metaBase,
|
|
167
|
+
...(onInput ? { onInput } : {}),
|
|
168
|
+
...(onBlur ? { onBlur } : {}),
|
|
169
|
+
})
|
|
170
|
+
: Object.freeze(metaBase);
|
|
171
|
+
m.set(id, meta);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
175
|
+
const c = node.children[i];
|
|
176
|
+
if (c)
|
|
177
|
+
stack.push(c);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return m;
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/runtime/widgetMeta/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,177 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* packages/core/src/runtime/widgetMeta.ts —
|
|
3
|
-
*
|
|
4
|
-
* Why:
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* - focusTraps: trap metadata with their contained focusable ids
|
|
15
|
-
*
|
|
16
|
-
* @see docs/guide/runtime-and-layout.md
|
|
17
|
-
*/
|
|
18
|
-
import type { FocusZoneNavigation } from "../widgets/types.js";
|
|
19
|
-
import type { RuntimeInstance } from "./commit.js";
|
|
20
|
-
import type { InstanceId } from "./instance.js";
|
|
21
|
-
/**
|
|
22
|
-
* Collect focusable ids from a committed runtime tree.
|
|
23
|
-
*
|
|
24
|
-
* - Order: depth-first preorder
|
|
25
|
-
* - Children: left-to-right
|
|
26
|
-
* - Focusable set: enabled focusable interactive widgets
|
|
27
|
-
*/
|
|
28
|
-
export declare function collectFocusableIds(tree: RuntimeInstance): readonly string[];
|
|
29
|
-
/**
|
|
30
|
-
* Collect a deterministic enabled map (interactive id -> enabled) from a committed runtime tree.
|
|
31
|
-
*
|
|
32
|
-
* Interactive widgets are always included when their `id` is a non-empty string;
|
|
33
|
-
* enabled is `true` iff `disabled !== true`.
|
|
34
|
-
*/
|
|
35
|
-
export declare function collectEnabledMap(tree: RuntimeInstance): ReadonlyMap<string, boolean>;
|
|
36
|
-
/** Metadata for an Input widget instance. */
|
|
37
|
-
export type InputMeta = Readonly<{
|
|
38
|
-
instanceId: InstanceId;
|
|
39
|
-
value: string;
|
|
40
|
-
disabled: boolean;
|
|
41
|
-
readOnly: boolean;
|
|
42
|
-
multiline: boolean;
|
|
43
|
-
rows: number;
|
|
44
|
-
wordWrap: boolean;
|
|
45
|
-
onInput?: (value: string, cursor: number) => void;
|
|
46
|
-
onBlur?: () => void;
|
|
47
|
-
}>;
|
|
48
|
-
/** Structured accessibility/focus semantics for a focusable widget. */
|
|
49
|
-
export type FocusInfo = Readonly<{
|
|
50
|
-
id: string | null;
|
|
51
|
-
kind: RuntimeInstance["vnode"]["kind"] | null;
|
|
52
|
-
accessibleLabel: string | null;
|
|
53
|
-
visibleLabel: string | null;
|
|
54
|
-
required: boolean;
|
|
55
|
-
errors: readonly string[];
|
|
56
|
-
announcement: string | null;
|
|
57
|
-
}>;
|
|
58
|
-
/**
|
|
59
|
-
* Collect ids that can produce a "press" action (Buttons).
|
|
60
|
-
*
|
|
61
|
-
* Includes Buttons with a non-empty string id, regardless of disabled state.
|
|
62
|
-
*/
|
|
63
|
-
export declare function collectPressableIds(tree: RuntimeInstance): ReadonlySet<string>;
|
|
64
|
-
/**
|
|
65
|
-
* Collect a deterministic map of Input id -> { instanceId, value, disabled } from a committed runtime tree.
|
|
66
|
-
*
|
|
67
|
-
* Inputs are included when their `id` is a non-empty string and `value` is a string.
|
|
68
|
-
*/
|
|
69
|
-
export declare function collectInputMetaById(tree: RuntimeInstance): ReadonlyMap<string, InputMeta>;
|
|
70
|
-
/** Collected focus zone metadata. */
|
|
71
|
-
export type CollectedZone = Readonly<{
|
|
72
|
-
id: string;
|
|
73
|
-
tabIndex: number;
|
|
74
|
-
navigation: FocusZoneNavigation;
|
|
75
|
-
columns: number;
|
|
76
|
-
wrapAround: boolean;
|
|
77
|
-
focusableIds: readonly string[];
|
|
78
|
-
parentZoneId?: string;
|
|
79
|
-
onEnter?: () => void;
|
|
80
|
-
onExit?: () => void;
|
|
81
|
-
}>;
|
|
82
|
-
/** Collected focus trap metadata. */
|
|
83
|
-
export type CollectedTrap = Readonly<{
|
|
84
|
-
id: string;
|
|
85
|
-
kind?: "focusTrap" | "modal";
|
|
86
|
-
active: boolean;
|
|
87
|
-
returnFocusTo: string | null;
|
|
88
|
-
initialFocus: string | null;
|
|
89
|
-
focusableIds: readonly string[];
|
|
90
|
-
}>;
|
|
91
|
-
/**
|
|
92
|
-
* Collect all focus zones from a committed runtime tree.
|
|
93
|
-
*
|
|
94
|
-
* - Order: depth-first preorder
|
|
95
|
-
* - Each zone contains only the focusable ids directly within it (not in nested zones/traps)
|
|
96
|
-
*/
|
|
97
|
-
export declare function collectFocusZones(tree: RuntimeInstance): ReadonlyMap<string, CollectedZone>;
|
|
98
|
-
/**
|
|
99
|
-
* Collect all focus traps from a committed runtime tree.
|
|
100
|
-
*
|
|
101
|
-
* - Order: depth-first preorder
|
|
102
|
-
* - Each trap contains only the focusable ids directly within it (not in nested zones/traps)
|
|
103
|
-
*/
|
|
104
|
-
export declare function collectFocusTraps(tree: RuntimeInstance): ReadonlyMap<string, CollectedTrap>;
|
|
105
|
-
/**
|
|
106
|
-
* All widget metadata collected in a single tree traversal.
|
|
107
|
-
*
|
|
108
|
-
* Replaces 6+ separate O(n) traversals with one O(n) pass.
|
|
109
|
-
*/
|
|
110
|
-
export type CollectedWidgetMetadata = Readonly<{
|
|
111
|
-
focusableIds: readonly string[];
|
|
112
|
-
focusInfoById: ReadonlyMap<string, FocusInfo>;
|
|
113
|
-
enabledById: ReadonlyMap<string, boolean>;
|
|
114
|
-
pressableIds: ReadonlySet<string>;
|
|
115
|
-
inputById: ReadonlyMap<string, InputMeta>;
|
|
116
|
-
zones: ReadonlyMap<string, CollectedZone>;
|
|
117
|
-
traps: ReadonlyMap<string, CollectedTrap>;
|
|
118
|
-
/**
|
|
119
|
-
* True when the tree contains widget kinds that require the routing-rebuild pass.
|
|
120
|
-
* Allows renderer fast-paths to skip an extra traversal for static/non-interactive trees.
|
|
121
|
-
*/
|
|
122
|
-
hasRoutingWidgets: boolean;
|
|
123
|
-
}>;
|
|
124
|
-
/**
|
|
125
|
-
* Reusable metadata collector that pools internal data structures.
|
|
126
|
-
*
|
|
127
|
-
* Instead of allocating new Maps/Sets/arrays on every frame, this class
|
|
128
|
-
* clears and reuses its internal collections, reducing GC pressure.
|
|
129
|
-
*
|
|
130
|
-
* Usage:
|
|
131
|
-
* const collector = createWidgetMetadataCollector();
|
|
132
|
-
* // Each frame:
|
|
133
|
-
* const metadata = collector.collect(committedRoot);
|
|
134
|
-
*/
|
|
135
|
-
export declare class WidgetMetadataCollector {
|
|
136
|
-
private readonly _focusableIds;
|
|
137
|
-
private readonly _focusInfoById;
|
|
138
|
-
private readonly _enabledById;
|
|
139
|
-
private readonly _pressableIds;
|
|
140
|
-
private readonly _inputById;
|
|
141
|
-
private readonly _focusContainerKindsById;
|
|
142
|
-
private readonly _zoneDataById;
|
|
143
|
-
private readonly _trapDataById;
|
|
144
|
-
private readonly _zoneFocusables;
|
|
145
|
-
private readonly _trapFocusables;
|
|
146
|
-
private readonly _containerStack;
|
|
147
|
-
private readonly _fieldStack;
|
|
148
|
-
private readonly _stack;
|
|
149
|
-
private readonly _zones;
|
|
150
|
-
private readonly _traps;
|
|
151
|
-
/**
|
|
152
|
-
* Collect all widget metadata in a single tree traversal.
|
|
153
|
-
*
|
|
154
|
-
* Internal collections are cleared and reused to avoid allocations.
|
|
155
|
-
*/
|
|
156
|
-
collect(tree: RuntimeInstance): CollectedWidgetMetadata;
|
|
157
|
-
}
|
|
158
|
-
/** Create a reusable widget metadata collector. */
|
|
159
|
-
export declare function createWidgetMetadataCollector(): WidgetMetadataCollector;
|
|
160
|
-
/**
|
|
161
|
-
* Collect all widget metadata in a single tree traversal.
|
|
162
|
-
*
|
|
163
|
-
* This replaces:
|
|
164
|
-
* - collectFocusableIds()
|
|
165
|
-
* - collectEnabledMap()
|
|
166
|
-
* - collectPressableIds()
|
|
167
|
-
* - collectInputMetaById()
|
|
168
|
-
* - collectFocusZones()
|
|
169
|
-
* - collectFocusTraps()
|
|
170
|
-
*
|
|
171
|
-
* Performance: O(n) where n = number of nodes in the tree.
|
|
172
|
-
*
|
|
173
|
-
* Note: This function allocates new collections each call. For hot paths,
|
|
174
|
-
* use createWidgetMetadataCollector() to reuse collections across frames.
|
|
175
|
-
*/
|
|
176
|
-
export declare function collectAllWidgetMetadata(tree: RuntimeInstance): CollectedWidgetMetadata;
|
|
2
|
+
* packages/core/src/runtime/widgetMeta.ts — Public widget metadata API.
|
|
3
|
+
*
|
|
4
|
+
* Why: Keep the stable widget metadata entrypoint small while delegating
|
|
5
|
+
* concern-specific logic to internal modules under `runtime/widgetMeta/`.
|
|
6
|
+
*/
|
|
7
|
+
export type { CollectedWidgetMetadata } from "./widgetMeta/collector.js";
|
|
8
|
+
export { WidgetMetadataCollector, collectAllWidgetMetadata, createWidgetMetadataCollector, } from "./widgetMeta/collector.js";
|
|
9
|
+
export type { CollectedTrap, CollectedZone } from "./widgetMeta/focusContainers.js";
|
|
10
|
+
export { collectFocusTraps, collectFocusZones } from "./widgetMeta/focusContainers.js";
|
|
11
|
+
export type { FocusInfo } from "./widgetMeta/focusInfo.js";
|
|
12
|
+
export type { InputMeta } from "./widgetMeta/helpers.js";
|
|
13
|
+
export { collectEnabledMap, collectFocusableIds, collectInputMetaById, collectPressableIds, } from "./widgetMeta/helpers.js";
|
|
177
14
|
//# sourceMappingURL=widgetMeta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetMeta.d.ts","sourceRoot":"","sources":["../../src/runtime/widgetMeta.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"widgetMeta.d.ts","sourceRoot":"","sources":["../../src/runtime/widgetMeta.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACvF,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
|