@flanksource/clicky-ui 0.3.41 → 0.3.42
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/ai.cjs +4 -0
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +4 -0
- package/dist/ai.js.map +1 -1
- package/dist/comments/CommentCard.cjs +3 -1
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +4 -2
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentCardParts.cjs +16 -0
- package/dist/comments/CommentCardParts.cjs.map +1 -1
- package/dist/comments/CommentCardParts.d.ts +4 -1
- package/dist/comments/CommentCardParts.d.ts.map +1 -1
- package/dist/comments/CommentCardParts.js +16 -0
- package/dist/comments/CommentCardParts.js.map +1 -1
- package/dist/comments/comment-types.cjs.map +1 -1
- package/dist/comments/comment-types.d.ts +4 -0
- package/dist/comments/comment-types.d.ts.map +1 -1
- package/dist/comments/comment-types.js.map +1 -1
- package/dist/components/Combobox.cjs +54 -8
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +56 -10
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxMenu.cjs +139 -113
- package/dist/components/ComboboxMenu.cjs.map +1 -1
- package/dist/components/ComboboxMenu.d.ts +3 -1
- package/dist/components/ComboboxMenu.d.ts.map +1 -1
- package/dist/components/ComboboxMenu.js +139 -113
- package/dist/components/ComboboxMenu.js.map +1 -1
- package/dist/components/ComboboxMenuTrigger.cjs +87 -0
- package/dist/components/ComboboxMenuTrigger.cjs.map +1 -0
- package/dist/components/ComboboxMenuTrigger.d.ts +23 -0
- package/dist/components/ComboboxMenuTrigger.d.ts.map +1 -0
- package/dist/components/ComboboxMenuTrigger.js +87 -0
- package/dist/components/ComboboxMenuTrigger.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +30 -7
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +30 -7
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/SegmentedControl.cjs +20 -3
- package/dist/components/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl.d.ts +11 -0
- package/dist/components/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl.js +21 -4
- package/dist/components/SegmentedControl.js.map +1 -1
- package/dist/components/combobox-types.d.ts +8 -0
- package/dist/components/combobox-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-debug-badge.cjs +108 -0
- package/dist/components/json-schema-form-debug-badge.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-badge.d.ts +10 -0
- package/dist/components/json-schema-form-debug-badge.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-badge.js +108 -0
- package/dist/components/json-schema-form-debug-badge.js.map +1 -0
- package/dist/components/json-schema-form-debug-glyph-map.cjs +129 -0
- package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-glyph-map.d.ts +20 -0
- package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-glyph-map.js +129 -0
- package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -0
- package/dist/components/json-schema-form-debug-glyph.cjs +13 -0
- package/dist/components/json-schema-form-debug-glyph.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-glyph.d.ts +6 -0
- package/dist/components/json-schema-form-debug-glyph.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-glyph.js +13 -0
- package/dist/components/json-schema-form-debug-glyph.js.map +1 -0
- package/dist/components/json-schema-form-debug-groups.cjs +56 -0
- package/dist/components/json-schema-form-debug-groups.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-groups.d.ts +8 -0
- package/dist/components/json-schema-form-debug-groups.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-groups.js +56 -0
- package/dist/components/json-schema-form-debug-groups.js.map +1 -0
- package/dist/components/json-schema-form-debug-keywords.cjs +159 -0
- package/dist/components/json-schema-form-debug-keywords.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-keywords.d.ts +6 -0
- package/dist/components/json-schema-form-debug-keywords.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-keywords.js +159 -0
- package/dist/components/json-schema-form-debug-keywords.js.map +1 -0
- package/dist/components/json-schema-form-debug-listeners.cjs +102 -0
- package/dist/components/json-schema-form-debug-listeners.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-listeners.d.ts +6 -0
- package/dist/components/json-schema-form-debug-listeners.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-listeners.js +102 -0
- package/dist/components/json-schema-form-debug-listeners.js.map +1 -0
- package/dist/components/json-schema-form-debug.cjs +31 -0
- package/dist/components/json-schema-form-debug.cjs.map +1 -0
- package/dist/components/json-schema-form-debug.d.ts +11 -0
- package/dist/components/json-schema-form-debug.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug.js +31 -0
- package/dist/components/json-schema-form-debug.js.map +1 -0
- package/dist/components/json-schema-form-enum-choice.cjs +114 -0
- package/dist/components/json-schema-form-enum-choice.cjs.map +1 -0
- package/dist/components/json-schema-form-enum-choice.d.ts +14 -0
- package/dist/components/json-schema-form-enum-choice.d.ts.map +1 -0
- package/dist/components/json-schema-form-enum-choice.js +114 -0
- package/dist/components/json-schema-form-enum-choice.js.map +1 -0
- package/dist/components/json-schema-form-fields.cjs +3 -93
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +1 -91
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-listeners.cjs +7 -1
- package/dist/components/json-schema-form-listeners.cjs.map +1 -1
- package/dist/components/json-schema-form-listeners.d.ts.map +1 -1
- package/dist/components/json-schema-form-listeners.js +7 -1
- package/dist/components/json-schema-form-listeners.js.map +1 -1
- package/dist/components/json-schema-form-preferences.cjs +1 -0
- package/dist/components/json-schema-form-preferences.cjs.map +1 -1
- package/dist/components/json-schema-form-preferences.d.ts +1 -0
- package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
- package/dist/components/json-schema-form-preferences.js +1 -0
- package/dist/components/json-schema-form-preferences.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +21 -5
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +21 -5
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-runtime-types.d.ts +1 -0
- package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-tone.cjs +12 -0
- package/dist/components/json-schema-form-tone.cjs.map +1 -1
- package/dist/components/json-schema-form-tone.js +12 -0
- package/dist/components/json-schema-form-tone.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +1 -0
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/data/GraphDiagram.cjs +125 -138
- package/dist/data/GraphDiagram.cjs.map +1 -1
- package/dist/data/GraphDiagram.d.ts +30 -23
- package/dist/data/GraphDiagram.d.ts.map +1 -1
- package/dist/data/GraphDiagram.js +128 -141
- package/dist/data/GraphDiagram.js.map +1 -1
- package/dist/data/GraphDiagramEdges.cjs +208 -0
- package/dist/data/GraphDiagramEdges.cjs.map +1 -0
- package/dist/data/GraphDiagramEdges.d.ts +40 -0
- package/dist/data/GraphDiagramEdges.d.ts.map +1 -0
- package/dist/data/GraphDiagramEdges.js +208 -0
- package/dist/data/GraphDiagramEdges.js.map +1 -0
- package/dist/data/GraphDiagramNodes.cjs +142 -0
- package/dist/data/GraphDiagramNodes.cjs.map +1 -0
- package/dist/data/GraphDiagramNodes.d.ts +22 -0
- package/dist/data/GraphDiagramNodes.d.ts.map +1 -0
- package/dist/data/GraphDiagramNodes.js +142 -0
- package/dist/data/GraphDiagramNodes.js.map +1 -0
- package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs +8 -3
- package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/RuntimeRows.js +8 -3
- package/dist/data/ai/PromptRunEditor/RuntimeRows.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +37 -43
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +3 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +38 -44
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +16 -5
- package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.js +17 -6
- package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.cjs +12 -0
- package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.d.ts +11 -2
- package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.js +12 -0
- package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.cjs +25 -1
- package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.js +26 -2
- package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
- package/dist/data/ai/SessionInspector.summary.cjs +9 -3
- package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.summary.js +9 -3
- package/dist/data/ai/SessionInspector.summary.js.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.cjs +4 -0
- package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.js +4 -0
- package/dist/data/ai/SessionInspector.transcript.js.map +1 -1
- package/dist/data/ai/SessionViewer.approval-body.cjs +146 -0
- package/dist/data/ai/SessionViewer.approval-body.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.approval-body.d.ts +11 -0
- package/dist/data/ai/SessionViewer.approval-body.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.approval-body.js +146 -0
- package/dist/data/ai/SessionViewer.approval-body.js.map +1 -0
- package/dist/data/ai/SessionViewer.approval-forms.cjs +150 -0
- package/dist/data/ai/SessionViewer.approval-forms.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.approval-forms.d.ts +23 -0
- package/dist/data/ai/SessionViewer.approval-forms.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.approval-forms.js +150 -0
- package/dist/data/ai/SessionViewer.approval-forms.js.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +57 -20
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +13 -3
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.decision-controls.cjs +313 -0
- package/dist/data/ai/SessionViewer.decision-controls.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.decision-controls.d.ts +43 -0
- package/dist/data/ai/SessionViewer.decision-controls.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.decision-controls.js +313 -0
- package/dist/data/ai/SessionViewer.decision-controls.js.map +1 -0
- package/dist/data/ai/SessionViewer.decision.cjs +21 -0
- package/dist/data/ai/SessionViewer.decision.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.decision.d.ts +12 -0
- package/dist/data/ai/SessionViewer.decision.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.decision.js +21 -0
- package/dist/data/ai/SessionViewer.decision.js.map +1 -0
- package/dist/data/ai/SessionViewer.input.cjs +14 -0
- package/dist/data/ai/SessionViewer.input.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.input.d.ts +5 -0
- package/dist/data/ai/SessionViewer.input.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.input.js +14 -0
- package/dist/data/ai/SessionViewer.input.js.map +1 -1
- package/dist/data/ai/SessionViewer.js +58 -21
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +4 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +6 -3
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +2 -1
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +6 -3
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.cjs +29 -237
- package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.js +27 -235
- package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +4 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.cjs +8 -2
- package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
- package/dist/data/ai/SessionViewerMenu.d.ts +4 -1
- package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.js +8 -2
- package/dist/data/ai/SessionViewerMenu.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +28 -17
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +10 -2
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +29 -18
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +9 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +9 -2
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js +9 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +1 -1
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +8 -2
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +14 -6
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +14 -6
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/approval-request.cjs +75 -0
- package/dist/data/ai/approval-request.cjs.map +1 -0
- package/dist/data/ai/approval-request.d.ts +155 -0
- package/dist/data/ai/approval-request.d.ts.map +1 -0
- package/dist/data/ai/approval-request.js +75 -0
- package/dist/data/ai/approval-request.js.map +1 -0
- package/dist/data/ai/index.d.ts +3 -0
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs +125 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs.map +1 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts +11 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts.map +1 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js +125 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js.map +1 -0
- package/dist/data/ai/runtime-preset-menu/index.d.ts +3 -0
- package/dist/data/ai/runtime-preset-menu/index.d.ts.map +1 -0
- package/dist/data/ai/runtime-preset-menu/model.cjs +73 -0
- package/dist/data/ai/runtime-preset-menu/model.cjs.map +1 -0
- package/dist/data/ai/runtime-preset-menu/model.d.ts +13 -0
- package/dist/data/ai/runtime-preset-menu/model.d.ts.map +1 -0
- package/dist/data/ai/runtime-preset-menu/model.js +73 -0
- package/dist/data/ai/runtime-preset-menu/model.js.map +1 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs +149 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs.map +1 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts +15 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts.map +1 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js +149 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js.map +1 -0
- package/dist/data/ai/runtime-spec-fields.cjs +166 -0
- package/dist/data/ai/runtime-spec-fields.cjs.map +1 -0
- package/dist/data/ai/runtime-spec-fields.d.ts +13 -0
- package/dist/data/ai/runtime-spec-fields.d.ts.map +1 -0
- package/dist/data/ai/runtime-spec-fields.js +166 -0
- package/dist/data/ai/runtime-spec-fields.js.map +1 -0
- package/dist/data/ai/session-categories.cjs +4 -0
- package/dist/data/ai/session-categories.cjs.map +1 -1
- package/dist/data/ai/session-categories.d.ts +1 -0
- package/dist/data/ai/session-categories.d.ts.map +1 -1
- package/dist/data/ai/session-categories.js +4 -0
- package/dist/data/ai/session-categories.js.map +1 -1
- package/dist/data/ai/use-session-scroll.cjs +49 -21
- package/dist/data/ai/use-session-scroll.cjs.map +1 -1
- package/dist/data/ai/use-session-scroll.d.ts +2 -0
- package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
- package/dist/data/ai/use-session-scroll.js +49 -21
- package/dist/data/ai/use-session-scroll.js.map +1 -1
- package/dist/data/chat/Chat.runtime.cjs +1 -1
- package/dist/data/chat/Chat.runtime.cjs.map +1 -1
- package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
- package/dist/data/chat/Chat.runtime.js +1 -1
- package/dist/data/chat/Chat.runtime.js.map +1 -1
- package/dist/data/graph-columns-layout.cjs +216 -0
- package/dist/data/graph-columns-layout.cjs.map +1 -0
- package/dist/data/graph-columns-layout.d.ts +56 -0
- package/dist/data/graph-columns-layout.d.ts.map +1 -0
- package/dist/data/graph-columns-layout.js +216 -0
- package/dist/data/graph-columns-layout.js.map +1 -0
- package/dist/data/graph-diagram-model.cjs +73 -0
- package/dist/data/graph-diagram-model.cjs.map +1 -0
- package/dist/data/graph-diagram-model.d.ts +90 -0
- package/dist/data/graph-diagram-model.d.ts.map +1 -0
- package/dist/data/graph-diagram-model.js +73 -0
- package/dist/data/graph-diagram-model.js.map +1 -0
- package/dist/data/graph-edge-routing.cjs +235 -0
- package/dist/data/graph-edge-routing.cjs.map +1 -0
- package/dist/data/graph-edge-routing.d.ts +73 -0
- package/dist/data/graph-edge-routing.d.ts.map +1 -0
- package/dist/data/graph-edge-routing.js +235 -0
- package/dist/data/graph-edge-routing.js.map +1 -0
- package/dist/data/graph-layout.cjs +0 -82
- package/dist/data/graph-layout.cjs.map +1 -1
- package/dist/data/graph-layout.d.ts +1 -28
- package/dist/data/graph-layout.d.ts.map +1 -1
- package/dist/data/graph-layout.js +1 -83
- package/dist/data/graph-layout.js.map +1 -1
- package/dist/data/har/HarPanel.cjs +129 -33
- package/dist/data/har/HarPanel.cjs.map +1 -1
- package/dist/data/har/HarPanel.d.ts +13 -1
- package/dist/data/har/HarPanel.d.ts.map +1 -1
- package/dist/data/har/HarPanel.js +130 -34
- package/dist/data/har/HarPanel.js.map +1 -1
- package/dist/data/har/fixtures.d.ts +12 -0
- package/dist/data/har/fixtures.d.ts.map +1 -1
- package/dist/data/har/types.d.ts +12 -0
- package/dist/data/har/types.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.cjs +67 -84
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts +4 -5
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.fields.cjs +170 -0
- package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBar.fields.d.ts +16 -0
- package/dist/data/runtime/RuntimeBar.fields.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBar.fields.js +170 -0
- package/dist/data/runtime/RuntimeBar.fields.js.map +1 -0
- package/dist/data/runtime/RuntimeBar.js +70 -87
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.selection.cjs +56 -0
- package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBar.selection.d.ts +20 -0
- package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBar.selection.js +56 -0
- package/dist/data/runtime/RuntimeBar.selection.js.map +1 -0
- package/dist/data/runtime/RuntimeBarActions.cjs +10 -6
- package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.d.ts +8 -1
- package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.js +10 -6
- package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
- package/dist/data/runtime/RuntimeBarIdentity.cjs +166 -0
- package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBarIdentity.d.ts +25 -0
- package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBarIdentity.js +166 -0
- package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -0
- package/dist/data/runtime/RuntimeBarLayout.cjs +95 -0
- package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBarLayout.d.ts +9 -0
- package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBarLayout.js +95 -0
- package/dist/data/runtime/RuntimeBarLayout.js.map +1 -0
- package/dist/data/runtime/RuntimeBarSegment.cjs +25 -14
- package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.d.ts +4 -0
- package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.js +25 -14
- package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
- package/dist/data/runtime/RuntimeLimitInput.cjs +41 -0
- package/dist/data/runtime/RuntimeLimitInput.cjs.map +1 -0
- package/dist/data/runtime/RuntimeLimitInput.d.ts +9 -0
- package/dist/data/runtime/RuntimeLimitInput.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeLimitInput.js +41 -0
- package/dist/data/runtime/RuntimeLimitInput.js.map +1 -0
- package/dist/data/runtime/use-runtime-bar-overflow.cjs +70 -0
- package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -0
- package/dist/data/runtime/use-runtime-bar-overflow.d.ts +13 -0
- package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -0
- package/dist/data/runtime/use-runtime-bar-overflow.js +70 -0
- package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -0
- package/dist/data/use-edge-focus.cjs +20 -0
- package/dist/data/use-edge-focus.cjs.map +1 -0
- package/dist/data/use-edge-focus.d.ts +23 -0
- package/dist/data/use-edge-focus.d.ts.map +1 -0
- package/dist/data/use-edge-focus.js +20 -0
- package/dist/data/use-edge-focus.js.map +1 -0
- package/dist/data/use-pan-zoom.cjs +159 -0
- package/dist/data/use-pan-zoom.cjs.map +1 -0
- package/dist/data/use-pan-zoom.d.ts +79 -0
- package/dist/data/use-pan-zoom.d.ts.map +1 -0
- package/dist/data/use-pan-zoom.js +159 -0
- package/dist/data/use-pan-zoom.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +5 -1
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +4 -3
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +6 -2
- package/dist/data.js.map +1 -1
- package/dist/index.cjs +5 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/overlay/DropdownMenu.cjs +1 -0
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.d.ts +4 -0
- package/dist/overlay/DropdownMenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenu.js +1 -0
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.cjs +31 -15
- package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.js +31 -15
- package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +3 -1
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +3 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +3 -1
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/useOperationPages.cjs +6 -1
- package/dist/rpc/useOperationPages.cjs.map +1 -1
- package/dist/rpc/useOperationPages.d.ts +3 -1
- package/dist/rpc/useOperationPages.d.ts.map +1 -1
- package/dist/rpc/useOperationPages.js +6 -1
- package/dist/rpc/useOperationPages.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/schemas/json-schema-form.schema.json +5 -0
- package/dist/data/runtime/RuntimeBarCombo.cjs +0 -423
- package/dist/data/runtime/RuntimeBarCombo.cjs.map +0 -1
- package/dist/data/runtime/RuntimeBarCombo.d.ts +0 -33
- package/dist/data/runtime/RuntimeBarCombo.d.ts.map +0 -1
- package/dist/data/runtime/RuntimeBarCombo.js +0 -423
- package/dist/data/runtime/RuntimeBarCombo.js.map +0 -1
- package/dist/data/runtime/RuntimeBarLimits.cjs +0 -262
- package/dist/data/runtime/RuntimeBarLimits.cjs.map +0 -1
- package/dist/data/runtime/RuntimeBarLimits.d.ts +0 -17
- package/dist/data/runtime/RuntimeBarLimits.d.ts.map +0 -1
- package/dist/data/runtime/RuntimeBarLimits.js +0 -262
- package/dist/data/runtime/RuntimeBarLimits.js.map +0 -1
- package/dist/data/runtime/RuntimeBarSegments.cjs +0 -346
- package/dist/data/runtime/RuntimeBarSegments.cjs.map +0 -1
- package/dist/data/runtime/RuntimeBarSegments.d.ts +0 -37
- package/dist/data/runtime/RuntimeBarSegments.d.ts.map +0 -1
- package/dist/data/runtime/RuntimeBarSegments.js +0 -346
- package/dist/data/runtime/RuntimeBarSegments.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.js","sources":["../../src/components/SegmentedControl.tsx"],"sourcesContent":["import { useRef, type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"../data/Icon\";\n\nexport type SegmentedSize = \"sm\" | \"md\" | \"lg\";\n\nexport type SegmentedOption<T extends string = string> = {\n /** Stable value emitted on selection. */\n id: T;\n /** Visible label. */\n label: ReactNode;\n /** Optional leading icon (imported `Ui*` component or runtime name). */\n icon?: string | StaticIconComponent;\n /** Classes applied to the leading icon. */\n iconClassName?: string;\n /** Classes applied to this segment only while selected. */\n activeClassName?: string;\n /** Optional secondary line, used by larger card-like segmented controls. */\n description?: ReactNode;\n /** Native title attribute. */\n title?: string;\n /** Disable this segment. */\n disabled?: boolean;\n};\n\nexport type SegmentedControlProps<T extends string = string> = {\n /** Currently selected option id. */\n value: T;\n /** Mutually-exclusive options rendered left to right. */\n options: SegmentedOption<T>[];\n /** Called with the newly selected id. */\n onChange: (id: T) => void;\n /** Control size. `md` (default) matches form controls; `sm` is denser and `lg` is card-like. */\n size?: SegmentedSize;\n /** Allows segments to wrap instead of overflowing horizontally. */\n wrap?: boolean;\n /** Accessible group label. */\n \"aria-label\"?: string;\n /** Classes applied to the track. */\n className?: string;\n};\n\nconst SIZE_CLASSES: Record<SegmentedSize, string> = {\n sm: \"text-xs px-density-2 py-density-1 gap-1\",\n md: \"h-full px-control-px text-sm gap-1.5\",\n lg: \"min-h-[4.25rem] min-w-44 flex-1 px-density-3 py-density-3 gap-density-2 text-sm\",\n};\n\n/**\n * Single-select toggle group (the Gavel `Segmented` \"Mine / All / Bots\"\n * pattern). A muted track holds mutually-exclusive segments; the active\n * segment lifts onto the card surface. Built on clicky tokens so it inherits\n * dark-mode and density. Use for small, flat choice sets — reach for `Select`\n * when the option count grows.\n */\nexport function SegmentedControl<T extends string = string>({\n value,\n options,\n onChange,\n size = \"md\",\n wrap = false,\n className,\n \"aria-label\": ariaLabel,\n}: SegmentedControlProps<T>) {\n const btnRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n const move = (from: number, dir: 1 | -1) => {\n const n = options.length;\n let i = from;\n for (let step = 0; step < n; step++) {\n i = (i + dir + n) % n;\n const opt = options[i];\n if (opt && !opt.disabled) {\n onChange(opt.id);\n btnRefs.current[i]?.focus();\n return;\n }\n }\n };\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(\n \"inline-flex items-center rounded-md bg-muted p-0.5\",\n size === \"md\" && \"h-control-h\",\n size === \"lg\" && \"gap-density-2 bg-transparent p-0\",\n wrap && \"flex-wrap\",\n className,\n )}\n >\n {options.map((option, index) => {\n const active = option.id === value;\n return (\n <button\n key={option.id}\n ref={(el) => {\n btnRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"radio\"\n aria-checked={active}\n title={option.title}\n disabled={option.disabled}\n tabIndex={active ? 0 : -1}\n onClick={() => !option.disabled && onChange(option.id)}\n onKeyDown={(e) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n move(index, 1);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n move(index, -1);\n }\n }}\n className={cn(\n \"inline-flex items-center rounded-[5px] border border-transparent font-medium transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n size === \"lg\" && \"rounded-lg text-left\",\n option.description ? \"whitespace-normal\" : \"whitespace-nowrap\",\n SIZE_CLASSES[size],\n active\n ? size === \"lg\"\n ? \"border-primary/70 bg-primary/10 text-foreground shadow-sm ring-1 ring-primary/25\"\n : \"border-border bg-card text-foreground shadow-sm\"\n : size === \"lg\"\n ? \"border-border bg-card text-muted-foreground hover:border-muted-foreground/40 hover:bg-card hover:text-foreground hover:shadow-sm\"\n : \"text-muted-foreground hover:border-border hover:bg-background/60 hover:text-foreground\",\n active && option.activeClassName,\n )}\n >\n {option.icon && (\n <Icon\n {...(typeof option.icon === \"string\"\n ? { name: option.icon }\n : { icon: option.icon })}\n className={cn(\n size === \"lg\" ? \"size-4 shrink-0\" : \"size-3.5 shrink-0\",\n size === \"lg\" &&\n (active ? \"text-primary\" : \"text-muted-foreground\"),\n option.iconClassName,\n )}\n />\n )}\n <span\n className={cn(\n \"min-w-0\",\n size === \"lg\" &&\n \"flex flex-col items-start text-left leading-tight\",\n )}\n >\n <span className=\"min-w-0 truncate\">{option.label}</span>\n {option.description && (\n <span\n className={cn(\n \"mt-0.5 max-w-56 whitespace-normal break-words text-[11px] font-normal leading-snug\",\n active\n ? \"text-muted-foreground\"\n : \"text-muted-foreground/80\",\n )}\n >\n {option.description}\n </span>\n )}\n </span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SegmentedControl.js","sources":["../../src/components/SegmentedControl.tsx"],"sourcesContent":["import { useId, useRef, type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"../data/Icon\";\n\nexport type SegmentedSize = \"sm\" | \"md\" | \"lg\";\n\nexport type SegmentedOption<T extends string = string> = {\n /** Stable value emitted on selection. */\n id: T;\n /** Visible label. */\n label: ReactNode;\n /** Optional leading icon (imported `Ui*` component or runtime name). */\n icon?: string | StaticIconComponent;\n /** Classes applied to the leading icon. */\n iconClassName?: string;\n /** Classes applied to this segment only while selected. */\n activeClassName?: string;\n /** Optional secondary line, used by larger card-like segmented controls. */\n description?: ReactNode;\n /** Native title attribute. */\n title?: string;\n /**\n * Short muted tag rendered after the label (e.g. \"default\"). It is exposed to\n * assistive tech as the segment's accessible description, not its name.\n */\n marker?: string;\n /**\n * Render this segment as the implied choice while no option is selected (e.g.\n * a schema default the value has not been set to). It is outlined, not\n * filled, and stays `aria-checked=false` because nothing is selected.\n */\n implied?: boolean;\n /** Disable this segment. */\n disabled?: boolean;\n};\n\nexport type SegmentedControlProps<T extends string = string> = {\n /** Currently selected option id. */\n value: T;\n /** Mutually-exclusive options rendered left to right. */\n options: SegmentedOption<T>[];\n /** Called with the newly selected id. */\n onChange: (id: T) => void;\n /** Control size. `md` (default) matches form controls; `sm` is denser and `lg` is card-like. */\n size?: SegmentedSize;\n /** Allows segments to wrap instead of overflowing horizontally. */\n wrap?: boolean;\n /** Accessible group label. */\n \"aria-label\"?: string;\n /** Classes applied to the track. */\n className?: string;\n};\n\nconst SIZE_CLASSES: Record<SegmentedSize, string> = {\n sm: \"text-xs px-density-2 py-density-1 gap-1\",\n md: \"h-full px-control-px text-sm gap-1.5\",\n lg: \"min-h-[4.25rem] min-w-44 flex-1 px-density-3 py-density-3 gap-density-2 text-sm\",\n};\n\n/**\n * Single-select toggle group (the Gavel `Segmented` \"Mine / All / Bots\"\n * pattern). A muted track holds mutually-exclusive segments; the active\n * segment lifts onto the card surface. Built on clicky tokens so it inherits\n * dark-mode and density. Use for small, flat choice sets — reach for `Select`\n * when the option count grows.\n */\nexport function SegmentedControl<T extends string = string>({\n value,\n options,\n onChange,\n size = \"md\",\n wrap = false,\n className,\n \"aria-label\": ariaLabel,\n}: SegmentedControlProps<T>) {\n const btnRefs = useRef<(HTMLButtonElement | null)[]>([]);\n const markerIdBase = useId();\n const hasSelection = options.some((option) => option.id === value);\n\n const move = (from: number, dir: 1 | -1) => {\n const n = options.length;\n let i = from;\n for (let step = 0; step < n; step++) {\n i = (i + dir + n) % n;\n const opt = options[i];\n if (opt && !opt.disabled) {\n onChange(opt.id);\n btnRefs.current[i]?.focus();\n return;\n }\n }\n };\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n className={cn(\n \"inline-flex items-center rounded-md bg-muted p-0.5\",\n size === \"md\" && \"h-control-h\",\n size === \"lg\" && \"gap-density-2 bg-transparent p-0\",\n wrap && \"flex-wrap\",\n className,\n )}\n >\n {options.map((option, index) => {\n const active = option.id === value;\n const implied = !hasSelection && option.implied === true;\n const markerId = option.marker ? `${markerIdBase}-marker-${index}` : undefined;\n return (\n <button\n key={option.id}\n ref={(el) => {\n btnRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"radio\"\n aria-checked={active}\n aria-describedby={markerId}\n data-implied={implied ? \"true\" : undefined}\n title={option.title}\n disabled={option.disabled}\n tabIndex={active || implied ? 0 : -1}\n onClick={() => !option.disabled && onChange(option.id)}\n onKeyDown={(e) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n move(index, 1);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n move(index, -1);\n }\n }}\n className={cn(\n \"inline-flex items-center rounded-[5px] border border-transparent font-medium transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n size === \"lg\" && \"rounded-lg text-left\",\n option.description ? \"whitespace-normal\" : \"whitespace-nowrap\",\n SIZE_CLASSES[size],\n active\n ? size === \"lg\"\n ? \"border-primary/70 bg-primary/10 text-foreground shadow-sm ring-1 ring-primary/25\"\n : \"border-border bg-card text-foreground shadow-sm\"\n : implied\n ? size === \"lg\"\n ? \"border-dashed border-primary/60 bg-card text-foreground hover:shadow-sm\"\n : \"border-dashed border-primary/60 text-foreground hover:bg-background/60\"\n : size === \"lg\"\n ? \"border-border bg-card text-muted-foreground hover:border-muted-foreground/40 hover:bg-card hover:text-foreground hover:shadow-sm\"\n : \"text-muted-foreground hover:border-border hover:bg-background/60 hover:text-foreground\",\n active && option.activeClassName,\n )}\n >\n {option.icon && (\n <Icon\n {...(typeof option.icon === \"string\"\n ? { name: option.icon }\n : { icon: option.icon })}\n className={cn(\n size === \"lg\" ? \"size-4 shrink-0\" : \"size-3.5 shrink-0\",\n size === \"lg\" &&\n (active ? \"text-primary\" : \"text-muted-foreground\"),\n option.iconClassName,\n )}\n />\n )}\n <span\n className={cn(\n \"min-w-0\",\n size === \"lg\" &&\n \"flex flex-col items-start text-left leading-tight\",\n )}\n >\n {option.marker ? (\n <span className=\"inline-flex min-w-0 max-w-full items-baseline gap-1\">\n <span className=\"min-w-0 truncate\">{option.label}</span>\n <span\n id={markerId}\n aria-hidden=\"true\"\n className=\"shrink-0 text-[11px] font-normal opacity-70\"\n >\n {option.marker}\n </span>\n </span>\n ) : (\n <span className=\"min-w-0 truncate\">{option.label}</span>\n )}\n {option.description && (\n <span\n className={cn(\n \"mt-0.5 max-w-56 whitespace-normal break-words text-[11px] font-normal leading-snug\",\n active\n ? \"text-muted-foreground\"\n : \"text-muted-foreground/80\",\n )}\n >\n {option.description}\n </span>\n )}\n </span>\n </button>\n );\n })}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -112,6 +112,14 @@ type ComboboxBaseProps = {
|
|
|
112
112
|
footer?: ReactNode;
|
|
113
113
|
};
|
|
114
114
|
export type ComboboxSingleProps = ComboboxBaseProps & {
|
|
115
|
+
/** Places the filter in the popup and uses a button for the closed control. Custom entries appear only when no options match; dismissal discards the search. */
|
|
116
|
+
searchPlacement?: "control" | "menu";
|
|
117
|
+
/** Replaces the closed caption when searchPlacement is menu. */
|
|
118
|
+
triggerContent?: ReactNode;
|
|
119
|
+
/** Button classes for the menu filter layout. */
|
|
120
|
+
triggerClassName?: string;
|
|
121
|
+
/** Tooltip for the menu filter button. */
|
|
122
|
+
title?: string;
|
|
115
123
|
multiple?: false;
|
|
116
124
|
tristate?: false;
|
|
117
125
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox-types.d.ts","sourceRoot":"","sources":["../../src/components/combobox-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox-types.d.ts","sourceRoot":"","sources":["../../src/components/combobox-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const utils = require("../lib/utils.cjs");
|
|
6
|
+
const Icon = require("../data/Icon.cjs");
|
|
7
|
+
const HoverCard = require("../overlay/HoverCard.cjs");
|
|
8
|
+
const Modal = require("../overlay/Modal.cjs");
|
|
9
|
+
const jsonSchemaFormDebugGlyph = require("./json-schema-form-debug-glyph.cjs");
|
|
10
|
+
const jsonSchemaFormDebugGlyphMap = require("./json-schema-form-debug-glyph-map.cjs");
|
|
11
|
+
const jsonSchemaFormDebugKeywords = require("./json-schema-form-debug-keywords.cjs");
|
|
12
|
+
const UiEyeClosed = require("../icons/components/UiEyeClosed.cjs");
|
|
13
|
+
const UiBug = require("../icons/components/UiBug.cjs");
|
|
14
|
+
const UiChevronUp = require("../icons/components/UiChevronUp.cjs");
|
|
15
|
+
const UiChevronDown = require("../icons/components/UiChevronDown.cjs");
|
|
16
|
+
const UiFullscreen = require("../icons/components/UiFullscreen.cjs");
|
|
17
|
+
const FOOTER_BUTTON = "inline-flex items-center gap-1 rounded px-1 text-[11px] text-sky-700 hover:bg-muted dark:text-sky-300";
|
|
18
|
+
function FieldDebugBadge(info) {
|
|
19
|
+
const { fieldKey, instancePath, field, prop, hiddenReason } = info;
|
|
20
|
+
const [expanded, setExpanded] = react.useState(false);
|
|
21
|
+
const [dialogOpen, setDialogOpen] = react.useState(false);
|
|
22
|
+
const hidden = hiddenReason !== void 0;
|
|
23
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
24
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25
|
+
HoverCard.HoverCard,
|
|
26
|
+
{
|
|
27
|
+
placement: "right",
|
|
28
|
+
trigger: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29
|
+
"button",
|
|
30
|
+
{
|
|
31
|
+
type: "button",
|
|
32
|
+
"aria-label": `Debug ${fieldKey}`,
|
|
33
|
+
className: utils.cn(
|
|
34
|
+
"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-[11px]",
|
|
35
|
+
hidden ? "text-amber-600 dark:text-amber-400" : "text-muted-foreground hover:text-foreground"
|
|
36
|
+
),
|
|
37
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: hidden ? UiEyeClosed.UiEyeClosed : UiBug.UiBug })
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ClampedCard, { info, expanded, onToggle: () => setExpanded(!expanded), onOpenDialog: () => setDialogOpen(true) })
|
|
41
|
+
}
|
|
42
|
+
),
|
|
43
|
+
/* @__PURE__ */ jsxRuntime.jsx(Modal.Modal, { open: dialogOpen, onClose: () => setDialogOpen(false), title: prop.title || fieldKey, subtitle: `${instancePath || "/"} · ${field.kind}`, size: "lg", children: /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": "json-schema-form-debug-card-body", "data-clamped": "false", className: "text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(FieldDebugDetails, { ...info, withHeading: false }) }) })
|
|
44
|
+
] });
|
|
45
|
+
}
|
|
46
|
+
function ClampedCard({
|
|
47
|
+
info,
|
|
48
|
+
expanded,
|
|
49
|
+
onToggle,
|
|
50
|
+
onOpenDialog
|
|
51
|
+
}) {
|
|
52
|
+
const bodyRef = react.useRef(null);
|
|
53
|
+
const [overflows, setOverflows] = react.useState(false);
|
|
54
|
+
react.useLayoutEffect(() => {
|
|
55
|
+
const body = bodyRef.current;
|
|
56
|
+
if (body && !expanded) setOverflows(body.scrollHeight > body.clientHeight + 1);
|
|
57
|
+
}, [expanded, info.prop, info.field.value]);
|
|
58
|
+
const clamped = !expanded;
|
|
59
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "json-schema-form-debug-card", className: "max-w-md space-y-1 whitespace-normal text-xs", children: [
|
|
60
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
61
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62
|
+
"div",
|
|
63
|
+
{
|
|
64
|
+
ref: bodyRef,
|
|
65
|
+
"data-testid": "json-schema-form-debug-card-body",
|
|
66
|
+
"data-clamped": String(clamped),
|
|
67
|
+
className: clamped ? "max-h-80 overflow-hidden" : "max-h-[70vh] overflow-y-auto",
|
|
68
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(FieldDebugDetails, { ...info })
|
|
69
|
+
}
|
|
70
|
+
),
|
|
71
|
+
clamped && overflows && /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute inset-x-0 bottom-0 h-10 bg-gradient-to-t from-background" })
|
|
72
|
+
] }),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 border-t border-border pt-1", children: [
|
|
74
|
+
overflows && /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", "aria-expanded": expanded, onClick: onToggle, className: FOOTER_BUTTON, children: [
|
|
75
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: expanded ? UiChevronUp.UiChevronUp : UiChevronDown.UiChevronDown }),
|
|
76
|
+
expanded ? "Show less" : "Show more"
|
|
77
|
+
] }),
|
|
78
|
+
/* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", onClick: onOpenDialog, className: utils.cn(FOOTER_BUTTON, "ml-auto"), children: [
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiFullscreen.UiFullscreen }),
|
|
80
|
+
"Open in dialog"
|
|
81
|
+
] })
|
|
82
|
+
] })
|
|
83
|
+
] });
|
|
84
|
+
}
|
|
85
|
+
function FieldDebugDetails({ fieldKey, instancePath, field, prop, hiddenReason, withHeading = true }) {
|
|
86
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
87
|
+
withHeading && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-1.5", children: [
|
|
88
|
+
/* @__PURE__ */ jsxRuntime.jsx(jsonSchemaFormDebugGlyph.DebugGlyph, { glyph: jsonSchemaFormDebugGlyphMap.KIND_GLYPH[field.kind], className: "mt-0.5 size-4" }),
|
|
89
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: prop.title || fieldKey }),
|
|
91
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "font-mono text-[11px] text-muted-foreground", children: [
|
|
92
|
+
instancePath || "/",
|
|
93
|
+
" · ",
|
|
94
|
+
field.kind
|
|
95
|
+
] })
|
|
96
|
+
] })
|
|
97
|
+
] }),
|
|
98
|
+
hiddenReason !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "flex items-center gap-1 text-amber-700 dark:text-amber-300", children: [
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiEyeClosed.UiEyeClosed }),
|
|
100
|
+
" ",
|
|
101
|
+
hiddenReason
|
|
102
|
+
] }),
|
|
103
|
+
prop.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: prop.description }),
|
|
104
|
+
/* @__PURE__ */ jsxRuntime.jsx(jsonSchemaFormDebugKeywords.DebugKeywords, { prop, value: field.value })
|
|
105
|
+
] });
|
|
106
|
+
}
|
|
107
|
+
exports.FieldDebugBadge = FieldDebugBadge;
|
|
108
|
+
//# sourceMappingURL=json-schema-form-debug-badge.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema-form-debug-badge.cjs","sources":["../../src/components/json-schema-form-debug-badge.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiBug, UiChevronDown, UiChevronUp, UiEyeClosed, UiFullscreen } from \"../icons\";\nimport { HoverCard } from \"../overlay/HoverCard\";\nimport { Modal } from \"../overlay/Modal\";\nimport { DebugGlyph } from \"./json-schema-form-debug-glyph\";\nimport { KIND_GLYPH } from \"./json-schema-form-debug-glyph-map\";\nimport { DebugKeywords } from \"./json-schema-form-debug-keywords\";\nimport type { FieldControl, JsonSchemaProperty } from \"./json-schema-form-types\";\n\nexport interface FieldDebugInfo {\n fieldKey: string;\n instancePath: string;\n field: FieldControl;\n prop: JsonSchemaProperty;\n hiddenReason: string | undefined;\n}\n\nconst FOOTER_BUTTON = \"inline-flex items-center gap-1 rounded px-1 text-[11px] text-sky-700 hover:bg-muted dark:text-sky-300\";\n\n// FieldDebugBadge is a field's debug-mode badge: an eye-slash when the form\n// would hide it, a bug otherwise, whose hover card says where it comes from.\n// A field whose details outgrow the card (a screen field with a dozen\n// listeners, a long query) is clamped behind \"Show more\", and \"Open in dialog\"\n// shows the full details in a modal. Both states live here, not in the card,\n// because the card unmounts as soon as the pointer leaves it.\nexport function FieldDebugBadge(info: FieldDebugInfo) {\n const { fieldKey, instancePath, field, prop, hiddenReason } = info;\n const [expanded, setExpanded] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const hidden = hiddenReason !== undefined;\n return (\n <>\n <HoverCard\n placement=\"right\"\n trigger={\n <button\n type=\"button\"\n aria-label={`Debug ${fieldKey}`}\n className={cn(\n \"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-[11px]\",\n hidden ? \"text-amber-600 dark:text-amber-400\" : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n <Icon icon={hidden ? UiEyeClosed : UiBug} />\n </button>\n }\n >\n <ClampedCard info={info} expanded={expanded} onToggle={() => setExpanded(!expanded)} onOpenDialog={() => setDialogOpen(true)} />\n </HoverCard>\n <Modal open={dialogOpen} onClose={() => setDialogOpen(false)} title={prop.title || fieldKey} subtitle={`${instancePath || \"/\"} · ${field.kind}`} size=\"lg\">\n <div data-testid=\"json-schema-form-debug-card-body\" data-clamped=\"false\" className=\"text-xs\">\n <FieldDebugDetails {...info} withHeading={false} />\n </div>\n </Modal>\n </>\n );\n}\n\nfunction ClampedCard({\n info,\n expanded,\n onToggle,\n onOpenDialog,\n}: {\n info: FieldDebugInfo;\n expanded: boolean;\n onToggle: () => void;\n onOpenDialog: () => void;\n}) {\n const bodyRef = useRef<HTMLDivElement | null>(null);\n const [overflows, setOverflows] = useState(false);\n // Measured only while clamped: once expanded the body has no clamp to\n // overflow, and \"Show less\" must stay to put it back.\n useLayoutEffect(() => {\n const body = bodyRef.current;\n if (body && !expanded) setOverflows(body.scrollHeight > body.clientHeight + 1);\n }, [expanded, info.prop, info.field.value]);\n const clamped = !expanded;\n return (\n <div data-testid=\"json-schema-form-debug-card\" className=\"max-w-md space-y-1 whitespace-normal text-xs\">\n <div className=\"relative\">\n <div\n ref={bodyRef}\n data-testid=\"json-schema-form-debug-card-body\"\n data-clamped={String(clamped)}\n className={clamped ? \"max-h-80 overflow-hidden\" : \"max-h-[70vh] overflow-y-auto\"}\n >\n <FieldDebugDetails {...info} />\n </div>\n {clamped && overflows && <div aria-hidden className=\"pointer-events-none absolute inset-x-0 bottom-0 h-10 bg-gradient-to-t from-background\" />}\n </div>\n <div className=\"flex items-center gap-1 border-t border-border pt-1\">\n {overflows && (\n <button type=\"button\" aria-expanded={expanded} onClick={onToggle} className={FOOTER_BUTTON}>\n <Icon icon={expanded ? UiChevronUp : UiChevronDown} />\n {expanded ? \"Show less\" : \"Show more\"}\n </button>\n )}\n <button type=\"button\" onClick={onOpenDialog} className={cn(FOOTER_BUTTON, \"ml-auto\")}>\n <Icon icon={UiFullscreen} />\n Open in dialog\n </button>\n </div>\n </div>\n );\n}\n\n// FieldDebugDetails is the card's content. The dialog's own header already\n// names the field, so it renders without the heading.\nfunction FieldDebugDetails({ fieldKey, instancePath, field, prop, hiddenReason, withHeading = true }: FieldDebugInfo & { withHeading?: boolean }) {\n return (\n <div className=\"space-y-1.5\">\n {withHeading && (\n <div className=\"flex items-start gap-1.5\">\n <DebugGlyph glyph={KIND_GLYPH[field.kind]} className=\"mt-0.5 size-4\" />\n <div className=\"min-w-0\">\n <div className=\"font-medium\">{prop.title || fieldKey}</div>\n <div className=\"font-mono text-[11px] text-muted-foreground\">\n {instancePath || \"/\"} · {field.kind}\n </div>\n </div>\n </div>\n )}\n {hiddenReason !== undefined && (\n <p className=\"flex items-center gap-1 text-amber-700 dark:text-amber-300\">\n <Icon icon={UiEyeClosed} /> {hiddenReason}\n </p>\n )}\n {prop.description && <p className=\"text-muted-foreground\">{prop.description}</p>}\n <DebugKeywords prop={prop} value={field.value} />\n </div>\n );\n}\n"],"names":["useState","jsxs","Fragment","jsx","HoverCard","cn","Icon","UiEyeClosed","UiBug","Modal","useRef","useLayoutEffect","UiChevronUp","UiChevronDown","UiFullscreen","DebugGlyph","KIND_GLYPH","DebugKeywords"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FieldControl, JsonSchemaProperty } from './json-schema-form-types.js';
|
|
2
|
+
export interface FieldDebugInfo {
|
|
3
|
+
fieldKey: string;
|
|
4
|
+
instancePath: string;
|
|
5
|
+
field: FieldControl;
|
|
6
|
+
prop: JsonSchemaProperty;
|
|
7
|
+
hiddenReason: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function FieldDebugBadge(info: FieldDebugInfo): import("react").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=json-schema-form-debug-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema-form-debug-badge.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-debug-badge.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAUD,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,+BA+BnD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useLayoutEffect } from "react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
import { Icon } from "../data/Icon.js";
|
|
5
|
+
import { HoverCard } from "../overlay/HoverCard.js";
|
|
6
|
+
import { Modal } from "../overlay/Modal.js";
|
|
7
|
+
import { DebugGlyph } from "./json-schema-form-debug-glyph.js";
|
|
8
|
+
import { KIND_GLYPH } from "./json-schema-form-debug-glyph-map.js";
|
|
9
|
+
import { DebugKeywords } from "./json-schema-form-debug-keywords.js";
|
|
10
|
+
import { UiEyeClosed } from "../icons/components/UiEyeClosed.js";
|
|
11
|
+
import { UiBug } from "../icons/components/UiBug.js";
|
|
12
|
+
import { UiChevronUp } from "../icons/components/UiChevronUp.js";
|
|
13
|
+
import { UiChevronDown } from "../icons/components/UiChevronDown.js";
|
|
14
|
+
import { UiFullscreen } from "../icons/components/UiFullscreen.js";
|
|
15
|
+
const FOOTER_BUTTON = "inline-flex items-center gap-1 rounded px-1 text-[11px] text-sky-700 hover:bg-muted dark:text-sky-300";
|
|
16
|
+
function FieldDebugBadge(info) {
|
|
17
|
+
const { fieldKey, instancePath, field, prop, hiddenReason } = info;
|
|
18
|
+
const [expanded, setExpanded] = useState(false);
|
|
19
|
+
const [dialogOpen, setDialogOpen] = useState(false);
|
|
20
|
+
const hidden = hiddenReason !== void 0;
|
|
21
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22
|
+
/* @__PURE__ */ jsx(
|
|
23
|
+
HoverCard,
|
|
24
|
+
{
|
|
25
|
+
placement: "right",
|
|
26
|
+
trigger: /* @__PURE__ */ jsx(
|
|
27
|
+
"button",
|
|
28
|
+
{
|
|
29
|
+
type: "button",
|
|
30
|
+
"aria-label": `Debug ${fieldKey}`,
|
|
31
|
+
className: cn(
|
|
32
|
+
"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-[11px]",
|
|
33
|
+
hidden ? "text-amber-600 dark:text-amber-400" : "text-muted-foreground hover:text-foreground"
|
|
34
|
+
),
|
|
35
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: hidden ? UiEyeClosed : UiBug })
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
children: /* @__PURE__ */ jsx(ClampedCard, { info, expanded, onToggle: () => setExpanded(!expanded), onOpenDialog: () => setDialogOpen(true) })
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ jsx(Modal, { open: dialogOpen, onClose: () => setDialogOpen(false), title: prop.title || fieldKey, subtitle: `${instancePath || "/"} · ${field.kind}`, size: "lg", children: /* @__PURE__ */ jsx("div", { "data-testid": "json-schema-form-debug-card-body", "data-clamped": "false", className: "text-xs", children: /* @__PURE__ */ jsx(FieldDebugDetails, { ...info, withHeading: false }) }) })
|
|
42
|
+
] });
|
|
43
|
+
}
|
|
44
|
+
function ClampedCard({
|
|
45
|
+
info,
|
|
46
|
+
expanded,
|
|
47
|
+
onToggle,
|
|
48
|
+
onOpenDialog
|
|
49
|
+
}) {
|
|
50
|
+
const bodyRef = useRef(null);
|
|
51
|
+
const [overflows, setOverflows] = useState(false);
|
|
52
|
+
useLayoutEffect(() => {
|
|
53
|
+
const body = bodyRef.current;
|
|
54
|
+
if (body && !expanded) setOverflows(body.scrollHeight > body.clientHeight + 1);
|
|
55
|
+
}, [expanded, info.prop, info.field.value]);
|
|
56
|
+
const clamped = !expanded;
|
|
57
|
+
return /* @__PURE__ */ jsxs("div", { "data-testid": "json-schema-form-debug-card", className: "max-w-md space-y-1 whitespace-normal text-xs", children: [
|
|
58
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
59
|
+
/* @__PURE__ */ jsx(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
ref: bodyRef,
|
|
63
|
+
"data-testid": "json-schema-form-debug-card-body",
|
|
64
|
+
"data-clamped": String(clamped),
|
|
65
|
+
className: clamped ? "max-h-80 overflow-hidden" : "max-h-[70vh] overflow-y-auto",
|
|
66
|
+
children: /* @__PURE__ */ jsx(FieldDebugDetails, { ...info })
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
clamped && overflows && /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute inset-x-0 bottom-0 h-10 bg-gradient-to-t from-background" })
|
|
70
|
+
] }),
|
|
71
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 border-t border-border pt-1", children: [
|
|
72
|
+
overflows && /* @__PURE__ */ jsxs("button", { type: "button", "aria-expanded": expanded, onClick: onToggle, className: FOOTER_BUTTON, children: [
|
|
73
|
+
/* @__PURE__ */ jsx(Icon, { icon: expanded ? UiChevronUp : UiChevronDown }),
|
|
74
|
+
expanded ? "Show less" : "Show more"
|
|
75
|
+
] }),
|
|
76
|
+
/* @__PURE__ */ jsxs("button", { type: "button", onClick: onOpenDialog, className: cn(FOOTER_BUTTON, "ml-auto"), children: [
|
|
77
|
+
/* @__PURE__ */ jsx(Icon, { icon: UiFullscreen }),
|
|
78
|
+
"Open in dialog"
|
|
79
|
+
] })
|
|
80
|
+
] })
|
|
81
|
+
] });
|
|
82
|
+
}
|
|
83
|
+
function FieldDebugDetails({ fieldKey, instancePath, field, prop, hiddenReason, withHeading = true }) {
|
|
84
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
85
|
+
withHeading && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-1.5", children: [
|
|
86
|
+
/* @__PURE__ */ jsx(DebugGlyph, { glyph: KIND_GLYPH[field.kind], className: "mt-0.5 size-4" }),
|
|
87
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
88
|
+
/* @__PURE__ */ jsx("div", { className: "font-medium", children: prop.title || fieldKey }),
|
|
89
|
+
/* @__PURE__ */ jsxs("div", { className: "font-mono text-[11px] text-muted-foreground", children: [
|
|
90
|
+
instancePath || "/",
|
|
91
|
+
" · ",
|
|
92
|
+
field.kind
|
|
93
|
+
] })
|
|
94
|
+
] })
|
|
95
|
+
] }),
|
|
96
|
+
hiddenReason !== void 0 && /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-1 text-amber-700 dark:text-amber-300", children: [
|
|
97
|
+
/* @__PURE__ */ jsx(Icon, { icon: UiEyeClosed }),
|
|
98
|
+
" ",
|
|
99
|
+
hiddenReason
|
|
100
|
+
] }),
|
|
101
|
+
prop.description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: prop.description }),
|
|
102
|
+
/* @__PURE__ */ jsx(DebugKeywords, { prop, value: field.value })
|
|
103
|
+
] });
|
|
104
|
+
}
|
|
105
|
+
export {
|
|
106
|
+
FieldDebugBadge
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=json-schema-form-debug-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema-form-debug-badge.js","sources":["../../src/components/json-schema-form-debug-badge.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiBug, UiChevronDown, UiChevronUp, UiEyeClosed, UiFullscreen } from \"../icons\";\nimport { HoverCard } from \"../overlay/HoverCard\";\nimport { Modal } from \"../overlay/Modal\";\nimport { DebugGlyph } from \"./json-schema-form-debug-glyph\";\nimport { KIND_GLYPH } from \"./json-schema-form-debug-glyph-map\";\nimport { DebugKeywords } from \"./json-schema-form-debug-keywords\";\nimport type { FieldControl, JsonSchemaProperty } from \"./json-schema-form-types\";\n\nexport interface FieldDebugInfo {\n fieldKey: string;\n instancePath: string;\n field: FieldControl;\n prop: JsonSchemaProperty;\n hiddenReason: string | undefined;\n}\n\nconst FOOTER_BUTTON = \"inline-flex items-center gap-1 rounded px-1 text-[11px] text-sky-700 hover:bg-muted dark:text-sky-300\";\n\n// FieldDebugBadge is a field's debug-mode badge: an eye-slash when the form\n// would hide it, a bug otherwise, whose hover card says where it comes from.\n// A field whose details outgrow the card (a screen field with a dozen\n// listeners, a long query) is clamped behind \"Show more\", and \"Open in dialog\"\n// shows the full details in a modal. Both states live here, not in the card,\n// because the card unmounts as soon as the pointer leaves it.\nexport function FieldDebugBadge(info: FieldDebugInfo) {\n const { fieldKey, instancePath, field, prop, hiddenReason } = info;\n const [expanded, setExpanded] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const hidden = hiddenReason !== undefined;\n return (\n <>\n <HoverCard\n placement=\"right\"\n trigger={\n <button\n type=\"button\"\n aria-label={`Debug ${fieldKey}`}\n className={cn(\n \"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-[11px]\",\n hidden ? \"text-amber-600 dark:text-amber-400\" : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n <Icon icon={hidden ? UiEyeClosed : UiBug} />\n </button>\n }\n >\n <ClampedCard info={info} expanded={expanded} onToggle={() => setExpanded(!expanded)} onOpenDialog={() => setDialogOpen(true)} />\n </HoverCard>\n <Modal open={dialogOpen} onClose={() => setDialogOpen(false)} title={prop.title || fieldKey} subtitle={`${instancePath || \"/\"} · ${field.kind}`} size=\"lg\">\n <div data-testid=\"json-schema-form-debug-card-body\" data-clamped=\"false\" className=\"text-xs\">\n <FieldDebugDetails {...info} withHeading={false} />\n </div>\n </Modal>\n </>\n );\n}\n\nfunction ClampedCard({\n info,\n expanded,\n onToggle,\n onOpenDialog,\n}: {\n info: FieldDebugInfo;\n expanded: boolean;\n onToggle: () => void;\n onOpenDialog: () => void;\n}) {\n const bodyRef = useRef<HTMLDivElement | null>(null);\n const [overflows, setOverflows] = useState(false);\n // Measured only while clamped: once expanded the body has no clamp to\n // overflow, and \"Show less\" must stay to put it back.\n useLayoutEffect(() => {\n const body = bodyRef.current;\n if (body && !expanded) setOverflows(body.scrollHeight > body.clientHeight + 1);\n }, [expanded, info.prop, info.field.value]);\n const clamped = !expanded;\n return (\n <div data-testid=\"json-schema-form-debug-card\" className=\"max-w-md space-y-1 whitespace-normal text-xs\">\n <div className=\"relative\">\n <div\n ref={bodyRef}\n data-testid=\"json-schema-form-debug-card-body\"\n data-clamped={String(clamped)}\n className={clamped ? \"max-h-80 overflow-hidden\" : \"max-h-[70vh] overflow-y-auto\"}\n >\n <FieldDebugDetails {...info} />\n </div>\n {clamped && overflows && <div aria-hidden className=\"pointer-events-none absolute inset-x-0 bottom-0 h-10 bg-gradient-to-t from-background\" />}\n </div>\n <div className=\"flex items-center gap-1 border-t border-border pt-1\">\n {overflows && (\n <button type=\"button\" aria-expanded={expanded} onClick={onToggle} className={FOOTER_BUTTON}>\n <Icon icon={expanded ? UiChevronUp : UiChevronDown} />\n {expanded ? \"Show less\" : \"Show more\"}\n </button>\n )}\n <button type=\"button\" onClick={onOpenDialog} className={cn(FOOTER_BUTTON, \"ml-auto\")}>\n <Icon icon={UiFullscreen} />\n Open in dialog\n </button>\n </div>\n </div>\n );\n}\n\n// FieldDebugDetails is the card's content. The dialog's own header already\n// names the field, so it renders without the heading.\nfunction FieldDebugDetails({ fieldKey, instancePath, field, prop, hiddenReason, withHeading = true }: FieldDebugInfo & { withHeading?: boolean }) {\n return (\n <div className=\"space-y-1.5\">\n {withHeading && (\n <div className=\"flex items-start gap-1.5\">\n <DebugGlyph glyph={KIND_GLYPH[field.kind]} className=\"mt-0.5 size-4\" />\n <div className=\"min-w-0\">\n <div className=\"font-medium\">{prop.title || fieldKey}</div>\n <div className=\"font-mono text-[11px] text-muted-foreground\">\n {instancePath || \"/\"} · {field.kind}\n </div>\n </div>\n </div>\n )}\n {hiddenReason !== undefined && (\n <p className=\"flex items-center gap-1 text-amber-700 dark:text-amber-300\">\n <Icon icon={UiEyeClosed} /> {hiddenReason}\n </p>\n )}\n {prop.description && <p className=\"text-muted-foreground\">{prop.description}</p>}\n <DebugKeywords prop={prop} value={field.value} />\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const UiDataSchema = require("../icons/components/UiDataSchema.cjs");
|
|
4
|
+
const UiExtension = require("../icons/components/UiExtension.cjs");
|
|
5
|
+
const UiPluginModule = require("../icons/components/UiPluginModule.cjs");
|
|
6
|
+
const UiPalette = require("../icons/components/UiPalette.cjs");
|
|
7
|
+
const UiHibernateEvent = require("../icons/components/UiHibernateEvent.cjs");
|
|
8
|
+
const UiNull = require("../icons/components/UiNull.cjs");
|
|
9
|
+
const UiLayoutDashboard = require("../icons/components/UiLayoutDashboard.cjs");
|
|
10
|
+
const UiColumns = require("../icons/components/UiColumns.cjs");
|
|
11
|
+
const UiQuestion = require("../icons/components/UiQuestion.cjs");
|
|
12
|
+
const UiRows = require("../icons/components/UiRows.cjs");
|
|
13
|
+
const UiListOrdered = require("../icons/components/UiListOrdered.cjs");
|
|
14
|
+
const UiSortAlphabetically = require("../icons/components/UiSortAlphabetically.cjs");
|
|
15
|
+
const UiDatabaseLink = require("../icons/components/UiDatabaseLink.cjs");
|
|
16
|
+
const UiLock = require("../icons/components/UiLock.cjs");
|
|
17
|
+
const UiEyeClosed = require("../icons/components/UiEyeClosed.cjs");
|
|
18
|
+
const UiWriteAccess = require("../icons/components/UiWriteAccess.cjs");
|
|
19
|
+
const UiReadAccess = require("../icons/components/UiReadAccess.cjs");
|
|
20
|
+
const UiRegex = require("../icons/components/UiRegex.cjs");
|
|
21
|
+
const UiFileFormat = require("../icons/components/UiFileFormat.cjs");
|
|
22
|
+
const UiConstant1 = require("../icons/components/UiConstant1.cjs");
|
|
23
|
+
const UiCircleOutline = require("../icons/components/UiCircleOutline.cjs");
|
|
24
|
+
const UiEvaluateExpression = require("../icons/components/UiEvaluateExpression.cjs");
|
|
25
|
+
const UiProhibit = require("../icons/components/UiProhibit.cjs");
|
|
26
|
+
const UiEditMode = require("../icons/components/UiEditMode.cjs");
|
|
27
|
+
const UiVariable5 = require("../icons/components/UiVariable5.cjs");
|
|
28
|
+
const UiArrowsCounterClockwise = require("../icons/components/UiArrowsCounterClockwise.cjs");
|
|
29
|
+
const UiAsterisk = require("../icons/components/UiAsterisk.cjs");
|
|
30
|
+
const UiLockOpen = require("../icons/components/UiLockOpen.cjs");
|
|
31
|
+
const UiEye = require("../icons/components/UiEye.cjs");
|
|
32
|
+
const UiLink = require("../icons/components/UiLink.cjs");
|
|
33
|
+
const UiText = require("../icons/components/UiText.cjs");
|
|
34
|
+
const UiObject = require("../icons/components/UiObject.cjs");
|
|
35
|
+
const UiArray = require("../icons/components/UiArray.cjs");
|
|
36
|
+
const UiCalendarBlank = require("../icons/components/UiCalendarBlank.cjs");
|
|
37
|
+
const UiSelect = require("../icons/components/UiSelect.cjs");
|
|
38
|
+
const UiEnum = require("../icons/components/UiEnum.cjs");
|
|
39
|
+
const UiBoolean = require("../icons/components/UiBoolean.cjs");
|
|
40
|
+
const UiNumeric = require("../icons/components/UiNumeric.cjs");
|
|
41
|
+
const UiFileCode = require("../icons/components/UiFileCode.cjs");
|
|
42
|
+
const UiString = require("../icons/components/UiString.cjs");
|
|
43
|
+
const pair = (light, dark) => dark ? { light, dark } : { light };
|
|
44
|
+
const GROUP_GLYPH = {
|
|
45
|
+
behaviour: pair(UiHibernateEvent.UiHibernateEvent, UiHibernateEvent.UiHibernateEventDark),
|
|
46
|
+
presentation: pair(UiPalette.UiPalette),
|
|
47
|
+
"opt-in": pair(UiPluginModule.UiPluginModule, UiPluginModule.UiPluginModuleDark),
|
|
48
|
+
consumer: pair(UiExtension.UiExtension, UiExtension.UiExtensionDark),
|
|
49
|
+
schema: pair(UiDataSchema.UiDataSchema, UiDataSchema.UiDataSchemaDark)
|
|
50
|
+
};
|
|
51
|
+
const KIND_GLYPH = {
|
|
52
|
+
string: pair(UiString.UiString),
|
|
53
|
+
textarea: pair(UiText.UiText),
|
|
54
|
+
markdown: pair(UiFileCode.UiFileCode),
|
|
55
|
+
number: pair(UiNumeric.UiNumeric),
|
|
56
|
+
boolean: pair(UiBoolean.UiBoolean),
|
|
57
|
+
enum: pair(UiEnum.UiEnum),
|
|
58
|
+
lookup: pair(UiSelect.UiSelect),
|
|
59
|
+
date: pair(UiCalendarBlank.UiCalendarBlank),
|
|
60
|
+
"string-map": pair(UiDataSchema.UiDataSchema, UiDataSchema.UiDataSchemaDark),
|
|
61
|
+
array: pair(UiArray.UiArray),
|
|
62
|
+
object: pair(UiObject.UiObject),
|
|
63
|
+
display: pair(UiText.UiText),
|
|
64
|
+
link: pair(UiLink.UiLink)
|
|
65
|
+
};
|
|
66
|
+
const TYPE_GLYPH = {
|
|
67
|
+
string: KIND_GLYPH.string,
|
|
68
|
+
integer: KIND_GLYPH.number,
|
|
69
|
+
number: KIND_GLYPH.number,
|
|
70
|
+
boolean: KIND_GLYPH.boolean,
|
|
71
|
+
array: KIND_GLYPH.array,
|
|
72
|
+
object: KIND_GLYPH.object,
|
|
73
|
+
null: pair(UiNull.UiNull)
|
|
74
|
+
};
|
|
75
|
+
const KEYWORD_GLYPH = {
|
|
76
|
+
enum: KIND_GLYPH.enum,
|
|
77
|
+
const: pair(UiConstant1.UiConstant1, UiConstant1.UiConstant1Dark),
|
|
78
|
+
default: pair(UiConstant1.UiConstant1, UiConstant1.UiConstant1Dark),
|
|
79
|
+
format: pair(UiFileFormat.UiFileFormat, UiFileFormat.UiFileFormatDark),
|
|
80
|
+
pattern: pair(UiRegex.UiRegex, UiRegex.UiRegexDark),
|
|
81
|
+
readOnly: pair(UiReadAccess.UiReadAccess, UiReadAccess.UiReadAccessDark),
|
|
82
|
+
writeOnly: pair(UiWriteAccess.UiWriteAccess, UiWriteAccess.UiWriteAccessDark),
|
|
83
|
+
"x-hidden": pair(UiEyeClosed.UiEyeClosed),
|
|
84
|
+
"x-hidden-by": pair(UiEyeClosed.UiEyeClosed),
|
|
85
|
+
"x-disabled": pair(UiLock.UiLock),
|
|
86
|
+
"x-on-change": GROUP_GLYPH.behaviour,
|
|
87
|
+
"x-on-load": GROUP_GLYPH.behaviour,
|
|
88
|
+
"x-clicky-lookup": pair(UiDatabaseLink.UiDatabaseLink, UiDatabaseLink.UiDatabaseLinkDark),
|
|
89
|
+
"x-discriminator": KIND_GLYPH.enum,
|
|
90
|
+
"x-order": pair(UiSortAlphabetically.UiSortAlphabetically, UiSortAlphabetically.UiSortAlphabeticallyDark),
|
|
91
|
+
"x-clicky-order": pair(UiListOrdered.UiListOrdered),
|
|
92
|
+
"x-item": pair(UiRows.UiRows),
|
|
93
|
+
"x-help": pair(UiQuestion.UiQuestion),
|
|
94
|
+
"x-help-display": pair(UiQuestion.UiQuestion),
|
|
95
|
+
"x-md-editor": KIND_GLYPH.markdown,
|
|
96
|
+
"x-columns": pair(UiColumns.UiColumns),
|
|
97
|
+
"x-col-span": pair(UiColumns.UiColumns),
|
|
98
|
+
"x-layout": pair(UiLayoutDashboard.UiLayoutDashboard),
|
|
99
|
+
"x-label-position": pair(UiLayoutDashboard.UiLayoutDashboard)
|
|
100
|
+
};
|
|
101
|
+
function keywordGlyph(keyword, raw) {
|
|
102
|
+
if (keyword === "type" && typeof raw === "string") return TYPE_GLYPH[raw];
|
|
103
|
+
return KEYWORD_GLYPH[keyword];
|
|
104
|
+
}
|
|
105
|
+
const ACTION_GLYPH = {
|
|
106
|
+
hide: pair(UiEyeClosed.UiEyeClosed),
|
|
107
|
+
show: pair(UiEye.UiEye),
|
|
108
|
+
enable: pair(UiLockOpen.UiLockOpen),
|
|
109
|
+
disable: pair(UiLock.UiLock),
|
|
110
|
+
require: pair(UiAsterisk.UiAsterisk),
|
|
111
|
+
optional: pair(UiCircleOutline.UiCircleOutline),
|
|
112
|
+
reset: pair(UiArrowsCounterClockwise.UiArrowsCounterClockwise),
|
|
113
|
+
set: pair(UiVariable5.UiVariable5, UiVariable5.UiVariable5Dark),
|
|
114
|
+
patch: pair(UiEditMode.UiEditMode, UiEditMode.UiEditModeDark)
|
|
115
|
+
};
|
|
116
|
+
const CONDITION_GLYPH = {
|
|
117
|
+
const: pair(UiConstant1.UiConstant1, UiConstant1.UiConstant1Dark),
|
|
118
|
+
enum: KIND_GLYPH.enum,
|
|
119
|
+
not: pair(UiProhibit.UiProhibit),
|
|
120
|
+
expr: pair(UiEvaluateExpression.UiEvaluateExpression, UiEvaluateExpression.UiEvaluateExpressionDark),
|
|
121
|
+
schema: pair(UiDataSchema.UiDataSchema, UiDataSchema.UiDataSchemaDark),
|
|
122
|
+
always: pair(UiCircleOutline.UiCircleOutline)
|
|
123
|
+
};
|
|
124
|
+
exports.ACTION_GLYPH = ACTION_GLYPH;
|
|
125
|
+
exports.CONDITION_GLYPH = CONDITION_GLYPH;
|
|
126
|
+
exports.GROUP_GLYPH = GROUP_GLYPH;
|
|
127
|
+
exports.KIND_GLYPH = KIND_GLYPH;
|
|
128
|
+
exports.keywordGlyph = keywordGlyph;
|
|
129
|
+
//# sourceMappingURL=json-schema-form-debug-glyph-map.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema-form-debug-glyph-map.cjs","sources":["../../src/components/json-schema-form-debug-glyph-map.ts"],"sourcesContent":["import {\n UiArray,\n UiArrowsCounterClockwise,\n UiAsterisk,\n UiBoolean,\n UiCalendarBlank,\n UiCircleOutline,\n UiColumns,\n UiConstant1,\n UiConstant1Dark,\n UiDataSchema,\n UiDataSchemaDark,\n UiDatabaseLink,\n UiDatabaseLinkDark,\n UiEditMode,\n UiEditModeDark,\n UiEnum,\n UiEvaluateExpression,\n UiEvaluateExpressionDark,\n UiExtension,\n UiExtensionDark,\n UiEye,\n UiEyeClosed,\n UiFileCode,\n UiFileFormat,\n UiFileFormatDark,\n UiHibernateEvent,\n UiHibernateEventDark,\n UiLayoutDashboard,\n UiLink,\n UiListOrdered,\n UiLock,\n UiLockOpen,\n UiNull,\n UiNumeric,\n UiObject,\n UiPalette,\n UiPluginModule,\n UiPluginModuleDark,\n UiProhibit,\n UiQuestion,\n UiReadAccess,\n UiReadAccessDark,\n UiRegex,\n UiRegexDark,\n UiRows,\n UiSelect,\n UiSortAlphabetically,\n UiSortAlphabeticallyDark,\n UiString,\n UiText,\n UiVariable5,\n UiVariable5Dark,\n UiWriteAccess,\n UiWriteAccessDark,\n} from \"../icons\";\nimport type { IconComponent } from \"../icons/types\";\nimport type { KeywordGroup } from \"./json-schema-form-debug-groups\";\nimport type { ChangeActions, FieldControlKind } from \"./json-schema-form-types\";\n\n// Glyphs the debug card draws from the programming icon palette. A palette icon\n// is a coloured pair: `dark` is its dark-theme artwork, where one exists.\nexport interface DebugGlyphPair {\n light: IconComponent;\n dark?: IconComponent;\n}\n\nconst pair = (light: IconComponent, dark?: IconComponent): DebugGlyphPair => (dark ? { light, dark } : { light });\n\nexport const GROUP_GLYPH: Record<KeywordGroup, DebugGlyphPair> = {\n behaviour: pair(UiHibernateEvent, UiHibernateEventDark),\n presentation: pair(UiPalette),\n \"opt-in\": pair(UiPluginModule, UiPluginModuleDark),\n consumer: pair(UiExtension, UiExtensionDark),\n schema: pair(UiDataSchema, UiDataSchemaDark),\n};\n\nexport const KIND_GLYPH: Record<FieldControlKind, DebugGlyphPair> = {\n string: pair(UiString),\n textarea: pair(UiText),\n markdown: pair(UiFileCode),\n number: pair(UiNumeric),\n boolean: pair(UiBoolean),\n enum: pair(UiEnum),\n lookup: pair(UiSelect),\n date: pair(UiCalendarBlank),\n \"string-map\": pair(UiDataSchema, UiDataSchemaDark),\n array: pair(UiArray),\n object: pair(UiObject),\n display: pair(UiText),\n link: pair(UiLink),\n};\n\n// The JSON Schema `type` names, read by the `type` keyword row.\nconst TYPE_GLYPH: Record<string, DebugGlyphPair> = {\n string: KIND_GLYPH.string,\n integer: KIND_GLYPH.number,\n number: KIND_GLYPH.number,\n boolean: KIND_GLYPH.boolean,\n array: KIND_GLYPH.array,\n object: KIND_GLYPH.object,\n null: pair(UiNull),\n};\n\nconst KEYWORD_GLYPH: Record<string, DebugGlyphPair> = {\n enum: KIND_GLYPH.enum,\n const: pair(UiConstant1, UiConstant1Dark),\n default: pair(UiConstant1, UiConstant1Dark),\n format: pair(UiFileFormat, UiFileFormatDark),\n pattern: pair(UiRegex, UiRegexDark),\n readOnly: pair(UiReadAccess, UiReadAccessDark),\n writeOnly: pair(UiWriteAccess, UiWriteAccessDark),\n \"x-hidden\": pair(UiEyeClosed),\n \"x-hidden-by\": pair(UiEyeClosed),\n \"x-disabled\": pair(UiLock),\n \"x-on-change\": GROUP_GLYPH.behaviour,\n \"x-on-load\": GROUP_GLYPH.behaviour,\n \"x-clicky-lookup\": pair(UiDatabaseLink, UiDatabaseLinkDark),\n \"x-discriminator\": KIND_GLYPH.enum,\n \"x-order\": pair(UiSortAlphabetically, UiSortAlphabeticallyDark),\n \"x-clicky-order\": pair(UiListOrdered),\n \"x-item\": pair(UiRows),\n \"x-help\": pair(UiQuestion),\n \"x-help-display\": pair(UiQuestion),\n \"x-md-editor\": KIND_GLYPH.markdown,\n \"x-columns\": pair(UiColumns),\n \"x-col-span\": pair(UiColumns),\n \"x-layout\": pair(UiLayoutDashboard),\n \"x-label-position\": pair(UiLayoutDashboard),\n};\n\n// keywordGlyph is the glyph beside a keyword row; `type` is marked by the\n// type it names. A keyword the palette has no symbol for has none.\nexport function keywordGlyph(keyword: string, raw: unknown): DebugGlyphPair | undefined {\n if (keyword === \"type\" && typeof raw === \"string\") return TYPE_GLYPH[raw];\n return KEYWORD_GLYPH[keyword];\n}\n\nexport const ACTION_GLYPH: Record<keyof ChangeActions, DebugGlyphPair> = {\n hide: pair(UiEyeClosed),\n show: pair(UiEye),\n enable: pair(UiLockOpen),\n disable: pair(UiLock),\n require: pair(UiAsterisk),\n optional: pair(UiCircleOutline),\n reset: pair(UiArrowsCounterClockwise),\n set: pair(UiVariable5, UiVariable5Dark),\n patch: pair(UiEditMode, UiEditModeDark),\n};\n\n// One glyph per predicate a `when` can state.\nexport const CONDITION_GLYPH = {\n const: pair(UiConstant1, UiConstant1Dark),\n enum: KIND_GLYPH.enum,\n not: pair(UiProhibit),\n expr: pair(UiEvaluateExpression, UiEvaluateExpressionDark),\n schema: pair(UiDataSchema, UiDataSchemaDark),\n always: pair(UiCircleOutline),\n} satisfies Record<string, DebugGlyphPair>;\n"],"names":["UiHibernateEvent","UiHibernateEventDark","UiPalette","UiPluginModule","UiPluginModuleDark","UiExtension","UiExtensionDark","UiDataSchema","UiDataSchemaDark","UiString","UiText","UiFileCode","UiNumeric","UiBoolean","UiEnum","UiSelect","UiCalendarBlank","UiArray","UiObject","UiLink","UiNull","UiConstant1","UiConstant1Dark","UiFileFormat","UiFileFormatDark","UiRegex","UiRegexDark","UiReadAccess","UiReadAccessDark","UiWriteAccess","UiWriteAccessDark","UiEyeClosed","UiLock","UiDatabaseLink","UiDatabaseLinkDark","UiSortAlphabetically","UiSortAlphabeticallyDark","UiListOrdered","UiRows","UiQuestion","UiColumns","UiLayoutDashboard","UiEye","UiLockOpen","UiAsterisk","UiCircleOutline","UiArrowsCounterClockwise","UiVariable5","UiVariable5Dark","UiEditMode","UiEditModeDark","UiProhibit","UiEvaluateExpression","UiEvaluateExpressionDark"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA,MAAM,OAAO,CAAC,OAAsB,SAA0C,OAAO,EAAE,OAAO,SAAS,EAAE,MAAA;AAElG,MAAM,cAAoD;AAAA,EAC/D,WAAW,KAAKA,iBAAAA,kBAAkBC,qCAAoB;AAAA,EACtD,cAAc,KAAKC,mBAAS;AAAA,EAC5B,UAAU,KAAKC,eAAAA,gBAAgBC,iCAAkB;AAAA,EACjD,UAAU,KAAKC,YAAAA,aAAaC,2BAAe;AAAA,EAC3C,QAAQ,KAAKC,aAAAA,cAAcC,aAAAA,gBAAgB;AAC7C;AAEO,MAAM,aAAuD;AAAA,EAClE,QAAQ,KAAKC,iBAAQ;AAAA,EACrB,UAAU,KAAKC,aAAM;AAAA,EACrB,UAAU,KAAKC,qBAAU;AAAA,EACzB,QAAQ,KAAKC,mBAAS;AAAA,EACtB,SAAS,KAAKC,mBAAS;AAAA,EACvB,MAAM,KAAKC,aAAM;AAAA,EACjB,QAAQ,KAAKC,iBAAQ;AAAA,EACrB,MAAM,KAAKC,+BAAe;AAAA,EAC1B,cAAc,KAAKT,aAAAA,cAAcC,6BAAgB;AAAA,EACjD,OAAO,KAAKS,eAAO;AAAA,EACnB,QAAQ,KAAKC,iBAAQ;AAAA,EACrB,SAAS,KAAKR,aAAM;AAAA,EACpB,MAAM,KAAKS,OAAAA,MAAM;AACnB;AAGA,MAAM,aAA6C;AAAA,EACjD,QAAQ,WAAW;AAAA,EACnB,SAAS,WAAW;AAAA,EACpB,QAAQ,WAAW;AAAA,EACnB,SAAS,WAAW;AAAA,EACpB,OAAO,WAAW;AAAA,EAClB,QAAQ,WAAW;AAAA,EACnB,MAAM,KAAKC,OAAAA,MAAM;AACnB;AAEA,MAAM,gBAAgD;AAAA,EACpD,MAAM,WAAW;AAAA,EACjB,OAAO,KAAKC,YAAAA,aAAaC,2BAAe;AAAA,EACxC,SAAS,KAAKD,YAAAA,aAAaC,2BAAe;AAAA,EAC1C,QAAQ,KAAKC,aAAAA,cAAcC,6BAAgB;AAAA,EAC3C,SAAS,KAAKC,QAAAA,SAASC,mBAAW;AAAA,EAClC,UAAU,KAAKC,aAAAA,cAAcC,6BAAgB;AAAA,EAC7C,WAAW,KAAKC,cAAAA,eAAeC,+BAAiB;AAAA,EAChD,YAAY,KAAKC,uBAAW;AAAA,EAC5B,eAAe,KAAKA,uBAAW;AAAA,EAC/B,cAAc,KAAKC,aAAM;AAAA,EACzB,eAAe,YAAY;AAAA,EAC3B,aAAa,YAAY;AAAA,EACzB,mBAAmB,KAAKC,eAAAA,gBAAgBC,iCAAkB;AAAA,EAC1D,mBAAmB,WAAW;AAAA,EAC9B,WAAW,KAAKC,qBAAAA,sBAAsBC,6CAAwB;AAAA,EAC9D,kBAAkB,KAAKC,2BAAa;AAAA,EACpC,UAAU,KAAKC,aAAM;AAAA,EACrB,UAAU,KAAKC,qBAAU;AAAA,EACzB,kBAAkB,KAAKA,qBAAU;AAAA,EACjC,eAAe,WAAW;AAAA,EAC1B,aAAa,KAAKC,mBAAS;AAAA,EAC3B,cAAc,KAAKA,mBAAS;AAAA,EAC5B,YAAY,KAAKC,mCAAiB;AAAA,EAClC,oBAAoB,KAAKA,kBAAAA,iBAAiB;AAC5C;AAIO,SAAS,aAAa,SAAiB,KAA0C;AACtF,MAAI,YAAY,UAAU,OAAO,QAAQ,SAAU,QAAO,WAAW,GAAG;AACxE,SAAO,cAAc,OAAO;AAC9B;AAEO,MAAM,eAA4D;AAAA,EACvE,MAAM,KAAKV,uBAAW;AAAA,EACtB,MAAM,KAAKW,WAAK;AAAA,EAChB,QAAQ,KAAKC,qBAAU;AAAA,EACvB,SAAS,KAAKX,aAAM;AAAA,EACpB,SAAS,KAAKY,qBAAU;AAAA,EACxB,UAAU,KAAKC,+BAAe;AAAA,EAC9B,OAAO,KAAKC,iDAAwB;AAAA,EACpC,KAAK,KAAKC,YAAAA,aAAaC,2BAAe;AAAA,EACtC,OAAO,KAAKC,WAAAA,YAAYC,WAAAA,cAAc;AACxC;AAGO,MAAM,kBAAkB;AAAA,EAC7B,OAAO,KAAK7B,YAAAA,aAAaC,2BAAe;AAAA,EACxC,MAAM,WAAW;AAAA,EACjB,KAAK,KAAK6B,qBAAU;AAAA,EACpB,MAAM,KAAKC,qBAAAA,sBAAsBC,6CAAwB;AAAA,EACzD,QAAQ,KAAK9C,aAAAA,cAAcC,6BAAgB;AAAA,EAC3C,QAAQ,KAAKqC,gBAAAA,eAAe;AAC9B;;;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IconComponent } from '../icons/types.js';
|
|
2
|
+
import { KeywordGroup } from './json-schema-form-debug-groups.js';
|
|
3
|
+
import { ChangeActions, FieldControlKind } from './json-schema-form-types.js';
|
|
4
|
+
export interface DebugGlyphPair {
|
|
5
|
+
light: IconComponent;
|
|
6
|
+
dark?: IconComponent;
|
|
7
|
+
}
|
|
8
|
+
export declare const GROUP_GLYPH: Record<KeywordGroup, DebugGlyphPair>;
|
|
9
|
+
export declare const KIND_GLYPH: Record<FieldControlKind, DebugGlyphPair>;
|
|
10
|
+
export declare function keywordGlyph(keyword: string, raw: unknown): DebugGlyphPair | undefined;
|
|
11
|
+
export declare const ACTION_GLYPH: Record<keyof ChangeActions, DebugGlyphPair>;
|
|
12
|
+
export declare const CONDITION_GLYPH: {
|
|
13
|
+
const: DebugGlyphPair;
|
|
14
|
+
enum: DebugGlyphPair;
|
|
15
|
+
not: DebugGlyphPair;
|
|
16
|
+
expr: DebugGlyphPair;
|
|
17
|
+
schema: DebugGlyphPair;
|
|
18
|
+
always: DebugGlyphPair;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=json-schema-form-debug-glyph-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema-form-debug-glyph-map.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-debug-glyph-map.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIhF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAID,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAM5D,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAc/D,CAAC;AA0CF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAGtF;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,aAAa,EAAE,cAAc,CAUpE,CAAC;AAGF,eAAO,MAAM,eAAe;;;;;;;CAOc,CAAC"}
|