@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,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
4
5
|
const utils = require("../../lib/utils.cjs");
|
|
5
6
|
const DropdownMenu = require("../../overlay/DropdownMenu.cjs");
|
|
6
7
|
const Icon = require("../Icon.cjs");
|
|
7
|
-
const
|
|
8
|
+
const RuntimeBar_context = require("./RuntimeBar.context.cjs");
|
|
8
9
|
const UiCheck = require("../../icons/components/UiCheck.cjs");
|
|
10
|
+
const UiChevronDown = require("../../icons/components/UiChevronDown.cjs");
|
|
9
11
|
const SEGMENT_CAPTION_CLASS = "truncate text-xs font-semibold text-foreground";
|
|
10
12
|
const SEGMENT_KEY_CLASS = "text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground";
|
|
11
13
|
function RuntimeSegment({
|
|
@@ -18,6 +20,7 @@ function RuntimeSegment({
|
|
|
18
20
|
className,
|
|
19
21
|
children
|
|
20
22
|
}) {
|
|
23
|
+
const variant = react.useContext(RuntimeBar_context.RuntimeBarVariantContext);
|
|
21
24
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22
25
|
DropdownMenu.DropdownMenu,
|
|
23
26
|
{
|
|
@@ -25,33 +28,40 @@ function RuntimeSegment({
|
|
|
25
28
|
menuLabel,
|
|
26
29
|
items,
|
|
27
30
|
...header ? { header } : {},
|
|
28
|
-
menuClassName: "min-w-56 max-w-80",
|
|
31
|
+
menuClassName: "max-h-[70vh] min-w-56 max-w-80 overflow-y-auto",
|
|
29
32
|
className: utils.cn(
|
|
30
|
-
"
|
|
33
|
+
"h-control-h min-w-0 [&>span]:min-w-0 [&>span]:w-full",
|
|
34
|
+
variant === "combo" ? "rounded-md border border-input bg-background" : "border-l border-border first:border-l-0",
|
|
31
35
|
className
|
|
32
36
|
),
|
|
33
|
-
trigger: /* @__PURE__ */ jsxRuntime.
|
|
37
|
+
trigger: /* @__PURE__ */ jsxRuntime.jsx(
|
|
34
38
|
"button",
|
|
35
39
|
{
|
|
36
40
|
type: "button",
|
|
37
41
|
disabled,
|
|
38
42
|
title,
|
|
39
43
|
className: "inline-flex h-full w-full min-w-0 items-center gap-1.5 px-density-2 transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring [[aria-expanded=true]_&]:bg-muted",
|
|
40
|
-
children:
|
|
41
|
-
children,
|
|
42
|
-
!hideChevron && /* @__PURE__ */ jsxRuntime.jsx(
|
|
43
|
-
Icon.Icon,
|
|
44
|
-
{
|
|
45
|
-
icon: UiChevronDown.UiChevronDown,
|
|
46
|
-
className: "size-3 shrink-0 text-muted-foreground/70"
|
|
47
|
-
}
|
|
48
|
-
)
|
|
49
|
-
]
|
|
44
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(RuntimeSegmentCaption, { hideChevron, children })
|
|
50
45
|
}
|
|
51
46
|
)
|
|
52
47
|
}
|
|
53
48
|
);
|
|
54
49
|
}
|
|
50
|
+
function RuntimeSegmentCaption({
|
|
51
|
+
children,
|
|
52
|
+
hideChevron = false
|
|
53
|
+
}) {
|
|
54
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
55
|
+
children,
|
|
56
|
+
!hideChevron && /* @__PURE__ */ jsxRuntime.jsx(
|
|
57
|
+
Icon.Icon,
|
|
58
|
+
{
|
|
59
|
+
icon: UiChevronDown.UiChevronDown,
|
|
60
|
+
className: "size-3 shrink-0 text-muted-foreground/70"
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
] });
|
|
64
|
+
}
|
|
55
65
|
function SegmentItemLabel({
|
|
56
66
|
text,
|
|
57
67
|
hint,
|
|
@@ -77,6 +87,7 @@ function SegmentItemLabel({
|
|
|
77
87
|
] });
|
|
78
88
|
}
|
|
79
89
|
exports.RuntimeSegment = RuntimeSegment;
|
|
90
|
+
exports.RuntimeSegmentCaption = RuntimeSegmentCaption;
|
|
80
91
|
exports.SEGMENT_CAPTION_CLASS = SEGMENT_CAPTION_CLASS;
|
|
81
92
|
exports.SEGMENT_KEY_CLASS = SEGMENT_KEY_CLASS;
|
|
82
93
|
exports.SegmentItemLabel = SegmentItemLabel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeBarSegment.cjs","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"RuntimeBarSegment.cjs","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { UiCheck, UiChevronDown } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DropdownMenu,\n type DropdownMenuItem,\n} from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\n\nexport const SEGMENT_CAPTION_CLASS =\n \"truncate text-xs font-semibold text-foreground\";\nexport const SEGMENT_KEY_CLASS =\n \"text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground\";\n\n// One trigger in the segmented runtime bar: a dropdown whose button carries the\n// segment's current value. `min-w-0` on the root lets a segment shrink past its\n// content — without it the flex item's automatic minimum size is its max-content\n// width, so a row of segments overflows a narrow container instead of ellipsing\n// its captions.\nexport function RuntimeSegment({\n items,\n menuLabel,\n title,\n header,\n disabled = false,\n hideChevron = false,\n className,\n children,\n}: {\n items: DropdownMenuItem[];\n menuLabel: string;\n title: string;\n header?: ReactNode;\n disabled?: boolean;\n /** Drops the trailing chevron, for a segment whose caption is a bare glyph. */\n hideChevron?: boolean;\n className?: string | undefined;\n children: ReactNode;\n}) {\n const variant = useContext(RuntimeBarVariantContext);\n return (\n <DropdownMenu\n align=\"left\"\n menuLabel={menuLabel}\n items={items}\n {...(header ? { header } : {})}\n menuClassName=\"max-h-[70vh] min-w-56 max-w-80 overflow-y-auto\"\n className={cn(\n \"h-control-h min-w-0 [&>span]:min-w-0 [&>span]:w-full\",\n variant === \"combo\"\n ? \"rounded-md border border-input bg-background\"\n : \"border-l border-border first:border-l-0\",\n className,\n )}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n title={title}\n className=\"inline-flex h-full w-full min-w-0 items-center gap-1.5 px-density-2 transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring [[aria-expanded=true]_&]:bg-muted\"\n >\n <RuntimeSegmentCaption hideChevron={hideChevron}>\n {children}\n </RuntimeSegmentCaption>\n </button>\n }\n />\n );\n}\n\nexport function RuntimeSegmentCaption({\n children,\n hideChevron = false,\n}: {\n children: ReactNode;\n hideChevron?: boolean;\n}) {\n return (\n <>\n {children}\n {!hideChevron && (\n <Icon\n icon={UiChevronDown}\n className=\"size-3 shrink-0 text-muted-foreground/70\"\n />\n )}\n </>\n );\n}\n\nexport function SegmentItemLabel({\n text,\n hint,\n selected,\n stacked = false,\n}: {\n text: string;\n hint?: string | undefined;\n selected: boolean;\n stacked?: boolean | undefined;\n}) {\n return (\n <>\n <span className=\"min-w-0 flex-1\">\n <span className={cn(\"block truncate\", selected && \"font-semibold\")}>\n {text}\n </span>\n {hint && stacked && (\n <span className=\"block whitespace-normal text-[11px] leading-4 text-muted-foreground\">\n {hint}\n </span>\n )}\n </span>\n {hint && !stacked && (\n <span className=\"shrink-0 text-[11px] text-muted-foreground\">\n {hint}\n </span>\n )}\n <Icon\n icon={UiCheck}\n className={cn(\n \"size-3.5 shrink-0 text-primary\",\n !selected && \"invisible\",\n )}\n />\n </>\n );\n}\n"],"names":["useContext","RuntimeBarVariantContext","jsx","DropdownMenu","cn","jsxs","Fragment","Icon","UiChevronDown","UiCheck"],"mappings":";;;;;;;;;;AAUO,MAAM,wBACX;AACK,MAAM,oBACX;AAOK,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EACA;AACF,GAUG;AACD,QAAM,UAAUA,MAAAA,WAAWC,2CAAwB;AACnD,SACEC,2BAAAA;AAAAA,IAACC,aAAAA;AAAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN;AAAA,MACA;AAAA,MACC,GAAI,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,MAC3B,eAAc;AAAA,MACd,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA,YAAY,UACR,iDACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAEF,SACEF,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UAEV,UAAAA,2BAAAA,IAAC,uBAAA,EAAsB,aACpB,SAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIR;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,cAAc;AAChB,GAGG;AACD,SACEG,2BAAAA,KAAAC,qBAAA,EACG,UAAA;AAAA,IAAA;AAAA,IACA,CAAC,eACAJ,2BAAAA;AAAAA,MAACK,KAAAA;AAAAA,MAAA;AAAA,QACC,MAAMC,cAAAA;AAAAA,QACN,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GAEJ;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,SACEH,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,IAAAD,2BAAAA,KAAC,QAAA,EAAK,WAAU,kBACd,UAAA;AAAA,MAAAH,2BAAAA,IAAC,UAAK,WAAWE,SAAG,kBAAkB,YAAY,eAAe,GAC9D,UAAA,MACH;AAAA,MACC,QAAQ,WACPF,2BAAAA,IAAC,QAAA,EAAK,WAAU,uEACb,UAAA,KAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IACC,QAAQ,CAAC,0CACP,QAAA,EAAK,WAAU,8CACb,UAAA,MACH;AAAA,IAEFA,2BAAAA;AAAAA,MAACK,KAAAA;AAAAA,MAAA;AAAA,QACC,MAAME,QAAAA;AAAAA,QACN,WAAWL,MAAAA;AAAAA,UACT;AAAA,UACA,CAAC,YAAY;AAAA,QAAA;AAAA,MACf;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;;;;;;"}
|
|
@@ -13,6 +13,10 @@ export declare function RuntimeSegment({ items, menuLabel, title, header, disabl
|
|
|
13
13
|
className?: string | undefined;
|
|
14
14
|
children: ReactNode;
|
|
15
15
|
}): import("react").JSX.Element;
|
|
16
|
+
export declare function RuntimeSegmentCaption({ children, hideChevron, }: {
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
hideChevron?: boolean;
|
|
19
|
+
}): import("react").JSX.Element;
|
|
16
20
|
export declare function SegmentItemLabel({ text, hint, selected, stacked, }: {
|
|
17
21
|
text: string;
|
|
18
22
|
hint?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeBarSegment.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"RuntimeBarSegment.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,qBAAqB,mDACgB,CAAC;AACnD,eAAO,MAAM,iBAAiB,yFAC0D,CAAC;AAOzF,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAgB,EAChB,WAAmB,EACnB,SAAS,EACT,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BA8BA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,WAAmB,GACpB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,+BAYA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,OAAe,GAChB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,+BA2BA"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useContext } from "react";
|
|
2
3
|
import { cn } from "../../lib/utils.js";
|
|
3
4
|
import { DropdownMenu } from "../../overlay/DropdownMenu.js";
|
|
4
5
|
import { Icon } from "../Icon.js";
|
|
5
|
-
import {
|
|
6
|
+
import { RuntimeBarVariantContext } from "./RuntimeBar.context.js";
|
|
6
7
|
import { UiCheck } from "../../icons/components/UiCheck.js";
|
|
8
|
+
import { UiChevronDown } from "../../icons/components/UiChevronDown.js";
|
|
7
9
|
const SEGMENT_CAPTION_CLASS = "truncate text-xs font-semibold text-foreground";
|
|
8
10
|
const SEGMENT_KEY_CLASS = "text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground";
|
|
9
11
|
function RuntimeSegment({
|
|
@@ -16,6 +18,7 @@ function RuntimeSegment({
|
|
|
16
18
|
className,
|
|
17
19
|
children
|
|
18
20
|
}) {
|
|
21
|
+
const variant = useContext(RuntimeBarVariantContext);
|
|
19
22
|
return /* @__PURE__ */ jsx(
|
|
20
23
|
DropdownMenu,
|
|
21
24
|
{
|
|
@@ -23,33 +26,40 @@ function RuntimeSegment({
|
|
|
23
26
|
menuLabel,
|
|
24
27
|
items,
|
|
25
28
|
...header ? { header } : {},
|
|
26
|
-
menuClassName: "min-w-56 max-w-80",
|
|
29
|
+
menuClassName: "max-h-[70vh] min-w-56 max-w-80 overflow-y-auto",
|
|
27
30
|
className: cn(
|
|
28
|
-
"
|
|
31
|
+
"h-control-h min-w-0 [&>span]:min-w-0 [&>span]:w-full",
|
|
32
|
+
variant === "combo" ? "rounded-md border border-input bg-background" : "border-l border-border first:border-l-0",
|
|
29
33
|
className
|
|
30
34
|
),
|
|
31
|
-
trigger: /* @__PURE__ */
|
|
35
|
+
trigger: /* @__PURE__ */ jsx(
|
|
32
36
|
"button",
|
|
33
37
|
{
|
|
34
38
|
type: "button",
|
|
35
39
|
disabled,
|
|
36
40
|
title,
|
|
37
41
|
className: "inline-flex h-full w-full min-w-0 items-center gap-1.5 px-density-2 transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring [[aria-expanded=true]_&]:bg-muted",
|
|
38
|
-
children:
|
|
39
|
-
children,
|
|
40
|
-
!hideChevron && /* @__PURE__ */ jsx(
|
|
41
|
-
Icon,
|
|
42
|
-
{
|
|
43
|
-
icon: UiChevronDown,
|
|
44
|
-
className: "size-3 shrink-0 text-muted-foreground/70"
|
|
45
|
-
}
|
|
46
|
-
)
|
|
47
|
-
]
|
|
42
|
+
children: /* @__PURE__ */ jsx(RuntimeSegmentCaption, { hideChevron, children })
|
|
48
43
|
}
|
|
49
44
|
)
|
|
50
45
|
}
|
|
51
46
|
);
|
|
52
47
|
}
|
|
48
|
+
function RuntimeSegmentCaption({
|
|
49
|
+
children,
|
|
50
|
+
hideChevron = false
|
|
51
|
+
}) {
|
|
52
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
53
|
+
children,
|
|
54
|
+
!hideChevron && /* @__PURE__ */ jsx(
|
|
55
|
+
Icon,
|
|
56
|
+
{
|
|
57
|
+
icon: UiChevronDown,
|
|
58
|
+
className: "size-3 shrink-0 text-muted-foreground/70"
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
] });
|
|
62
|
+
}
|
|
53
63
|
function SegmentItemLabel({
|
|
54
64
|
text,
|
|
55
65
|
hint,
|
|
@@ -76,6 +86,7 @@ function SegmentItemLabel({
|
|
|
76
86
|
}
|
|
77
87
|
export {
|
|
78
88
|
RuntimeSegment,
|
|
89
|
+
RuntimeSegmentCaption,
|
|
79
90
|
SEGMENT_CAPTION_CLASS,
|
|
80
91
|
SEGMENT_KEY_CLASS,
|
|
81
92
|
SegmentItemLabel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeBarSegment.js","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"RuntimeBarSegment.js","sources":["../../../src/data/runtime/RuntimeBarSegment.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { UiCheck, UiChevronDown } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DropdownMenu,\n type DropdownMenuItem,\n} from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\n\nexport const SEGMENT_CAPTION_CLASS =\n \"truncate text-xs font-semibold text-foreground\";\nexport const SEGMENT_KEY_CLASS =\n \"text-[11px] font-semibold uppercase leading-none tracking-wide text-muted-foreground\";\n\n// One trigger in the segmented runtime bar: a dropdown whose button carries the\n// segment's current value. `min-w-0` on the root lets a segment shrink past its\n// content — without it the flex item's automatic minimum size is its max-content\n// width, so a row of segments overflows a narrow container instead of ellipsing\n// its captions.\nexport function RuntimeSegment({\n items,\n menuLabel,\n title,\n header,\n disabled = false,\n hideChevron = false,\n className,\n children,\n}: {\n items: DropdownMenuItem[];\n menuLabel: string;\n title: string;\n header?: ReactNode;\n disabled?: boolean;\n /** Drops the trailing chevron, for a segment whose caption is a bare glyph. */\n hideChevron?: boolean;\n className?: string | undefined;\n children: ReactNode;\n}) {\n const variant = useContext(RuntimeBarVariantContext);\n return (\n <DropdownMenu\n align=\"left\"\n menuLabel={menuLabel}\n items={items}\n {...(header ? { header } : {})}\n menuClassName=\"max-h-[70vh] min-w-56 max-w-80 overflow-y-auto\"\n className={cn(\n \"h-control-h min-w-0 [&>span]:min-w-0 [&>span]:w-full\",\n variant === \"combo\"\n ? \"rounded-md border border-input bg-background\"\n : \"border-l border-border first:border-l-0\",\n className,\n )}\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n title={title}\n className=\"inline-flex h-full w-full min-w-0 items-center gap-1.5 px-density-2 transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring [[aria-expanded=true]_&]:bg-muted\"\n >\n <RuntimeSegmentCaption hideChevron={hideChevron}>\n {children}\n </RuntimeSegmentCaption>\n </button>\n }\n />\n );\n}\n\nexport function RuntimeSegmentCaption({\n children,\n hideChevron = false,\n}: {\n children: ReactNode;\n hideChevron?: boolean;\n}) {\n return (\n <>\n {children}\n {!hideChevron && (\n <Icon\n icon={UiChevronDown}\n className=\"size-3 shrink-0 text-muted-foreground/70\"\n />\n )}\n </>\n );\n}\n\nexport function SegmentItemLabel({\n text,\n hint,\n selected,\n stacked = false,\n}: {\n text: string;\n hint?: string | undefined;\n selected: boolean;\n stacked?: boolean | undefined;\n}) {\n return (\n <>\n <span className=\"min-w-0 flex-1\">\n <span className={cn(\"block truncate\", selected && \"font-semibold\")}>\n {text}\n </span>\n {hint && stacked && (\n <span className=\"block whitespace-normal text-[11px] leading-4 text-muted-foreground\">\n {hint}\n </span>\n )}\n </span>\n {hint && !stacked && (\n <span className=\"shrink-0 text-[11px] text-muted-foreground\">\n {hint}\n </span>\n )}\n <Icon\n icon={UiCheck}\n className={cn(\n \"size-3.5 shrink-0 text-primary\",\n !selected && \"invisible\",\n )}\n />\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAUO,MAAM,wBACX;AACK,MAAM,oBACX;AAOK,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EACA;AACF,GAUG;AACD,QAAM,UAAU,WAAW,wBAAwB;AACnD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN;AAAA,MACA;AAAA,MACC,GAAI,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,MAC3B,eAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA,YAAY,UACR,iDACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAEF,SACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UAEV,UAAA,oBAAC,uBAAA,EAAsB,aACpB,SAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIR;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,cAAc;AAChB,GAGG;AACD,SACE,qBAAA,UAAA,EACG,UAAA;AAAA,IAAA;AAAA,IACA,CAAC,eACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GAEJ;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,qBAAC,QAAA,EAAK,WAAU,kBACd,UAAA;AAAA,MAAA,oBAAC,UAAK,WAAW,GAAG,kBAAkB,YAAY,eAAe,GAC9D,UAAA,MACH;AAAA,MACC,QAAQ,WACP,oBAAC,QAAA,EAAK,WAAU,uEACb,UAAA,KAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IACC,QAAQ,CAAC,+BACP,QAAA,EAAK,WAAU,8CACb,UAAA,MACH;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAW;AAAA,UACT;AAAA,UACA,CAAC,YAAY;AAAA,QAAA;AAAA,MACf;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
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 InputField = require("../../components/InputField.cjs");
|
|
6
|
+
function RuntimeLimitInput({
|
|
7
|
+
inputLabel,
|
|
8
|
+
text,
|
|
9
|
+
placeholder,
|
|
10
|
+
parse,
|
|
11
|
+
current,
|
|
12
|
+
onChange
|
|
13
|
+
}) {
|
|
14
|
+
const [draft, setDraft] = react.useState();
|
|
15
|
+
const shown = draft ?? text;
|
|
16
|
+
const invalid = shown.trim() !== "" && parse(shown) === void 0;
|
|
17
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18
|
+
InputField.InputField,
|
|
19
|
+
{
|
|
20
|
+
value: shown,
|
|
21
|
+
"aria-label": inputLabel,
|
|
22
|
+
placeholder,
|
|
23
|
+
invalid,
|
|
24
|
+
onFocus: () => setDraft(text),
|
|
25
|
+
onBlur: () => setDraft(void 0),
|
|
26
|
+
onChange: (next) => {
|
|
27
|
+
setDraft(next);
|
|
28
|
+
if (next.trim() === "") {
|
|
29
|
+
if (current !== void 0) onChange(void 0);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const parsed = parse(next);
|
|
33
|
+
if (parsed !== void 0) onChange(parsed);
|
|
34
|
+
},
|
|
35
|
+
inputClassName: "font-mono text-xs",
|
|
36
|
+
className: "bg-background"
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
exports.RuntimeLimitInput = RuntimeLimitInput;
|
|
41
|
+
//# sourceMappingURL=RuntimeLimitInput.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeLimitInput.cjs","sources":["../../../src/data/runtime/RuntimeLimitInput.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InputField } from \"../../components/InputField\";\n\nexport function RuntimeLimitInput<V extends string | number>({\n inputLabel,\n text,\n placeholder,\n parse,\n current,\n onChange,\n}: {\n inputLabel: string;\n text: string;\n placeholder: string;\n parse: (text: string) => V | undefined;\n current: string | undefined;\n onChange: (next: V | undefined) => void;\n}) {\n const [draft, setDraft] = useState<string>();\n const shown = draft ?? text;\n const invalid = shown.trim() !== \"\" && parse(shown) === undefined;\n return (\n <InputField\n value={shown}\n aria-label={inputLabel}\n placeholder={placeholder}\n invalid={invalid}\n onFocus={() => setDraft(text)}\n onBlur={() => setDraft(undefined)}\n onChange={(next) => {\n setDraft(next);\n if (next.trim() === \"\") {\n if (current !== undefined) onChange(undefined);\n return;\n }\n const parsed = parse(next);\n if (parsed !== undefined) onChange(parsed);\n }}\n inputClassName=\"font-mono text-xs\"\n className=\"bg-background\"\n />\n );\n}\n"],"names":["useState","jsx","InputField"],"mappings":";;;;;AAGO,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,CAAC,OAAO,QAAQ,IAAIA,eAAA;AAC1B,QAAM,QAAQ,SAAS;AACvB,QAAM,UAAU,MAAM,KAAA,MAAW,MAAM,MAAM,KAAK,MAAM;AACxD,SACEC,2BAAAA;AAAAA,IAACC,WAAAA;AAAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,cAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,IAAI;AAAA,MAC5B,QAAQ,MAAM,SAAS,MAAS;AAAA,MAChC,UAAU,CAAC,SAAS;AAClB,iBAAS,IAAI;AACb,YAAI,KAAK,KAAA,MAAW,IAAI;AACtB,cAAI,YAAY,OAAW,UAAS,MAAS;AAC7C;AAAA,QACF;AACA,cAAM,SAAS,MAAM,IAAI;AACzB,YAAI,WAAW,OAAW,UAAS,MAAM;AAAA,MAC3C;AAAA,MACA,gBAAe;AAAA,MACf,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function RuntimeLimitInput<V extends string | number>({ inputLabel, text, placeholder, parse, current, onChange, }: {
|
|
2
|
+
inputLabel: string;
|
|
3
|
+
text: string;
|
|
4
|
+
placeholder: string;
|
|
5
|
+
parse: (text: string) => V | undefined;
|
|
6
|
+
current: string | undefined;
|
|
7
|
+
onChange: (next: V | undefined) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=RuntimeLimitInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeLimitInput.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeLimitInput.tsx"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC3D,UAAU,EACV,IAAI,EACJ,WAAW,EACX,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;CACzC,+BAyBA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { InputField } from "../../components/InputField.js";
|
|
4
|
+
function RuntimeLimitInput({
|
|
5
|
+
inputLabel,
|
|
6
|
+
text,
|
|
7
|
+
placeholder,
|
|
8
|
+
parse,
|
|
9
|
+
current,
|
|
10
|
+
onChange
|
|
11
|
+
}) {
|
|
12
|
+
const [draft, setDraft] = useState();
|
|
13
|
+
const shown = draft ?? text;
|
|
14
|
+
const invalid = shown.trim() !== "" && parse(shown) === void 0;
|
|
15
|
+
return /* @__PURE__ */ jsx(
|
|
16
|
+
InputField,
|
|
17
|
+
{
|
|
18
|
+
value: shown,
|
|
19
|
+
"aria-label": inputLabel,
|
|
20
|
+
placeholder,
|
|
21
|
+
invalid,
|
|
22
|
+
onFocus: () => setDraft(text),
|
|
23
|
+
onBlur: () => setDraft(void 0),
|
|
24
|
+
onChange: (next) => {
|
|
25
|
+
setDraft(next);
|
|
26
|
+
if (next.trim() === "") {
|
|
27
|
+
if (current !== void 0) onChange(void 0);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const parsed = parse(next);
|
|
31
|
+
if (parsed !== void 0) onChange(parsed);
|
|
32
|
+
},
|
|
33
|
+
inputClassName: "font-mono text-xs",
|
|
34
|
+
className: "bg-background"
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
RuntimeLimitInput
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=RuntimeLimitInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeLimitInput.js","sources":["../../../src/data/runtime/RuntimeLimitInput.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InputField } from \"../../components/InputField\";\n\nexport function RuntimeLimitInput<V extends string | number>({\n inputLabel,\n text,\n placeholder,\n parse,\n current,\n onChange,\n}: {\n inputLabel: string;\n text: string;\n placeholder: string;\n parse: (text: string) => V | undefined;\n current: string | undefined;\n onChange: (next: V | undefined) => void;\n}) {\n const [draft, setDraft] = useState<string>();\n const shown = draft ?? text;\n const invalid = shown.trim() !== \"\" && parse(shown) === undefined;\n return (\n <InputField\n value={shown}\n aria-label={inputLabel}\n placeholder={placeholder}\n invalid={invalid}\n onFocus={() => setDraft(text)}\n onBlur={() => setDraft(undefined)}\n onChange={(next) => {\n setDraft(next);\n if (next.trim() === \"\") {\n if (current !== undefined) onChange(undefined);\n return;\n }\n const parsed = parse(next);\n if (parsed !== undefined) onChange(parsed);\n }}\n inputClassName=\"font-mono text-xs\"\n className=\"bg-background\"\n />\n );\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,kBAA6C;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAA;AAC1B,QAAM,QAAQ,SAAS;AACvB,QAAM,UAAU,MAAM,KAAA,MAAW,MAAM,MAAM,KAAK,MAAM;AACxD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,cAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,SAAS,MAAM,SAAS,IAAI;AAAA,MAC5B,QAAQ,MAAM,SAAS,MAAS;AAAA,MAChC,UAAU,CAAC,SAAS;AAClB,iBAAS,IAAI;AACb,YAAI,KAAK,KAAA,MAAW,IAAI;AACtB,cAAI,YAAY,OAAW,UAAS,MAAS;AAC7C;AAAA,QACF;AACA,cAAM,SAAS,MAAM,IAAI;AACzB,YAAI,WAAW,OAAW,UAAS,MAAM;AAAA,MAC3C;AAAA,MACA,gBAAe;AAAA,MACf,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
function runtimeBarInlineCount({
|
|
5
|
+
width,
|
|
6
|
+
identity,
|
|
7
|
+
trigger,
|
|
8
|
+
fields,
|
|
9
|
+
gap
|
|
10
|
+
}) {
|
|
11
|
+
let occupied = identity + trigger + gap;
|
|
12
|
+
let count = 0;
|
|
13
|
+
for (const field of fields) {
|
|
14
|
+
occupied += field + gap;
|
|
15
|
+
if (occupied > width) break;
|
|
16
|
+
count++;
|
|
17
|
+
}
|
|
18
|
+
return count;
|
|
19
|
+
}
|
|
20
|
+
function useRuntimeBarOverflow() {
|
|
21
|
+
const [container, setContainer] = react.useState(null);
|
|
22
|
+
const [measurement, setMeasurement] = react.useState(null);
|
|
23
|
+
const [visibleCount, setVisibleCount] = react.useState(Infinity);
|
|
24
|
+
const measure = react.useCallback(() => {
|
|
25
|
+
if (!container || !measurement) return;
|
|
26
|
+
const width = container.getBoundingClientRect().width;
|
|
27
|
+
if (width <= 0) return;
|
|
28
|
+
const [identity, ...controls] = [...measurement.children];
|
|
29
|
+
const trigger = controls.pop();
|
|
30
|
+
if (!identity || !trigger)
|
|
31
|
+
throw new Error(
|
|
32
|
+
"Runtime bar measurement requires identity and a menu trigger"
|
|
33
|
+
);
|
|
34
|
+
const spacing = getComputedStyle(measurement).columnGap;
|
|
35
|
+
const gap = spacing === "normal" || spacing === "" ? 0 : Number.parseFloat(spacing);
|
|
36
|
+
if (!Number.isFinite(gap))
|
|
37
|
+
throw new Error(`Invalid runtime bar spacing: ${spacing}`);
|
|
38
|
+
const count = runtimeBarInlineCount({
|
|
39
|
+
width: width - 2,
|
|
40
|
+
identity: identity.getBoundingClientRect().width,
|
|
41
|
+
trigger: trigger.getBoundingClientRect().width,
|
|
42
|
+
fields: controls.map((node) => node.getBoundingClientRect().width),
|
|
43
|
+
gap
|
|
44
|
+
});
|
|
45
|
+
setVisibleCount((previous) => previous === count ? previous : count);
|
|
46
|
+
}, [container, measurement]);
|
|
47
|
+
react.useLayoutEffect(() => {
|
|
48
|
+
measure();
|
|
49
|
+
});
|
|
50
|
+
react.useLayoutEffect(() => {
|
|
51
|
+
if (!container || !measurement) return;
|
|
52
|
+
measure();
|
|
53
|
+
const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(measure);
|
|
54
|
+
observer == null ? void 0 : observer.observe(container);
|
|
55
|
+
observer == null ? void 0 : observer.observe(measurement);
|
|
56
|
+
window.addEventListener("resize", measure);
|
|
57
|
+
return () => {
|
|
58
|
+
observer == null ? void 0 : observer.disconnect();
|
|
59
|
+
window.removeEventListener("resize", measure);
|
|
60
|
+
};
|
|
61
|
+
}, [container, measurement, measure]);
|
|
62
|
+
return {
|
|
63
|
+
containerRef: setContainer,
|
|
64
|
+
measurementRef: setMeasurement,
|
|
65
|
+
visibleCount
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
exports.runtimeBarInlineCount = runtimeBarInlineCount;
|
|
69
|
+
exports.useRuntimeBarOverflow = useRuntimeBarOverflow;
|
|
70
|
+
//# sourceMappingURL=use-runtime-bar-overflow.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-runtime-bar-overflow.cjs","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useState } from \"react\";\n\nexport function runtimeBarInlineCount({\n width,\n identity,\n trigger,\n fields,\n gap,\n}: {\n width: number;\n identity: number;\n trigger: number;\n fields: number[];\n gap: number;\n}) {\n let occupied = identity + trigger + gap;\n let count = 0;\n for (const field of fields) {\n occupied += field + gap;\n if (occupied > width) break;\n count++;\n }\n return count;\n}\n\nexport function useRuntimeBarOverflow() {\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const [measurement, setMeasurement] = useState<HTMLDivElement | null>(null);\n const [visibleCount, setVisibleCount] = useState(Infinity);\n\n const measure = useCallback(() => {\n if (!container || !measurement) return;\n const width = container.getBoundingClientRect().width;\n if (width <= 0) return;\n const [identity, ...controls] = [...measurement.children];\n const trigger = controls.pop();\n if (!identity || !trigger)\n throw new Error(\n \"Runtime bar measurement requires identity and a menu trigger\",\n );\n const spacing = getComputedStyle(measurement).columnGap;\n const gap =\n spacing === \"normal\" || spacing === \"\" ? 0 : Number.parseFloat(spacing);\n if (!Number.isFinite(gap))\n throw new Error(`Invalid runtime bar spacing: ${spacing}`);\n const count = runtimeBarInlineCount({\n width: width - 2,\n identity: identity.getBoundingClientRect().width,\n trigger: trigger.getBoundingClientRect().width,\n fields: controls.map((node) => node.getBoundingClientRect().width),\n gap,\n });\n setVisibleCount((previous) => (previous === count ? previous : count));\n }, [container, measurement]);\n\n useLayoutEffect(() => {\n measure();\n });\n\n useLayoutEffect(() => {\n if (!container || !measurement) return;\n measure();\n const observer =\n typeof ResizeObserver === \"undefined\"\n ? undefined\n : new ResizeObserver(measure);\n observer?.observe(container);\n observer?.observe(measurement);\n window.addEventListener(\"resize\", measure);\n return () => {\n observer?.disconnect();\n window.removeEventListener(\"resize\", measure);\n };\n }, [container, measurement, measure]);\n\n return {\n containerRef: setContainer,\n measurementRef: setMeasurement,\n visibleCount,\n };\n}\n"],"names":["useState","useCallback","useLayoutEffect"],"mappings":";;;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,MAAI,WAAW,WAAW,UAAU;AACpC,MAAI,QAAQ;AACZ,aAAW,SAAS,QAAQ;AAC1B,gBAAY,QAAQ;AACpB,QAAI,WAAW,MAAO;AACtB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB;AACtC,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAgC,IAAI;AACtE,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAgC,IAAI;AAC1E,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAS,QAAQ;AAEzD,QAAM,UAAUC,MAAAA,YAAY,MAAM;AAChC,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,UAAM,QAAQ,UAAU,sBAAA,EAAwB;AAChD,QAAI,SAAS,EAAG;AAChB,UAAM,CAAC,UAAU,GAAG,QAAQ,IAAI,CAAC,GAAG,YAAY,QAAQ;AACxD,UAAM,UAAU,SAAS,IAAA;AACzB,QAAI,CAAC,YAAY,CAAC;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAEJ,UAAM,UAAU,iBAAiB,WAAW,EAAE;AAC9C,UAAM,MACJ,YAAY,YAAY,YAAY,KAAK,IAAI,OAAO,WAAW,OAAO;AACxE,QAAI,CAAC,OAAO,SAAS,GAAG;AACtB,YAAM,IAAI,MAAM,gCAAgC,OAAO,EAAE;AAC3D,UAAM,QAAQ,sBAAsB;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,UAAU,SAAS,sBAAA,EAAwB;AAAA,MAC3C,SAAS,QAAQ,sBAAA,EAAwB;AAAA,MACzC,QAAQ,SAAS,IAAI,CAAC,SAAS,KAAK,sBAAA,EAAwB,KAAK;AAAA,MACjE;AAAA,IAAA,CACD;AACD,oBAAgB,CAAC,aAAc,aAAa,QAAQ,WAAW,KAAM;AAAA,EACvE,GAAG,CAAC,WAAW,WAAW,CAAC;AAE3BC,QAAAA,gBAAgB,MAAM;AACpB,YAAA;AAAA,EACF,CAAC;AAEDA,QAAAA,gBAAgB,MAAM;AACpB,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,YAAA;AACA,UAAM,WACJ,OAAO,mBAAmB,cACtB,SACA,IAAI,eAAe,OAAO;AAChC,yCAAU,QAAQ;AAClB,yCAAU,QAAQ;AAClB,WAAO,iBAAiB,UAAU,OAAO;AACzC,WAAO,MAAM;AACX,2CAAU;AACV,aAAO,oBAAoB,UAAU,OAAO;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,WAAW,aAAa,OAAO,CAAC;AAEpC,SAAO;AAAA,IACL,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB;AAAA,EAAA;AAEJ;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function runtimeBarInlineCount({ width, identity, trigger, fields, gap, }: {
|
|
2
|
+
width: number;
|
|
3
|
+
identity: number;
|
|
4
|
+
trigger: number;
|
|
5
|
+
fields: number[];
|
|
6
|
+
gap: number;
|
|
7
|
+
}): number;
|
|
8
|
+
export declare function useRuntimeBarOverflow(): {
|
|
9
|
+
containerRef: import('react').Dispatch<import('react').SetStateAction<HTMLDivElement | null>>;
|
|
10
|
+
measurementRef: import('react').Dispatch<import('react').SetStateAction<HTMLDivElement | null>>;
|
|
11
|
+
visibleCount: number;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=use-runtime-bar-overflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-runtime-bar-overflow.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,GAAG,GACJ,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,UASA;AAED,wBAAgB,qBAAqB;;;;EAuDpC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useState, useCallback, useLayoutEffect } from "react";
|
|
2
|
+
function runtimeBarInlineCount({
|
|
3
|
+
width,
|
|
4
|
+
identity,
|
|
5
|
+
trigger,
|
|
6
|
+
fields,
|
|
7
|
+
gap
|
|
8
|
+
}) {
|
|
9
|
+
let occupied = identity + trigger + gap;
|
|
10
|
+
let count = 0;
|
|
11
|
+
for (const field of fields) {
|
|
12
|
+
occupied += field + gap;
|
|
13
|
+
if (occupied > width) break;
|
|
14
|
+
count++;
|
|
15
|
+
}
|
|
16
|
+
return count;
|
|
17
|
+
}
|
|
18
|
+
function useRuntimeBarOverflow() {
|
|
19
|
+
const [container, setContainer] = useState(null);
|
|
20
|
+
const [measurement, setMeasurement] = useState(null);
|
|
21
|
+
const [visibleCount, setVisibleCount] = useState(Infinity);
|
|
22
|
+
const measure = useCallback(() => {
|
|
23
|
+
if (!container || !measurement) return;
|
|
24
|
+
const width = container.getBoundingClientRect().width;
|
|
25
|
+
if (width <= 0) return;
|
|
26
|
+
const [identity, ...controls] = [...measurement.children];
|
|
27
|
+
const trigger = controls.pop();
|
|
28
|
+
if (!identity || !trigger)
|
|
29
|
+
throw new Error(
|
|
30
|
+
"Runtime bar measurement requires identity and a menu trigger"
|
|
31
|
+
);
|
|
32
|
+
const spacing = getComputedStyle(measurement).columnGap;
|
|
33
|
+
const gap = spacing === "normal" || spacing === "" ? 0 : Number.parseFloat(spacing);
|
|
34
|
+
if (!Number.isFinite(gap))
|
|
35
|
+
throw new Error(`Invalid runtime bar spacing: ${spacing}`);
|
|
36
|
+
const count = runtimeBarInlineCount({
|
|
37
|
+
width: width - 2,
|
|
38
|
+
identity: identity.getBoundingClientRect().width,
|
|
39
|
+
trigger: trigger.getBoundingClientRect().width,
|
|
40
|
+
fields: controls.map((node) => node.getBoundingClientRect().width),
|
|
41
|
+
gap
|
|
42
|
+
});
|
|
43
|
+
setVisibleCount((previous) => previous === count ? previous : count);
|
|
44
|
+
}, [container, measurement]);
|
|
45
|
+
useLayoutEffect(() => {
|
|
46
|
+
measure();
|
|
47
|
+
});
|
|
48
|
+
useLayoutEffect(() => {
|
|
49
|
+
if (!container || !measurement) return;
|
|
50
|
+
measure();
|
|
51
|
+
const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(measure);
|
|
52
|
+
observer == null ? void 0 : observer.observe(container);
|
|
53
|
+
observer == null ? void 0 : observer.observe(measurement);
|
|
54
|
+
window.addEventListener("resize", measure);
|
|
55
|
+
return () => {
|
|
56
|
+
observer == null ? void 0 : observer.disconnect();
|
|
57
|
+
window.removeEventListener("resize", measure);
|
|
58
|
+
};
|
|
59
|
+
}, [container, measurement, measure]);
|
|
60
|
+
return {
|
|
61
|
+
containerRef: setContainer,
|
|
62
|
+
measurementRef: setMeasurement,
|
|
63
|
+
visibleCount
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
runtimeBarInlineCount,
|
|
68
|
+
useRuntimeBarOverflow
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=use-runtime-bar-overflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-runtime-bar-overflow.js","sources":["../../../src/data/runtime/use-runtime-bar-overflow.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useState } from \"react\";\n\nexport function runtimeBarInlineCount({\n width,\n identity,\n trigger,\n fields,\n gap,\n}: {\n width: number;\n identity: number;\n trigger: number;\n fields: number[];\n gap: number;\n}) {\n let occupied = identity + trigger + gap;\n let count = 0;\n for (const field of fields) {\n occupied += field + gap;\n if (occupied > width) break;\n count++;\n }\n return count;\n}\n\nexport function useRuntimeBarOverflow() {\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const [measurement, setMeasurement] = useState<HTMLDivElement | null>(null);\n const [visibleCount, setVisibleCount] = useState(Infinity);\n\n const measure = useCallback(() => {\n if (!container || !measurement) return;\n const width = container.getBoundingClientRect().width;\n if (width <= 0) return;\n const [identity, ...controls] = [...measurement.children];\n const trigger = controls.pop();\n if (!identity || !trigger)\n throw new Error(\n \"Runtime bar measurement requires identity and a menu trigger\",\n );\n const spacing = getComputedStyle(measurement).columnGap;\n const gap =\n spacing === \"normal\" || spacing === \"\" ? 0 : Number.parseFloat(spacing);\n if (!Number.isFinite(gap))\n throw new Error(`Invalid runtime bar spacing: ${spacing}`);\n const count = runtimeBarInlineCount({\n width: width - 2,\n identity: identity.getBoundingClientRect().width,\n trigger: trigger.getBoundingClientRect().width,\n fields: controls.map((node) => node.getBoundingClientRect().width),\n gap,\n });\n setVisibleCount((previous) => (previous === count ? previous : count));\n }, [container, measurement]);\n\n useLayoutEffect(() => {\n measure();\n });\n\n useLayoutEffect(() => {\n if (!container || !measurement) return;\n measure();\n const observer =\n typeof ResizeObserver === \"undefined\"\n ? undefined\n : new ResizeObserver(measure);\n observer?.observe(container);\n observer?.observe(measurement);\n window.addEventListener(\"resize\", measure);\n return () => {\n observer?.disconnect();\n window.removeEventListener(\"resize\", measure);\n };\n }, [container, measurement, measure]);\n\n return {\n containerRef: setContainer,\n measurementRef: setMeasurement,\n visibleCount,\n };\n}\n"],"names":[],"mappings":";AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,MAAI,WAAW,WAAW,UAAU;AACpC,MAAI,QAAQ;AACZ,aAAW,SAAS,QAAQ;AAC1B,gBAAY,QAAQ;AACpB,QAAI,WAAW,MAAO;AACtB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB;AACtC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgC,IAAI;AACtE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAgC,IAAI;AAC1E,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,QAAQ;AAEzD,QAAM,UAAU,YAAY,MAAM;AAChC,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,UAAM,QAAQ,UAAU,sBAAA,EAAwB;AAChD,QAAI,SAAS,EAAG;AAChB,UAAM,CAAC,UAAU,GAAG,QAAQ,IAAI,CAAC,GAAG,YAAY,QAAQ;AACxD,UAAM,UAAU,SAAS,IAAA;AACzB,QAAI,CAAC,YAAY,CAAC;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAEJ,UAAM,UAAU,iBAAiB,WAAW,EAAE;AAC9C,UAAM,MACJ,YAAY,YAAY,YAAY,KAAK,IAAI,OAAO,WAAW,OAAO;AACxE,QAAI,CAAC,OAAO,SAAS,GAAG;AACtB,YAAM,IAAI,MAAM,gCAAgC,OAAO,EAAE;AAC3D,UAAM,QAAQ,sBAAsB;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,UAAU,SAAS,sBAAA,EAAwB;AAAA,MAC3C,SAAS,QAAQ,sBAAA,EAAwB;AAAA,MACzC,QAAQ,SAAS,IAAI,CAAC,SAAS,KAAK,sBAAA,EAAwB,KAAK;AAAA,MACjE;AAAA,IAAA,CACD;AACD,oBAAgB,CAAC,aAAc,aAAa,QAAQ,WAAW,KAAM;AAAA,EACvE,GAAG,CAAC,WAAW,WAAW,CAAC;AAE3B,kBAAgB,MAAM;AACpB,YAAA;AAAA,EACF,CAAC;AAED,kBAAgB,MAAM;AACpB,QAAI,CAAC,aAAa,CAAC,YAAa;AAChC,YAAA;AACA,UAAM,WACJ,OAAO,mBAAmB,cACtB,SACA,IAAI,eAAe,OAAO;AAChC,yCAAU,QAAQ;AAClB,yCAAU,QAAQ;AAClB,WAAO,iBAAiB,UAAU,OAAO;AACzC,WAAO,MAAM;AACX,2CAAU;AACV,aAAO,oBAAoB,UAAU,OAAO;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,WAAW,aAAa,OAAO,CAAC;AAEpC,SAAO;AAAA,IACL,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const graphDiagramModel = require("./graph-diagram-model.cjs");
|
|
5
|
+
function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }) {
|
|
6
|
+
const [hoveredNode, setHoveredNode] = react.useState();
|
|
7
|
+
const [hoveredEdge, setHoveredEdge] = react.useState();
|
|
8
|
+
const on = graphDiagramModel.edgeFocusOn(mode, edges.length);
|
|
9
|
+
const state = react.useMemo(
|
|
10
|
+
() => on ? {
|
|
11
|
+
focused: graphDiagramModel.focusedEdgeIds(edges, { nodes: [selectedId, hoveredNode], edges: [selectedEdgeId, hoveredEdge] }),
|
|
12
|
+
pinned: graphDiagramModel.focusedEdgeIds(edges, { nodes: [selectedId], edges: [selectedEdgeId] }),
|
|
13
|
+
nodes: new Set([selectedId, hoveredNode].filter((id) => id !== void 0))
|
|
14
|
+
} : void 0,
|
|
15
|
+
[on, edges, selectedId, selectedEdgeId, hoveredNode, hoveredEdge]
|
|
16
|
+
);
|
|
17
|
+
return { state, onNodeHover: on ? setHoveredNode : void 0, onEdgeHover: on ? setHoveredEdge : void 0 };
|
|
18
|
+
}
|
|
19
|
+
exports.useEdgeFocus = useEdgeFocus;
|
|
20
|
+
//# sourceMappingURL=use-edge-focus.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-edge-focus.cjs","sources":["../../src/data/use-edge-focus.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { edgeFocusOn, focusedEdgeIds, type GraphDiagramEdge, type GraphDiagramEdgeFocus } from \"./graph-diagram-model\";\n\nexport interface EdgeFocusState {\n /** Every edge in focus, by selection or by hover. Empty when nothing is. */\n focused: ReadonlySet<string>;\n /** The edges the selection put in focus. Their pills stay put, so they take the pointer. */\n pinned: ReadonlySet<string>;\n /** The nodes in focus: the selected one and the hovered one. */\n nodes: ReadonlySet<string>;\n}\n\nexport interface EdgeFocus {\n /** Undefined when the diagram is not focused: every edge then draws in full, with its pill. */\n state: EdgeFocusState | undefined;\n onNodeHover: ((id: string | undefined) => void) | undefined;\n onEdgeHover: ((id: string | undefined) => void) | undefined;\n}\n\nexport interface UseEdgeFocusOptions {\n mode: GraphDiagramEdgeFocus;\n edges: readonly GraphDiagramEdge[];\n selectedId: string | undefined;\n selectedEdgeId: string | undefined;\n}\n\nexport function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }: UseEdgeFocusOptions): EdgeFocus {\n const [hoveredNode, setHoveredNode] = useState<string>();\n const [hoveredEdge, setHoveredEdge] = useState<string>();\n const on = edgeFocusOn(mode, edges.length);\n const state = useMemo(\n () =>\n on\n ? {\n focused: focusedEdgeIds(edges, { nodes: [selectedId, hoveredNode], edges: [selectedEdgeId, hoveredEdge] }),\n pinned: focusedEdgeIds(edges, { nodes: [selectedId], edges: [selectedEdgeId] }),\n nodes: new Set([selectedId, hoveredNode].filter((id): id is string => id !== undefined)),\n }\n : undefined,\n [on, edges, selectedId, selectedEdgeId, hoveredNode, hoveredEdge],\n );\n return { state, onNodeHover: on ? setHoveredNode : undefined, onEdgeHover: on ? setHoveredEdge : undefined };\n}\n"],"names":["useState","edgeFocusOn","useMemo","focusedEdgeIds"],"mappings":";;;;AA0BO,SAAS,aAAa,EAAE,MAAM,OAAO,YAAY,kBAAkD;AACxG,QAAM,CAAC,aAAa,cAAc,IAAIA,eAAA;AACtC,QAAM,CAAC,aAAa,cAAc,IAAIA,eAAA;AACtC,QAAM,KAAKC,kBAAAA,YAAY,MAAM,MAAM,MAAM;AACzC,QAAM,QAAQC,MAAAA;AAAAA,IACZ,MACE,KACI;AAAA,MACE,SAASC,kBAAAA,eAAe,OAAO,EAAE,OAAO,CAAC,YAAY,WAAW,GAAG,OAAO,CAAC,gBAAgB,WAAW,GAAG;AAAA,MACzG,QAAQA,kBAAAA,eAAe,OAAO,EAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG;AAAA,MAC9E,OAAO,IAAI,IAAI,CAAC,YAAY,WAAW,EAAE,OAAO,CAAC,OAAqB,OAAO,MAAS,CAAC;AAAA,IAAA,IAEzF;AAAA,IACN,CAAC,IAAI,OAAO,YAAY,gBAAgB,aAAa,WAAW;AAAA,EAAA;AAElE,SAAO,EAAE,OAAO,aAAa,KAAK,iBAAiB,QAAW,aAAa,KAAK,iBAAiB,OAAA;AACnG;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { GraphDiagramEdge, GraphDiagramEdgeFocus } from './graph-diagram-model.js';
|
|
2
|
+
export interface EdgeFocusState {
|
|
3
|
+
/** Every edge in focus, by selection or by hover. Empty when nothing is. */
|
|
4
|
+
focused: ReadonlySet<string>;
|
|
5
|
+
/** The edges the selection put in focus. Their pills stay put, so they take the pointer. */
|
|
6
|
+
pinned: ReadonlySet<string>;
|
|
7
|
+
/** The nodes in focus: the selected one and the hovered one. */
|
|
8
|
+
nodes: ReadonlySet<string>;
|
|
9
|
+
}
|
|
10
|
+
export interface EdgeFocus {
|
|
11
|
+
/** Undefined when the diagram is not focused: every edge then draws in full, with its pill. */
|
|
12
|
+
state: EdgeFocusState | undefined;
|
|
13
|
+
onNodeHover: ((id: string | undefined) => void) | undefined;
|
|
14
|
+
onEdgeHover: ((id: string | undefined) => void) | undefined;
|
|
15
|
+
}
|
|
16
|
+
export interface UseEdgeFocusOptions {
|
|
17
|
+
mode: GraphDiagramEdgeFocus;
|
|
18
|
+
edges: readonly GraphDiagramEdge[];
|
|
19
|
+
selectedId: string | undefined;
|
|
20
|
+
selectedEdgeId: string | undefined;
|
|
21
|
+
}
|
|
22
|
+
export declare function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }: UseEdgeFocusOptions): EdgeFocus;
|
|
23
|
+
//# sourceMappingURL=use-edge-focus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-edge-focus.d.ts","sourceRoot":"","sources":["../../src/data/use-edge-focus.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEvH,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,4FAA4F;IAC5F,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,gEAAgE;IAChE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,+FAA+F;IAC/F,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5D,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,mBAAmB,GAAG,SAAS,CAgBxG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useState, useMemo } from "react";
|
|
2
|
+
import { edgeFocusOn, focusedEdgeIds } from "./graph-diagram-model.js";
|
|
3
|
+
function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }) {
|
|
4
|
+
const [hoveredNode, setHoveredNode] = useState();
|
|
5
|
+
const [hoveredEdge, setHoveredEdge] = useState();
|
|
6
|
+
const on = edgeFocusOn(mode, edges.length);
|
|
7
|
+
const state = useMemo(
|
|
8
|
+
() => on ? {
|
|
9
|
+
focused: focusedEdgeIds(edges, { nodes: [selectedId, hoveredNode], edges: [selectedEdgeId, hoveredEdge] }),
|
|
10
|
+
pinned: focusedEdgeIds(edges, { nodes: [selectedId], edges: [selectedEdgeId] }),
|
|
11
|
+
nodes: new Set([selectedId, hoveredNode].filter((id) => id !== void 0))
|
|
12
|
+
} : void 0,
|
|
13
|
+
[on, edges, selectedId, selectedEdgeId, hoveredNode, hoveredEdge]
|
|
14
|
+
);
|
|
15
|
+
return { state, onNodeHover: on ? setHoveredNode : void 0, onEdgeHover: on ? setHoveredEdge : void 0 };
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
useEdgeFocus
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=use-edge-focus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-edge-focus.js","sources":["../../src/data/use-edge-focus.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { edgeFocusOn, focusedEdgeIds, type GraphDiagramEdge, type GraphDiagramEdgeFocus } from \"./graph-diagram-model\";\n\nexport interface EdgeFocusState {\n /** Every edge in focus, by selection or by hover. Empty when nothing is. */\n focused: ReadonlySet<string>;\n /** The edges the selection put in focus. Their pills stay put, so they take the pointer. */\n pinned: ReadonlySet<string>;\n /** The nodes in focus: the selected one and the hovered one. */\n nodes: ReadonlySet<string>;\n}\n\nexport interface EdgeFocus {\n /** Undefined when the diagram is not focused: every edge then draws in full, with its pill. */\n state: EdgeFocusState | undefined;\n onNodeHover: ((id: string | undefined) => void) | undefined;\n onEdgeHover: ((id: string | undefined) => void) | undefined;\n}\n\nexport interface UseEdgeFocusOptions {\n mode: GraphDiagramEdgeFocus;\n edges: readonly GraphDiagramEdge[];\n selectedId: string | undefined;\n selectedEdgeId: string | undefined;\n}\n\nexport function useEdgeFocus({ mode, edges, selectedId, selectedEdgeId }: UseEdgeFocusOptions): EdgeFocus {\n const [hoveredNode, setHoveredNode] = useState<string>();\n const [hoveredEdge, setHoveredEdge] = useState<string>();\n const on = edgeFocusOn(mode, edges.length);\n const state = useMemo(\n () =>\n on\n ? {\n focused: focusedEdgeIds(edges, { nodes: [selectedId, hoveredNode], edges: [selectedEdgeId, hoveredEdge] }),\n pinned: focusedEdgeIds(edges, { nodes: [selectedId], edges: [selectedEdgeId] }),\n nodes: new Set([selectedId, hoveredNode].filter((id): id is string => id !== undefined)),\n }\n : undefined,\n [on, edges, selectedId, selectedEdgeId, hoveredNode, hoveredEdge],\n );\n return { state, onNodeHover: on ? setHoveredNode : undefined, onEdgeHover: on ? setHoveredEdge : undefined };\n}\n"],"names":[],"mappings":";;AA0BO,SAAS,aAAa,EAAE,MAAM,OAAO,YAAY,kBAAkD;AACxG,QAAM,CAAC,aAAa,cAAc,IAAI,SAAA;AACtC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAA;AACtC,QAAM,KAAK,YAAY,MAAM,MAAM,MAAM;AACzC,QAAM,QAAQ;AAAA,IACZ,MACE,KACI;AAAA,MACE,SAAS,eAAe,OAAO,EAAE,OAAO,CAAC,YAAY,WAAW,GAAG,OAAO,CAAC,gBAAgB,WAAW,GAAG;AAAA,MACzG,QAAQ,eAAe,OAAO,EAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG;AAAA,MAC9E,OAAO,IAAI,IAAI,CAAC,YAAY,WAAW,EAAE,OAAO,CAAC,OAAqB,OAAO,MAAS,CAAC;AAAA,IAAA,IAEzF;AAAA,IACN,CAAC,IAAI,OAAO,YAAY,gBAAgB,aAAa,WAAW;AAAA,EAAA;AAElE,SAAO,EAAE,OAAO,aAAa,KAAK,iBAAiB,QAAW,aAAa,KAAK,iBAAiB,OAAA;AACnG;"}
|