@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
|
@@ -15,836 +15,5 @@
|
|
|
15
15
|
*
|
|
16
16
|
* @see docs/guide/layout.md
|
|
17
17
|
*/
|
|
18
|
-
|
|
19
|
-
import { resolveResponsiveValue } from "./responsive.js";
|
|
20
|
-
import { SPACING_SCALE, isSpacingKey } from "./spacing-scale.js";
|
|
21
|
-
function invalid(detail) {
|
|
22
|
-
return { ok: false, fatal: { code: "ZRUI_INVALID_PROPS", detail } };
|
|
23
|
-
}
|
|
24
|
-
function describeReceivedType(value) {
|
|
25
|
-
if (value === null)
|
|
26
|
-
return "null";
|
|
27
|
-
if (Array.isArray(value))
|
|
28
|
-
return "array";
|
|
29
|
-
return typeof value;
|
|
30
|
-
}
|
|
31
|
-
function invalidProp(kind, name, expected, received) {
|
|
32
|
-
return invalid(`Invalid prop "${name}" on <${kind}>: expected ${expected}, ` +
|
|
33
|
-
`got ${describeReceivedType(received)} (${String(received)})`);
|
|
34
|
-
}
|
|
35
|
-
const I32_MIN = -2147483648;
|
|
36
|
-
const I32_MAX = 2147483647;
|
|
37
|
-
function normalizeStringToken(value) {
|
|
38
|
-
if (typeof value !== "string")
|
|
39
|
-
return value;
|
|
40
|
-
return value.trim().toLowerCase();
|
|
41
|
-
}
|
|
42
|
-
function isResponsiveBreakpointMap(value) {
|
|
43
|
-
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
44
|
-
return false;
|
|
45
|
-
if (value.kind === "fluid")
|
|
46
|
-
return false;
|
|
47
|
-
const record = value;
|
|
48
|
-
return "sm" in record || "md" in record || "lg" in record || "xl" in record;
|
|
49
|
-
}
|
|
50
|
-
function parseFiniteNumber(value) {
|
|
51
|
-
if (typeof value === "number") {
|
|
52
|
-
return Number.isFinite(value) ? value : undefined;
|
|
53
|
-
}
|
|
54
|
-
if (typeof value === "string") {
|
|
55
|
-
const trimmed = value.trim();
|
|
56
|
-
if (trimmed.length === 0)
|
|
57
|
-
return undefined;
|
|
58
|
-
const parsed = Number(trimmed);
|
|
59
|
-
return Number.isFinite(parsed) ? parsed : undefined;
|
|
60
|
-
}
|
|
61
|
-
return undefined;
|
|
62
|
-
}
|
|
63
|
-
function parseCoercedInt(value) {
|
|
64
|
-
const n = parseFiniteNumber(value);
|
|
65
|
-
if (n === undefined)
|
|
66
|
-
return undefined;
|
|
67
|
-
return Math.trunc(n);
|
|
68
|
-
}
|
|
69
|
-
function requireIntNonNegative(kind, name, v, def) {
|
|
70
|
-
const resolved = resolveResponsiveValue(v);
|
|
71
|
-
const value = resolved === undefined ? def : resolved;
|
|
72
|
-
const n = parseFiniteNumber(value);
|
|
73
|
-
if (n === undefined || n < 0) {
|
|
74
|
-
return invalid(`${kind}.${name} must be an int32 >= 0`);
|
|
75
|
-
}
|
|
76
|
-
const parsed = Math.trunc(n);
|
|
77
|
-
if (parsed > I32_MAX)
|
|
78
|
-
return invalid(`${kind}.${name} must be an int32 >= 0`);
|
|
79
|
-
return { ok: true, value: parsed };
|
|
80
|
-
}
|
|
81
|
-
function requireIntSigned(kind, name, v, def) {
|
|
82
|
-
const resolved = resolveResponsiveValue(v);
|
|
83
|
-
const value = resolved === undefined ? def : resolved;
|
|
84
|
-
const parsed = parseCoercedInt(value);
|
|
85
|
-
if (parsed === undefined || parsed < I32_MIN || parsed > I32_MAX) {
|
|
86
|
-
return invalid(`${kind}.${name} must be an int32`);
|
|
87
|
-
}
|
|
88
|
-
return { ok: true, value: parsed };
|
|
89
|
-
}
|
|
90
|
-
function requireSpacingIntNonNegative(kind, name, v, def) {
|
|
91
|
-
const resolved = resolveResponsiveValue(v);
|
|
92
|
-
const value = resolved === undefined ? def : resolved;
|
|
93
|
-
if (typeof value === "string") {
|
|
94
|
-
const normalized = normalizeStringToken(value);
|
|
95
|
-
if (typeof normalized === "string" && isSpacingKey(normalized)) {
|
|
96
|
-
return { ok: true, value: SPACING_SCALE[normalized] };
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return requireIntNonNegative(kind, name, value, def);
|
|
100
|
-
}
|
|
101
|
-
function requireSpacingIntSigned(kind, name, v, def) {
|
|
102
|
-
const resolved = resolveResponsiveValue(v);
|
|
103
|
-
const value = resolved === undefined ? def : resolved;
|
|
104
|
-
if (typeof value === "string") {
|
|
105
|
-
const normalized = normalizeStringToken(value);
|
|
106
|
-
if (typeof normalized === "string" && isSpacingKey(normalized)) {
|
|
107
|
-
return { ok: true, value: SPACING_SCALE[normalized] };
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return requireIntSigned(kind, name, value, def);
|
|
111
|
-
}
|
|
112
|
-
function requireOptionalIntNonNegative(kind, name, v) {
|
|
113
|
-
const resolved = resolveResponsiveValue(v);
|
|
114
|
-
if (resolved === undefined)
|
|
115
|
-
return { ok: true, value: undefined };
|
|
116
|
-
const res = requireIntNonNegative(kind, name, resolved, 0);
|
|
117
|
-
if (!res.ok)
|
|
118
|
-
return res;
|
|
119
|
-
return { ok: true, value: res.value };
|
|
120
|
-
}
|
|
121
|
-
function requireOptionalIntNonNegativeOrConstraint(kind, name, v) {
|
|
122
|
-
if (isResponsiveBreakpointMap(v)) {
|
|
123
|
-
return invalid(`${kind}.${name} no longer supports responsive maps. Use expr("steps(...)") or fluid(...) instead.`);
|
|
124
|
-
}
|
|
125
|
-
const resolved = resolveResponsiveValue(v);
|
|
126
|
-
if (resolved === undefined)
|
|
127
|
-
return { ok: true, value: undefined };
|
|
128
|
-
if (isConstraintExpr(resolved))
|
|
129
|
-
return { ok: true, value: resolved };
|
|
130
|
-
const res = requireIntNonNegative(kind, name, resolved, 0);
|
|
131
|
-
if (!res.ok)
|
|
132
|
-
return res;
|
|
133
|
-
return { ok: true, value: res.value };
|
|
134
|
-
}
|
|
135
|
-
function requireOptionalIntSigned(kind, name, v) {
|
|
136
|
-
const resolved = resolveResponsiveValue(v);
|
|
137
|
-
if (resolved === undefined)
|
|
138
|
-
return { ok: true, value: undefined };
|
|
139
|
-
const res = requireIntSigned(kind, name, resolved, 0);
|
|
140
|
-
if (!res.ok)
|
|
141
|
-
return res;
|
|
142
|
-
return { ok: true, value: res.value };
|
|
143
|
-
}
|
|
144
|
-
function requireString(kind, name, v) {
|
|
145
|
-
if (typeof v !== "string") {
|
|
146
|
-
return invalid(`${kind}.${name} must be a string`);
|
|
147
|
-
}
|
|
148
|
-
return { ok: true, value: v };
|
|
149
|
-
}
|
|
150
|
-
function requireNonEmptyString(kind, name, v) {
|
|
151
|
-
const res = requireString(kind, name, v);
|
|
152
|
-
if (!res.ok)
|
|
153
|
-
return res;
|
|
154
|
-
if (res.value.length === 0)
|
|
155
|
-
return invalid(`${kind}.${name} must be a non-empty string`);
|
|
156
|
-
return res;
|
|
157
|
-
}
|
|
158
|
-
function requireOptionalString(kind, name, v) {
|
|
159
|
-
if (v === undefined)
|
|
160
|
-
return { ok: true, value: undefined };
|
|
161
|
-
return requireString(kind, name, v);
|
|
162
|
-
}
|
|
163
|
-
function requireFiniteNumber(kind, name, v) {
|
|
164
|
-
const parsed = parseFiniteNumber(resolveResponsiveValue(v));
|
|
165
|
-
if (parsed === undefined) {
|
|
166
|
-
return invalid(`${kind}.${name} must be a finite number`);
|
|
167
|
-
}
|
|
168
|
-
return { ok: true, value: parsed };
|
|
169
|
-
}
|
|
170
|
-
function requireOptionalFiniteNumber(kind, name, v) {
|
|
171
|
-
if (v === undefined)
|
|
172
|
-
return { ok: true, value: undefined };
|
|
173
|
-
return requireFiniteNumber(kind, name, v);
|
|
174
|
-
}
|
|
175
|
-
function requireBoolean(kind, name, v, def) {
|
|
176
|
-
const value = v === undefined ? def : v;
|
|
177
|
-
if (typeof value !== "boolean") {
|
|
178
|
-
return invalid(`${kind}.${name} must be a boolean`);
|
|
179
|
-
}
|
|
180
|
-
return { ok: true, value };
|
|
181
|
-
}
|
|
182
|
-
function requireOverflow(kind, name, v, def) {
|
|
183
|
-
const resolved = resolveResponsiveValue(v);
|
|
184
|
-
const value = resolved === undefined ? def : resolved;
|
|
185
|
-
const normalized = normalizeStringToken(value);
|
|
186
|
-
if (normalized === "visible" || normalized === "hidden" || normalized === "scroll") {
|
|
187
|
-
return { ok: true, value: normalized };
|
|
188
|
-
}
|
|
189
|
-
return invalid(`${kind}.${name} must be one of "visible" | "hidden" | "scroll"`);
|
|
190
|
-
}
|
|
191
|
-
function requireSizeConstraint(kind, name, v) {
|
|
192
|
-
if (isResponsiveBreakpointMap(v)) {
|
|
193
|
-
return invalid(`${kind}.${name} no longer supports responsive maps. Use expr("steps(...)") or fluid(...) instead.`);
|
|
194
|
-
}
|
|
195
|
-
const resolved = resolveResponsiveValue(v);
|
|
196
|
-
if (resolved === undefined)
|
|
197
|
-
return { ok: true, value: undefined };
|
|
198
|
-
if (isConstraintExpr(resolved))
|
|
199
|
-
return { ok: true, value: resolved };
|
|
200
|
-
if (typeof resolved === "string") {
|
|
201
|
-
const normalized = normalizeStringToken(resolved);
|
|
202
|
-
if (normalized === "auto")
|
|
203
|
-
return { ok: true, value: "auto" };
|
|
204
|
-
if (normalized === "full")
|
|
205
|
-
return { ok: true, value: "full" };
|
|
206
|
-
if (typeof normalized === "string" && normalized.endsWith("%")) {
|
|
207
|
-
return invalid(`${kind}.${name} no longer supports percentage strings. Use expr("parent.${name === "height" ? "h" : "w"} * <ratio>") instead.`);
|
|
208
|
-
}
|
|
209
|
-
const parsed = parseCoercedInt(normalized);
|
|
210
|
-
if (parsed === undefined || parsed < 0 || parsed > I32_MAX) {
|
|
211
|
-
return invalidProp(kind, name, 'number | "full" | "auto" | fluid(...) | expr(...)', resolved);
|
|
212
|
-
}
|
|
213
|
-
return { ok: true, value: parsed };
|
|
214
|
-
}
|
|
215
|
-
if (typeof resolved === "number") {
|
|
216
|
-
const parsed = parseCoercedInt(resolved);
|
|
217
|
-
if (parsed === undefined || parsed < 0 || parsed > I32_MAX) {
|
|
218
|
-
return invalidProp(kind, name, "non-negative integer", resolved);
|
|
219
|
-
}
|
|
220
|
-
return { ok: true, value: parsed };
|
|
221
|
-
}
|
|
222
|
-
return invalidProp(kind, name, 'number | "full" | "auto" | fluid(...) | expr(...)', resolved);
|
|
223
|
-
}
|
|
224
|
-
function requireDisplayConstraint(kind, name, v) {
|
|
225
|
-
if (v === undefined)
|
|
226
|
-
return { ok: true, value: undefined };
|
|
227
|
-
if (isResponsiveBreakpointMap(v)) {
|
|
228
|
-
return invalid(`${kind}.${name} no longer supports responsive maps. Use expr("steps(...)") instead.`);
|
|
229
|
-
}
|
|
230
|
-
const resolved = resolveResponsiveValue(v);
|
|
231
|
-
if (resolved === undefined)
|
|
232
|
-
return { ok: true, value: undefined };
|
|
233
|
-
if (typeof resolved === "boolean")
|
|
234
|
-
return { ok: true, value: resolved };
|
|
235
|
-
if (isConstraintExpr(resolved))
|
|
236
|
-
return { ok: true, value: resolved };
|
|
237
|
-
return invalidProp(kind, name, "boolean | expr(...)", resolved);
|
|
238
|
-
}
|
|
239
|
-
function requireOptionalTextMaxWidth(kind, name, v) {
|
|
240
|
-
if (isResponsiveBreakpointMap(v)) {
|
|
241
|
-
return invalid(`${kind}.${name} no longer supports responsive maps. Use expr("steps(...)") or fluid(...) instead.`);
|
|
242
|
-
}
|
|
243
|
-
const resolved = resolveResponsiveValue(v);
|
|
244
|
-
if (resolved === undefined)
|
|
245
|
-
return { ok: true, value: undefined };
|
|
246
|
-
if (isConstraintExpr(resolved))
|
|
247
|
-
return { ok: true, value: resolved };
|
|
248
|
-
if (resolved === "full" || resolved === "auto")
|
|
249
|
-
return { ok: true, value: undefined };
|
|
250
|
-
if (typeof resolved === "string" && resolved.trim().endsWith("%")) {
|
|
251
|
-
return invalid(`${kind}.${name} no longer supports percentage strings. Use expr("parent.w * <ratio>") instead.`);
|
|
252
|
-
}
|
|
253
|
-
const res = requireIntNonNegative(kind, name, resolved, 0);
|
|
254
|
-
if (!res.ok)
|
|
255
|
-
return res;
|
|
256
|
-
return { ok: true, value: res.value };
|
|
257
|
-
}
|
|
258
|
-
function requireFlex(kind, v) {
|
|
259
|
-
const resolved = resolveResponsiveValue(v);
|
|
260
|
-
if (resolved === undefined)
|
|
261
|
-
return { ok: true, value: undefined };
|
|
262
|
-
if (typeof resolved !== "number" || !Number.isFinite(resolved) || resolved < 0) {
|
|
263
|
-
return invalid(`${kind}.flex must be a number >= 0`);
|
|
264
|
-
}
|
|
265
|
-
return { ok: true, value: resolved };
|
|
266
|
-
}
|
|
267
|
-
function requireFlexShrink(kind, v) {
|
|
268
|
-
const resolved = resolveResponsiveValue(v);
|
|
269
|
-
if (resolved === undefined)
|
|
270
|
-
return { ok: true, value: undefined };
|
|
271
|
-
if (typeof resolved !== "number" || !Number.isFinite(resolved) || resolved < 0) {
|
|
272
|
-
return invalid(`${kind}.flexShrink must be a number >= 0`);
|
|
273
|
-
}
|
|
274
|
-
return { ok: true, value: resolved };
|
|
275
|
-
}
|
|
276
|
-
function requireAspectRatio(kind, v) {
|
|
277
|
-
const resolved = resolveResponsiveValue(v);
|
|
278
|
-
if (resolved === undefined)
|
|
279
|
-
return { ok: true, value: undefined };
|
|
280
|
-
if (typeof resolved !== "number" || !Number.isFinite(resolved) || resolved <= 0) {
|
|
281
|
-
return invalid(`${kind}.aspectRatio must be a finite number > 0`);
|
|
282
|
-
}
|
|
283
|
-
return { ok: true, value: resolved };
|
|
284
|
-
}
|
|
285
|
-
function requireAlignSelf(kind, v) {
|
|
286
|
-
const resolved = resolveResponsiveValue(v);
|
|
287
|
-
if (resolved === undefined)
|
|
288
|
-
return { ok: true, value: undefined };
|
|
289
|
-
const normalized = normalizeStringToken(resolved);
|
|
290
|
-
if (normalized === "auto" ||
|
|
291
|
-
normalized === "start" ||
|
|
292
|
-
normalized === "center" ||
|
|
293
|
-
normalized === "end" ||
|
|
294
|
-
normalized === "stretch") {
|
|
295
|
-
return { ok: true, value: normalized };
|
|
296
|
-
}
|
|
297
|
-
return invalid(`${kind}.alignSelf must be one of "auto" | "start" | "center" | "end" | "stretch"`);
|
|
298
|
-
}
|
|
299
|
-
function requirePosition(kind, v) {
|
|
300
|
-
const resolved = resolveResponsiveValue(v);
|
|
301
|
-
if (resolved === undefined)
|
|
302
|
-
return { ok: true, value: undefined };
|
|
303
|
-
const normalized = normalizeStringToken(resolved);
|
|
304
|
-
if (normalized === "static" || normalized === "absolute") {
|
|
305
|
-
return { ok: true, value: normalized };
|
|
306
|
-
}
|
|
307
|
-
return invalid(`${kind}.position must be one of "static" | "absolute"`);
|
|
308
|
-
}
|
|
309
|
-
function requireGridStart(kind, name, v) {
|
|
310
|
-
const resolved = resolveResponsiveValue(v);
|
|
311
|
-
if (resolved === undefined)
|
|
312
|
-
return { ok: true, value: undefined };
|
|
313
|
-
const parsed = parseCoercedInt(resolved);
|
|
314
|
-
if (parsed === undefined || parsed < 1 || parsed > I32_MAX) {
|
|
315
|
-
return invalid(`${kind}.${name} must be an int32 >= 1`);
|
|
316
|
-
}
|
|
317
|
-
return { ok: true, value: parsed };
|
|
318
|
-
}
|
|
319
|
-
function requireGridSpan(kind, name, v) {
|
|
320
|
-
const resolved = resolveResponsiveValue(v);
|
|
321
|
-
if (resolved === undefined)
|
|
322
|
-
return { ok: true, value: undefined };
|
|
323
|
-
const parsed = parseCoercedInt(resolved);
|
|
324
|
-
if (parsed === undefined || parsed < 1 || parsed > I32_MAX) {
|
|
325
|
-
return invalid(`${kind}.${name} must be an int32 >= 1`);
|
|
326
|
-
}
|
|
327
|
-
return { ok: true, value: parsed };
|
|
328
|
-
}
|
|
329
|
-
function validateSpacingProps(kind, p) {
|
|
330
|
-
const paddingKeys = ["p", "px", "py", "pt", "pb", "pl", "pr"];
|
|
331
|
-
const marginKeys = ["m", "mx", "my", "mt", "mr", "mb", "ml"];
|
|
332
|
-
const out = {};
|
|
333
|
-
for (const k of paddingKeys) {
|
|
334
|
-
const v = p[k];
|
|
335
|
-
if (v === undefined)
|
|
336
|
-
continue;
|
|
337
|
-
const r = requireSpacingIntNonNegative(kind, k, v, 0);
|
|
338
|
-
if (!r.ok)
|
|
339
|
-
return r;
|
|
340
|
-
out[k] = r.value;
|
|
341
|
-
}
|
|
342
|
-
for (const k of marginKeys) {
|
|
343
|
-
const v = p[k];
|
|
344
|
-
if (v === undefined)
|
|
345
|
-
continue;
|
|
346
|
-
const r = requireSpacingIntSigned(kind, k, v, 0);
|
|
347
|
-
if (!r.ok)
|
|
348
|
-
return r;
|
|
349
|
-
out[k] = r.value;
|
|
350
|
-
}
|
|
351
|
-
return { ok: true, value: out };
|
|
352
|
-
}
|
|
353
|
-
function validateMinMax(kind, minName, maxName, minV, maxV) {
|
|
354
|
-
if (typeof minV === "number" && typeof maxV === "number" && minV > maxV) {
|
|
355
|
-
return invalid(`${kind}.${minName} must be <= ${kind}.${maxName}`);
|
|
356
|
-
}
|
|
357
|
-
return { ok: true, value: true };
|
|
358
|
-
}
|
|
359
|
-
function validateLayoutConstraints(kind, p) {
|
|
360
|
-
const widthRes = requireSizeConstraint(kind, "width", p.width);
|
|
361
|
-
if (!widthRes.ok)
|
|
362
|
-
return widthRes;
|
|
363
|
-
const heightRes = requireSizeConstraint(kind, "height", p.height);
|
|
364
|
-
if (!heightRes.ok)
|
|
365
|
-
return heightRes;
|
|
366
|
-
const minWidthRes = requireOptionalIntNonNegativeOrConstraint(kind, "minWidth", p.minWidth);
|
|
367
|
-
if (!minWidthRes.ok)
|
|
368
|
-
return minWidthRes;
|
|
369
|
-
const maxWidthRes = requireOptionalIntNonNegativeOrConstraint(kind, "maxWidth", p.maxWidth);
|
|
370
|
-
if (!maxWidthRes.ok)
|
|
371
|
-
return maxWidthRes;
|
|
372
|
-
const minHeightRes = requireOptionalIntNonNegativeOrConstraint(kind, "minHeight", p.minHeight);
|
|
373
|
-
if (!minHeightRes.ok)
|
|
374
|
-
return minHeightRes;
|
|
375
|
-
const maxHeightRes = requireOptionalIntNonNegativeOrConstraint(kind, "maxHeight", p.maxHeight);
|
|
376
|
-
if (!maxHeightRes.ok)
|
|
377
|
-
return maxHeightRes;
|
|
378
|
-
const mmw = validateMinMax(kind, "minWidth", "maxWidth", minWidthRes.value, maxWidthRes.value);
|
|
379
|
-
if (!mmw.ok)
|
|
380
|
-
return mmw;
|
|
381
|
-
const mmh = validateMinMax(kind, "minHeight", "maxHeight", minHeightRes.value, maxHeightRes.value);
|
|
382
|
-
if (!mmh.ok)
|
|
383
|
-
return mmh;
|
|
384
|
-
const flexRes = requireFlex(kind, p.flex);
|
|
385
|
-
if (!flexRes.ok)
|
|
386
|
-
return flexRes;
|
|
387
|
-
const flexShrinkRes = requireFlexShrink(kind, p.flexShrink);
|
|
388
|
-
if (!flexShrinkRes.ok)
|
|
389
|
-
return flexShrinkRes;
|
|
390
|
-
const flexBasisRes = requireSizeConstraint(kind, "flexBasis", p.flexBasis);
|
|
391
|
-
if (!flexBasisRes.ok)
|
|
392
|
-
return flexBasisRes;
|
|
393
|
-
const arRes = requireAspectRatio(kind, p.aspectRatio);
|
|
394
|
-
if (!arRes.ok)
|
|
395
|
-
return arRes;
|
|
396
|
-
const alignSelfRes = requireAlignSelf(kind, p.alignSelf);
|
|
397
|
-
if (!alignSelfRes.ok)
|
|
398
|
-
return alignSelfRes;
|
|
399
|
-
const positionRes = requirePosition(kind, p.position);
|
|
400
|
-
if (!positionRes.ok)
|
|
401
|
-
return positionRes;
|
|
402
|
-
const topRes = requireOptionalIntSigned(kind, "top", p.top);
|
|
403
|
-
if (!topRes.ok)
|
|
404
|
-
return topRes;
|
|
405
|
-
const rightRes = requireOptionalIntSigned(kind, "right", p.right);
|
|
406
|
-
if (!rightRes.ok)
|
|
407
|
-
return rightRes;
|
|
408
|
-
const bottomRes = requireOptionalIntSigned(kind, "bottom", p.bottom);
|
|
409
|
-
if (!bottomRes.ok)
|
|
410
|
-
return bottomRes;
|
|
411
|
-
const leftRes = requireOptionalIntSigned(kind, "left", p.left);
|
|
412
|
-
if (!leftRes.ok)
|
|
413
|
-
return leftRes;
|
|
414
|
-
const gridColumnRes = requireGridStart(kind, "gridColumn", p.gridColumn);
|
|
415
|
-
if (!gridColumnRes.ok)
|
|
416
|
-
return gridColumnRes;
|
|
417
|
-
const gridRowRes = requireGridStart(kind, "gridRow", p.gridRow);
|
|
418
|
-
if (!gridRowRes.ok)
|
|
419
|
-
return gridRowRes;
|
|
420
|
-
const colSpanRes = requireGridSpan(kind, "colSpan", p.colSpan);
|
|
421
|
-
if (!colSpanRes.ok)
|
|
422
|
-
return colSpanRes;
|
|
423
|
-
const rowSpanRes = requireGridSpan(kind, "rowSpan", p.rowSpan);
|
|
424
|
-
if (!rowSpanRes.ok)
|
|
425
|
-
return rowSpanRes;
|
|
426
|
-
const displayRes = requireDisplayConstraint(kind, "display", p.display);
|
|
427
|
-
if (!displayRes.ok)
|
|
428
|
-
return displayRes;
|
|
429
|
-
return {
|
|
430
|
-
ok: true,
|
|
431
|
-
value: {
|
|
432
|
-
...(widthRes.value === undefined ? {} : { width: widthRes.value }),
|
|
433
|
-
...(heightRes.value === undefined ? {} : { height: heightRes.value }),
|
|
434
|
-
...(minWidthRes.value === undefined ? {} : { minWidth: minWidthRes.value }),
|
|
435
|
-
...(maxWidthRes.value === undefined ? {} : { maxWidth: maxWidthRes.value }),
|
|
436
|
-
...(minHeightRes.value === undefined ? {} : { minHeight: minHeightRes.value }),
|
|
437
|
-
...(maxHeightRes.value === undefined ? {} : { maxHeight: maxHeightRes.value }),
|
|
438
|
-
...(flexRes.value === undefined ? {} : { flex: flexRes.value }),
|
|
439
|
-
...(flexShrinkRes.value === undefined ? {} : { flexShrink: flexShrinkRes.value }),
|
|
440
|
-
...(flexBasisRes.value === undefined ? {} : { flexBasis: flexBasisRes.value }),
|
|
441
|
-
...(arRes.value === undefined ? {} : { aspectRatio: arRes.value }),
|
|
442
|
-
...(alignSelfRes.value === undefined ? {} : { alignSelf: alignSelfRes.value }),
|
|
443
|
-
...(positionRes.value === undefined ? {} : { position: positionRes.value }),
|
|
444
|
-
...(topRes.value === undefined ? {} : { top: topRes.value }),
|
|
445
|
-
...(rightRes.value === undefined ? {} : { right: rightRes.value }),
|
|
446
|
-
...(bottomRes.value === undefined ? {} : { bottom: bottomRes.value }),
|
|
447
|
-
...(leftRes.value === undefined ? {} : { left: leftRes.value }),
|
|
448
|
-
...(gridColumnRes.value === undefined ? {} : { gridColumn: gridColumnRes.value }),
|
|
449
|
-
...(gridRowRes.value === undefined ? {} : { gridRow: gridRowRes.value }),
|
|
450
|
-
...(colSpanRes.value === undefined ? {} : { colSpan: colSpanRes.value }),
|
|
451
|
-
...(rowSpanRes.value === undefined ? {} : { rowSpan: rowSpanRes.value }),
|
|
452
|
-
...(displayRes.value === undefined ? {} : { display: displayRes.value }),
|
|
453
|
-
},
|
|
454
|
-
};
|
|
455
|
-
}
|
|
456
|
-
/** Validate Row/Column props: pad (default 0), gap (default 0), align (default "start"). */
|
|
457
|
-
export function validateStackProps(kind, props) {
|
|
458
|
-
const p = (props ?? {});
|
|
459
|
-
const padRes = requireSpacingIntNonNegative(kind, "pad", p.pad, 0);
|
|
460
|
-
if (!padRes.ok)
|
|
461
|
-
return padRes;
|
|
462
|
-
const gapRes = requireSpacingIntNonNegative(kind, "gap", p.gap, 0);
|
|
463
|
-
if (!gapRes.ok)
|
|
464
|
-
return gapRes;
|
|
465
|
-
const alignRaw = resolveResponsiveValue(p.items ?? p.align);
|
|
466
|
-
const alignValue = alignRaw === undefined ? "start" : normalizeStringToken(alignRaw);
|
|
467
|
-
if (alignValue !== "start" &&
|
|
468
|
-
alignValue !== "center" &&
|
|
469
|
-
alignValue !== "end" &&
|
|
470
|
-
alignValue !== "stretch") {
|
|
471
|
-
return invalid(`${kind}.align must be one of "start" | "center" | "end" | "stretch"`);
|
|
472
|
-
}
|
|
473
|
-
const justifySource = resolveResponsiveValue(p.justify);
|
|
474
|
-
const justifyRaw = justifySource === undefined ? "start" : normalizeStringToken(justifySource);
|
|
475
|
-
const justifyValue = justifyRaw === "space-between"
|
|
476
|
-
? "between"
|
|
477
|
-
: justifyRaw === "space-around"
|
|
478
|
-
? "around"
|
|
479
|
-
: justifyRaw === "space-evenly"
|
|
480
|
-
? "evenly"
|
|
481
|
-
: justifyRaw;
|
|
482
|
-
if (justifyValue !== "start" &&
|
|
483
|
-
justifyValue !== "end" &&
|
|
484
|
-
justifyValue !== "center" &&
|
|
485
|
-
justifyValue !== "between" &&
|
|
486
|
-
justifyValue !== "around" &&
|
|
487
|
-
justifyValue !== "evenly") {
|
|
488
|
-
return invalid(`${kind}.justify must be one of "start" | "end" | "center" | "between" | "around" | "evenly" (also accepts CSS aliases: "space-between" | "space-around" | "space-evenly")`);
|
|
489
|
-
}
|
|
490
|
-
const lcRes = validateLayoutConstraints(kind, p);
|
|
491
|
-
if (!lcRes.ok)
|
|
492
|
-
return lcRes;
|
|
493
|
-
const normalizedConstraints = { ...lcRes.value };
|
|
494
|
-
const overflowRes = requireOverflow(kind, "overflow", p.overflow, "visible");
|
|
495
|
-
if (!overflowRes.ok)
|
|
496
|
-
return overflowRes;
|
|
497
|
-
const scrollXRes = requireIntNonNegative(kind, "scrollX", p.scrollX, 0);
|
|
498
|
-
if (!scrollXRes.ok)
|
|
499
|
-
return scrollXRes;
|
|
500
|
-
const scrollYRes = requireIntNonNegative(kind, "scrollY", p.scrollY, 0);
|
|
501
|
-
if (!scrollYRes.ok)
|
|
502
|
-
return scrollYRes;
|
|
503
|
-
const spRes = validateSpacingProps(kind, p);
|
|
504
|
-
if (!spRes.ok)
|
|
505
|
-
return spRes;
|
|
506
|
-
return {
|
|
507
|
-
ok: true,
|
|
508
|
-
value: {
|
|
509
|
-
pad: padRes.value,
|
|
510
|
-
gap: gapRes.value,
|
|
511
|
-
align: alignValue,
|
|
512
|
-
justify: justifyValue,
|
|
513
|
-
overflow: overflowRes.value,
|
|
514
|
-
scrollX: scrollXRes.value,
|
|
515
|
-
scrollY: scrollYRes.value,
|
|
516
|
-
...spRes.value,
|
|
517
|
-
...normalizedConstraints,
|
|
518
|
-
},
|
|
519
|
-
};
|
|
520
|
-
}
|
|
521
|
-
/** Validate Box props: pad (default 0), border (default "single"). */
|
|
522
|
-
export function validateBoxProps(props) {
|
|
523
|
-
const p = (props ?? {});
|
|
524
|
-
const padRes = requireSpacingIntNonNegative("box", "pad", p.pad, 0);
|
|
525
|
-
if (!padRes.ok)
|
|
526
|
-
return padRes;
|
|
527
|
-
const gapRes = requireSpacingIntNonNegative("box", "gap", p.gap, 0);
|
|
528
|
-
if (!gapRes.ok)
|
|
529
|
-
return gapRes;
|
|
530
|
-
const borderValue = p.border === undefined ? "single" : normalizeStringToken(p.border);
|
|
531
|
-
if (borderValue !== "none" &&
|
|
532
|
-
borderValue !== "single" &&
|
|
533
|
-
borderValue !== "double" &&
|
|
534
|
-
borderValue !== "rounded" &&
|
|
535
|
-
borderValue !== "heavy" &&
|
|
536
|
-
borderValue !== "dashed" &&
|
|
537
|
-
borderValue !== "heavy-dashed") {
|
|
538
|
-
return invalid('box.border must be one of "none" | "single" | "double" | "rounded" | "heavy" | "dashed" | "heavy-dashed"');
|
|
539
|
-
}
|
|
540
|
-
const defaultSide = borderValue !== "none";
|
|
541
|
-
const topRes = requireBoolean("box", "borderTop", p.borderTop, defaultSide);
|
|
542
|
-
if (!topRes.ok)
|
|
543
|
-
return topRes;
|
|
544
|
-
const rightRes = requireBoolean("box", "borderRight", p.borderRight, defaultSide);
|
|
545
|
-
if (!rightRes.ok)
|
|
546
|
-
return rightRes;
|
|
547
|
-
const bottomRes = requireBoolean("box", "borderBottom", p.borderBottom, defaultSide);
|
|
548
|
-
if (!bottomRes.ok)
|
|
549
|
-
return bottomRes;
|
|
550
|
-
const leftRes = requireBoolean("box", "borderLeft", p.borderLeft, defaultSide);
|
|
551
|
-
if (!leftRes.ok)
|
|
552
|
-
return leftRes;
|
|
553
|
-
const lcRes = validateLayoutConstraints("box", p);
|
|
554
|
-
if (!lcRes.ok)
|
|
555
|
-
return lcRes;
|
|
556
|
-
const overflowRes = requireOverflow("box", "overflow", p.overflow, "visible");
|
|
557
|
-
if (!overflowRes.ok)
|
|
558
|
-
return overflowRes;
|
|
559
|
-
const scrollXRes = requireIntNonNegative("box", "scrollX", p.scrollX, 0);
|
|
560
|
-
if (!scrollXRes.ok)
|
|
561
|
-
return scrollXRes;
|
|
562
|
-
const scrollYRes = requireIntNonNegative("box", "scrollY", p.scrollY, 0);
|
|
563
|
-
if (!scrollYRes.ok)
|
|
564
|
-
return scrollYRes;
|
|
565
|
-
const spRes = validateSpacingProps("box", p);
|
|
566
|
-
if (!spRes.ok)
|
|
567
|
-
return spRes;
|
|
568
|
-
return {
|
|
569
|
-
ok: true,
|
|
570
|
-
value: {
|
|
571
|
-
pad: padRes.value,
|
|
572
|
-
gap: gapRes.value,
|
|
573
|
-
border: borderValue,
|
|
574
|
-
borderTop: topRes.value,
|
|
575
|
-
borderRight: rightRes.value,
|
|
576
|
-
borderBottom: bottomRes.value,
|
|
577
|
-
borderLeft: leftRes.value,
|
|
578
|
-
overflow: overflowRes.value,
|
|
579
|
-
scrollX: scrollXRes.value,
|
|
580
|
-
scrollY: scrollYRes.value,
|
|
581
|
-
...spRes.value,
|
|
582
|
-
...lcRes.value,
|
|
583
|
-
},
|
|
584
|
-
};
|
|
585
|
-
}
|
|
586
|
-
/** Validate Spacer props: size (default 1). */
|
|
587
|
-
export function validateSpacerProps(props) {
|
|
588
|
-
const p = (props ?? {});
|
|
589
|
-
const flexRes = requireFlex("spacer", p.flex);
|
|
590
|
-
if (!flexRes.ok)
|
|
591
|
-
return flexRes;
|
|
592
|
-
const flex = flexRes.value ?? 0;
|
|
593
|
-
const defaultSize = flex > 0 ? 0 : 1;
|
|
594
|
-
const sizeRes = requireIntNonNegative("spacer", "size", p.size, defaultSize);
|
|
595
|
-
if (!sizeRes.ok)
|
|
596
|
-
return sizeRes;
|
|
597
|
-
return { ok: true, value: { size: sizeRes.value, flex } };
|
|
598
|
-
}
|
|
599
|
-
/** Validate Button props: id (required), label (required), disabled (default false). */
|
|
600
|
-
export function validateButtonProps(props) {
|
|
601
|
-
const p = (props ?? {});
|
|
602
|
-
const idRes = requireNonEmptyString("button", "id", p.id);
|
|
603
|
-
if (!idRes.ok)
|
|
604
|
-
return idRes;
|
|
605
|
-
const labelRes = requireString("button", "label", p.label);
|
|
606
|
-
if (!labelRes.ok)
|
|
607
|
-
return labelRes;
|
|
608
|
-
const disabledRes = requireBoolean("button", "disabled", p.disabled, false);
|
|
609
|
-
if (!disabledRes.ok)
|
|
610
|
-
return disabledRes;
|
|
611
|
-
return {
|
|
612
|
-
ok: true,
|
|
613
|
-
value: { id: idRes.value, label: labelRes.value, disabled: disabledRes.value },
|
|
614
|
-
};
|
|
615
|
-
}
|
|
616
|
-
/** Validate Input props: id (required, non-empty), value (required), disabled (default false). */
|
|
617
|
-
export function validateInputProps(props) {
|
|
618
|
-
const p = (props ?? {});
|
|
619
|
-
const idRes = requireNonEmptyString("input", "id", p.id);
|
|
620
|
-
if (!idRes.ok)
|
|
621
|
-
return idRes;
|
|
622
|
-
const valueRes = requireString("input", "value", p.value);
|
|
623
|
-
if (!valueRes.ok)
|
|
624
|
-
return valueRes;
|
|
625
|
-
const disabledRes = requireBoolean("input", "disabled", p.disabled, false);
|
|
626
|
-
if (!disabledRes.ok)
|
|
627
|
-
return disabledRes;
|
|
628
|
-
const readOnlyRes = requireBoolean("input", "readOnly", p.readOnly, false);
|
|
629
|
-
if (!readOnlyRes.ok)
|
|
630
|
-
return readOnlyRes;
|
|
631
|
-
const multilineRes = requireBoolean("input", "multiline", p.multiline, false);
|
|
632
|
-
if (!multilineRes.ok)
|
|
633
|
-
return multilineRes;
|
|
634
|
-
const rowsRes = requireOptionalIntNonNegative("input", "rows", p.rows);
|
|
635
|
-
if (!rowsRes.ok)
|
|
636
|
-
return rowsRes;
|
|
637
|
-
const wordWrapRes = requireBoolean("input", "wordWrap", p.wordWrap, true);
|
|
638
|
-
if (!wordWrapRes.ok)
|
|
639
|
-
return wordWrapRes;
|
|
640
|
-
const multiline = multilineRes.value;
|
|
641
|
-
const rows = multiline ? Math.max(1, rowsRes.value ?? 3) : 1;
|
|
642
|
-
const wordWrap = multiline ? wordWrapRes.value : false;
|
|
643
|
-
return {
|
|
644
|
-
ok: true,
|
|
645
|
-
value: {
|
|
646
|
-
id: idRes.value,
|
|
647
|
-
value: valueRes.value,
|
|
648
|
-
disabled: disabledRes.value,
|
|
649
|
-
readOnly: readOnlyRes.value,
|
|
650
|
-
multiline,
|
|
651
|
-
rows,
|
|
652
|
-
wordWrap,
|
|
653
|
-
},
|
|
654
|
-
};
|
|
655
|
-
}
|
|
656
|
-
function validateInteractiveOptions(kind, options, requireNonEmpty) {
|
|
657
|
-
if (!Array.isArray(options)) {
|
|
658
|
-
return invalid(`${kind}.options must be an array`);
|
|
659
|
-
}
|
|
660
|
-
if (requireNonEmpty && options.length === 0) {
|
|
661
|
-
return invalid(`${kind}.options must be a non-empty array`);
|
|
662
|
-
}
|
|
663
|
-
const validated = [];
|
|
664
|
-
for (let i = 0; i < options.length; i++) {
|
|
665
|
-
const option = options[i];
|
|
666
|
-
if (typeof option !== "object" || option === null || Array.isArray(option)) {
|
|
667
|
-
return invalid(`${kind}.options[${i}] must be an object`);
|
|
668
|
-
}
|
|
669
|
-
const p = option;
|
|
670
|
-
const valueRes = requireString(`${kind}.options[${i}]`, "value", p.value);
|
|
671
|
-
if (!valueRes.ok)
|
|
672
|
-
return valueRes;
|
|
673
|
-
const labelRes = requireString(`${kind}.options[${i}]`, "label", p.label);
|
|
674
|
-
if (!labelRes.ok)
|
|
675
|
-
return labelRes;
|
|
676
|
-
const disabledRes = requireBoolean(`${kind}.options[${i}]`, "disabled", p.disabled, false);
|
|
677
|
-
if (!disabledRes.ok)
|
|
678
|
-
return disabledRes;
|
|
679
|
-
validated.push({ value: valueRes.value, label: labelRes.value, disabled: disabledRes.value });
|
|
680
|
-
}
|
|
681
|
-
return { ok: true, value: validated };
|
|
682
|
-
}
|
|
683
|
-
/** Validate Select props: id/value/options required; options may be empty. */
|
|
684
|
-
export function validateSelectProps(props) {
|
|
685
|
-
const p = (props ?? {});
|
|
686
|
-
const idRes = requireNonEmptyString("select", "id", p.id);
|
|
687
|
-
if (!idRes.ok)
|
|
688
|
-
return idRes;
|
|
689
|
-
const valueRes = requireString("select", "value", p.value);
|
|
690
|
-
if (!valueRes.ok)
|
|
691
|
-
return valueRes;
|
|
692
|
-
const optionsRes = validateInteractiveOptions("select", p.options, false);
|
|
693
|
-
if (!optionsRes.ok)
|
|
694
|
-
return optionsRes;
|
|
695
|
-
const disabledRes = requireBoolean("select", "disabled", p.disabled, false);
|
|
696
|
-
if (!disabledRes.ok)
|
|
697
|
-
return disabledRes;
|
|
698
|
-
const placeholderRes = requireOptionalString("select", "placeholder", p.placeholder);
|
|
699
|
-
if (!placeholderRes.ok)
|
|
700
|
-
return placeholderRes;
|
|
701
|
-
const hasEmptyValueOption = optionsRes.value.some((option) => option.value === "");
|
|
702
|
-
return {
|
|
703
|
-
ok: true,
|
|
704
|
-
value: {
|
|
705
|
-
id: idRes.value,
|
|
706
|
-
value: valueRes.value,
|
|
707
|
-
options: optionsRes.value,
|
|
708
|
-
disabled: disabledRes.value,
|
|
709
|
-
...(placeholderRes.value === undefined ? {} : { placeholder: placeholderRes.value }),
|
|
710
|
-
},
|
|
711
|
-
...(hasEmptyValueOption
|
|
712
|
-
? {
|
|
713
|
-
warnings: Object.freeze([
|
|
714
|
-
'select.options contains value "". Empty-string values are treated as unselected unless an explicit empty option is present in display logic.',
|
|
715
|
-
]),
|
|
716
|
-
}
|
|
717
|
-
: {}),
|
|
718
|
-
};
|
|
719
|
-
}
|
|
720
|
-
/** Validate Slider props: id/value required; finite range with min<=max and step>0. */
|
|
721
|
-
export function validateSliderProps(props) {
|
|
722
|
-
const p = (props ?? {});
|
|
723
|
-
const idRes = requireNonEmptyString("slider", "id", p.id);
|
|
724
|
-
if (!idRes.ok)
|
|
725
|
-
return idRes;
|
|
726
|
-
const valueRes = requireFiniteNumber("slider", "value", p.value);
|
|
727
|
-
if (!valueRes.ok)
|
|
728
|
-
return valueRes;
|
|
729
|
-
const minRes = requireOptionalFiniteNumber("slider", "min", p.min);
|
|
730
|
-
if (!minRes.ok)
|
|
731
|
-
return minRes;
|
|
732
|
-
const maxRes = requireOptionalFiniteNumber("slider", "max", p.max);
|
|
733
|
-
if (!maxRes.ok)
|
|
734
|
-
return maxRes;
|
|
735
|
-
const stepRes = requireOptionalFiniteNumber("slider", "step", p.step);
|
|
736
|
-
if (!stepRes.ok)
|
|
737
|
-
return stepRes;
|
|
738
|
-
const widthRes = requireOptionalIntNonNegative("slider", "width", p.width);
|
|
739
|
-
if (!widthRes.ok)
|
|
740
|
-
return widthRes;
|
|
741
|
-
const labelRes = requireOptionalString("slider", "label", p.label);
|
|
742
|
-
if (!labelRes.ok)
|
|
743
|
-
return labelRes;
|
|
744
|
-
const showValueRes = requireBoolean("slider", "showValue", p.showValue, true);
|
|
745
|
-
if (!showValueRes.ok)
|
|
746
|
-
return showValueRes;
|
|
747
|
-
const disabledRes = requireBoolean("slider", "disabled", p.disabled, false);
|
|
748
|
-
if (!disabledRes.ok)
|
|
749
|
-
return disabledRes;
|
|
750
|
-
const readOnlyRes = requireBoolean("slider", "readOnly", p.readOnly, false);
|
|
751
|
-
if (!readOnlyRes.ok)
|
|
752
|
-
return readOnlyRes;
|
|
753
|
-
const min = minRes.value ?? 0;
|
|
754
|
-
const max = maxRes.value ?? 100;
|
|
755
|
-
if (min > max) {
|
|
756
|
-
return invalid("slider.min must be <= slider.max");
|
|
757
|
-
}
|
|
758
|
-
const step = stepRes.value ?? 1;
|
|
759
|
-
if (step <= 0) {
|
|
760
|
-
return invalid("slider.step must be a finite number > 0");
|
|
761
|
-
}
|
|
762
|
-
return {
|
|
763
|
-
ok: true,
|
|
764
|
-
value: {
|
|
765
|
-
id: idRes.value,
|
|
766
|
-
value: valueRes.value,
|
|
767
|
-
min,
|
|
768
|
-
max,
|
|
769
|
-
step,
|
|
770
|
-
...(widthRes.value === undefined ? {} : { width: widthRes.value }),
|
|
771
|
-
...(labelRes.value === undefined ? {} : { label: labelRes.value }),
|
|
772
|
-
showValue: showValueRes.value,
|
|
773
|
-
disabled: disabledRes.value,
|
|
774
|
-
readOnly: readOnlyRes.value,
|
|
775
|
-
},
|
|
776
|
-
};
|
|
777
|
-
}
|
|
778
|
-
/** Validate Checkbox props: id and checked required. */
|
|
779
|
-
export function validateCheckboxProps(props) {
|
|
780
|
-
const p = (props ?? {});
|
|
781
|
-
const idRes = requireNonEmptyString("checkbox", "id", p.id);
|
|
782
|
-
if (!idRes.ok)
|
|
783
|
-
return idRes;
|
|
784
|
-
if (typeof p.checked !== "boolean") {
|
|
785
|
-
return invalid("checkbox.checked must be a boolean");
|
|
786
|
-
}
|
|
787
|
-
const labelRes = requireOptionalString("checkbox", "label", p.label);
|
|
788
|
-
if (!labelRes.ok)
|
|
789
|
-
return labelRes;
|
|
790
|
-
const disabledRes = requireBoolean("checkbox", "disabled", p.disabled, false);
|
|
791
|
-
if (!disabledRes.ok)
|
|
792
|
-
return disabledRes;
|
|
793
|
-
return {
|
|
794
|
-
ok: true,
|
|
795
|
-
value: {
|
|
796
|
-
id: idRes.value,
|
|
797
|
-
checked: p.checked,
|
|
798
|
-
...(labelRes.value === undefined ? {} : { label: labelRes.value }),
|
|
799
|
-
disabled: disabledRes.value,
|
|
800
|
-
},
|
|
801
|
-
};
|
|
802
|
-
}
|
|
803
|
-
/** Validate RadioGroup props: id/value/options required; options must be non-empty. */
|
|
804
|
-
export function validateRadioGroupProps(props) {
|
|
805
|
-
const p = (props ?? {});
|
|
806
|
-
const idRes = requireNonEmptyString("radioGroup", "id", p.id);
|
|
807
|
-
if (!idRes.ok)
|
|
808
|
-
return idRes;
|
|
809
|
-
const valueRes = requireString("radioGroup", "value", p.value);
|
|
810
|
-
if (!valueRes.ok)
|
|
811
|
-
return valueRes;
|
|
812
|
-
const optionsRes = validateInteractiveOptions("radioGroup", p.options, true);
|
|
813
|
-
if (!optionsRes.ok)
|
|
814
|
-
return optionsRes;
|
|
815
|
-
const directionValue = p.direction === undefined ? "vertical" : normalizeStringToken(p.direction);
|
|
816
|
-
if (directionValue !== "horizontal" && directionValue !== "vertical") {
|
|
817
|
-
return invalid('radioGroup.direction must be one of "horizontal" | "vertical"');
|
|
818
|
-
}
|
|
819
|
-
const disabledRes = requireBoolean("radioGroup", "disabled", p.disabled, false);
|
|
820
|
-
if (!disabledRes.ok)
|
|
821
|
-
return disabledRes;
|
|
822
|
-
return {
|
|
823
|
-
ok: true,
|
|
824
|
-
value: {
|
|
825
|
-
id: idRes.value,
|
|
826
|
-
value: valueRes.value,
|
|
827
|
-
options: optionsRes.value,
|
|
828
|
-
direction: directionValue,
|
|
829
|
-
disabled: disabledRes.value,
|
|
830
|
-
},
|
|
831
|
-
};
|
|
832
|
-
}
|
|
833
|
-
/** Validate Text props (`maxWidth` affects measurement; style/overflow are renderer concerns). */
|
|
834
|
-
export function validateTextProps(props) {
|
|
835
|
-
const p = (props ?? {});
|
|
836
|
-
const maxWidthRes = requireOptionalTextMaxWidth("text", "maxWidth", p.maxWidth);
|
|
837
|
-
if (!maxWidthRes.ok)
|
|
838
|
-
return maxWidthRes;
|
|
839
|
-
const wrapRes = requireBoolean("text", "wrap", p.wrap, false);
|
|
840
|
-
if (!wrapRes.ok)
|
|
841
|
-
return wrapRes;
|
|
842
|
-
return {
|
|
843
|
-
ok: true,
|
|
844
|
-
value: {
|
|
845
|
-
...(maxWidthRes.value === undefined ? {} : { maxWidth: maxWidthRes.value }),
|
|
846
|
-
wrap: wrapRes.value,
|
|
847
|
-
},
|
|
848
|
-
};
|
|
849
|
-
}
|
|
18
|
+
export { validateBoxProps, validateButtonProps, validateCheckboxProps, validateInputProps, validateRadioGroupProps, validateSelectProps, validateSliderProps, validateSpacerProps, validateStackProps, validateTextProps, } from "./validate/interactive.js";
|
|
850
19
|
//# sourceMappingURL=validateProps.js.map
|