@flanksource/clicky-ui 0.3.41 → 0.3.43
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/profiles/fields/profileFieldFilterEditor.cjs +5 -2
- package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.js +5 -2
- package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.cjs +2 -0
- package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.d.ts.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.js +2 -0
- package/dist/profiles/fields/profileFieldIcons.js.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.cjs +1 -0
- package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.d.ts +3 -0
- package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.js +1 -0
- package/dist/profiles/wizard/profileWizardModel.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
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const Combobox = require("../../components/Combobox.cjs");
|
|
5
|
+
const utils = require("../../lib/utils.cjs");
|
|
6
|
+
const Icon = require("../Icon.cjs");
|
|
7
|
+
const RuntimeBar_model = require("./RuntimeBar.model.cjs");
|
|
8
|
+
const RuntimeBarSegment = require("./RuntimeBarSegment.cjs");
|
|
9
|
+
const unspecified = require("./unspecified.cjs");
|
|
10
|
+
function RuntimeBarIdentity({
|
|
11
|
+
measure = false,
|
|
12
|
+
...props
|
|
13
|
+
}) {
|
|
14
|
+
const modeCaption = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15
|
+
props.mode.icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16
|
+
Icon.Icon,
|
|
17
|
+
{
|
|
18
|
+
icon: props.mode.icon,
|
|
19
|
+
className: "size-4 shrink-0 text-muted-foreground"
|
|
20
|
+
}
|
|
21
|
+
),
|
|
22
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: RuntimeBarSegment.SEGMENT_CAPTION_CLASS, children: props.mode.label })
|
|
23
|
+
] });
|
|
24
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
"data-runtime-bar-section": measure ? void 0 : "identity",
|
|
28
|
+
className: utils.cn(
|
|
29
|
+
"flex h-control-h min-w-0 items-stretch",
|
|
30
|
+
props.variant === "combo" && "gap-1"
|
|
31
|
+
),
|
|
32
|
+
children: [
|
|
33
|
+
measure ? /* @__PURE__ */ jsxRuntime.jsx(IdentityMeasure, { variant: props.variant, children: modeCaption }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
34
|
+
RuntimeBarSegment.RuntimeSegment,
|
|
35
|
+
{
|
|
36
|
+
menuLabel: "Runtime mode",
|
|
37
|
+
title: `Runtime mode — ${props.mode.label}`,
|
|
38
|
+
disabled: props.locked,
|
|
39
|
+
className: "shrink-0",
|
|
40
|
+
items: props.modes.map((mode) => ({
|
|
41
|
+
label: mode.label,
|
|
42
|
+
...mode.icon ? { icon: mode.icon } : {},
|
|
43
|
+
onSelect: () => props.onModeChange(mode.id)
|
|
44
|
+
})),
|
|
45
|
+
children: modeCaption
|
|
46
|
+
}
|
|
47
|
+
),
|
|
48
|
+
measure ? /* @__PURE__ */ jsxRuntime.jsx(IdentityMeasure, { variant: props.variant, model: true, children: /* @__PURE__ */ jsxRuntime.jsx(ModelCaption, { ...props }) }) : /* @__PURE__ */ jsxRuntime.jsx(RuntimeModelPicker, { ...props })
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
function IdentityMeasure({
|
|
54
|
+
variant,
|
|
55
|
+
model = false,
|
|
56
|
+
children
|
|
57
|
+
}) {
|
|
58
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
59
|
+
"div",
|
|
60
|
+
{
|
|
61
|
+
className: utils.cn(
|
|
62
|
+
"flex h-control-h items-center gap-1.5 px-density-2",
|
|
63
|
+
model && "max-w-56 min-w-0",
|
|
64
|
+
variant === "combo" ? "rounded-md border border-input" : "border-l border-border first:border-l-0"
|
|
65
|
+
),
|
|
66
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(RuntimeBarSegment.RuntimeSegmentCaption, { children })
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
function ModelCaption(props) {
|
|
71
|
+
var _a;
|
|
72
|
+
const brand = RuntimeBar_model.runtimeFamilyBrand(props.family);
|
|
73
|
+
const label = props.showModel ? props.unavailable ? "Unavailable selection" : ((_a = props.selectedModel) == null ? void 0 : _a.label) ?? props.model ?? unspecified.UNSPECIFIED_LABEL : props.family.label;
|
|
74
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
75
|
+
props.showModel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
|
|
76
|
+
props.family.label,
|
|
77
|
+
" "
|
|
78
|
+
] }),
|
|
79
|
+
brand.icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
Icon.Icon,
|
|
81
|
+
{
|
|
82
|
+
icon: brand.icon,
|
|
83
|
+
className: utils.cn("size-4 shrink-0", brand.color)
|
|
84
|
+
}
|
|
85
|
+
),
|
|
86
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate font-mono text-xs font-semibold text-foreground", children: label })
|
|
87
|
+
] });
|
|
88
|
+
}
|
|
89
|
+
function RuntimeModelPicker(props) {
|
|
90
|
+
var _a;
|
|
91
|
+
const title = props.showModel ? `Model — ${props.unavailable ? "unavailable selection" : props.model || "unspecified"}` : `Family — ${props.family.label}`;
|
|
92
|
+
if (!props.showModel)
|
|
93
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
+
RuntimeBarSegment.RuntimeSegment,
|
|
95
|
+
{
|
|
96
|
+
menuLabel: "Family",
|
|
97
|
+
title,
|
|
98
|
+
disabled: props.locked,
|
|
99
|
+
className: "min-w-0 max-w-56 flex-1",
|
|
100
|
+
items: props.groups.map(({ family }) => {
|
|
101
|
+
const brand = RuntimeBar_model.runtimeFamilyBrand(family);
|
|
102
|
+
return {
|
|
103
|
+
label: family.label,
|
|
104
|
+
...brand.icon ? { icon: brand.icon } : {},
|
|
105
|
+
onSelect: () => props.onFamilySelect(family.id)
|
|
106
|
+
};
|
|
107
|
+
}),
|
|
108
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ModelCaption, { ...props })
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
const options = [
|
|
112
|
+
{
|
|
113
|
+
value: "",
|
|
114
|
+
label: unspecified.UNSPECIFIED_LABEL,
|
|
115
|
+
description: unspecified.unspecifiedHint(props.inheritedModelLabel)
|
|
116
|
+
},
|
|
117
|
+
...props.groups.flatMap(({ family, models }) => {
|
|
118
|
+
const brand = RuntimeBar_model.runtimeFamilyBrand(family);
|
|
119
|
+
const icon = brand.icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: brand.icon, className: utils.cn("size-4", brand.color) }) : void 0;
|
|
120
|
+
return models.length ? models.map((model) => ({
|
|
121
|
+
value: model.id,
|
|
122
|
+
label: model.label.trim() || model.id,
|
|
123
|
+
group: family.label,
|
|
124
|
+
icon
|
|
125
|
+
})) : [
|
|
126
|
+
{
|
|
127
|
+
value: `family:${family.id}`,
|
|
128
|
+
label: "Custom model…",
|
|
129
|
+
group: family.label,
|
|
130
|
+
icon
|
|
131
|
+
}
|
|
132
|
+
];
|
|
133
|
+
})
|
|
134
|
+
];
|
|
135
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
136
|
+
Combobox.Combobox,
|
|
137
|
+
{
|
|
138
|
+
searchPlacement: "menu",
|
|
139
|
+
ariaLabel: "Model",
|
|
140
|
+
title,
|
|
141
|
+
disabled: props.locked,
|
|
142
|
+
value: props.unavailable ? "" : ((_a = props.selectedModel) == null ? void 0 : _a.id) ?? props.model ?? "",
|
|
143
|
+
options,
|
|
144
|
+
className: utils.cn(
|
|
145
|
+
"h-control-h min-w-0 max-w-56 flex-1",
|
|
146
|
+
props.variant === "combo" ? "rounded-md border border-input bg-background" : "border-l border-border first:border-l-0"
|
|
147
|
+
),
|
|
148
|
+
triggerClassName: "h-full rounded-none border-0 px-density-2 focus-visible:ring-inset aria-expanded:bg-muted",
|
|
149
|
+
triggerContent: /* @__PURE__ */ jsxRuntime.jsx(ModelCaption, { ...props }),
|
|
150
|
+
onNew: (value) => ({ value, label: `Use custom: ${value}` }),
|
|
151
|
+
onChange: (value) => {
|
|
152
|
+
var _a2;
|
|
153
|
+
if (!value) return props.onModelClear();
|
|
154
|
+
const family = (_a2 = props.groups.find(
|
|
155
|
+
({ family: family2 }) => value === `family:${family2.id}`
|
|
156
|
+
)) == null ? void 0 : _a2.family;
|
|
157
|
+
if (family) return props.onFamilySelect(family.id);
|
|
158
|
+
const model = props.groups.flatMap(({ models }) => models).find((model2) => model2.id === value);
|
|
159
|
+
if (model) props.onModelSelect(model);
|
|
160
|
+
else props.onCustomModel(value);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
exports.RuntimeBarIdentity = RuntimeBarIdentity;
|
|
166
|
+
//# sourceMappingURL=RuntimeBarIdentity.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBarIdentity.cjs","sources":["../../../src/data/runtime/RuntimeBarIdentity.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Combobox, type ComboboxOption } from \"../../components/Combobox\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport type { ChatModel } from \"../chat/types\";\nimport { runtimeFamilyBrand } from \"./RuntimeBar.model\";\nimport {\n RuntimeSegment,\n RuntimeSegmentCaption,\n SEGMENT_CAPTION_CLASS,\n} from \"./RuntimeBarSegment\";\nimport { modelGroupsForMode } from \"./RuntimeBar.selection\";\nimport type { SpecRuntimeFamily, SpecRuntimeModeOption } from \"./runtime-mode\";\nimport { UNSPECIFIED_LABEL, unspecifiedHint } from \"./unspecified\";\n\nexport type RuntimeBarIdentityProps = {\n family: SpecRuntimeFamily;\n mode: SpecRuntimeModeOption;\n modes: SpecRuntimeModeOption[];\n groups: ReturnType<typeof modelGroupsForMode>;\n selectedModel: ChatModel | undefined;\n model: string | undefined;\n unavailable: boolean;\n inheritedModelLabel: string | undefined;\n locked: boolean;\n showModel: boolean;\n variant: \"segmented\" | \"combo\";\n onModeChange: (mode: string) => void;\n onModelSelect: (model: ChatModel) => void;\n onModelClear: () => void;\n onCustomModel: (model: string) => void;\n onFamilySelect: (family: string) => void;\n};\n\nexport function RuntimeBarIdentity({\n measure = false,\n ...props\n}: RuntimeBarIdentityProps & { measure?: boolean }) {\n const modeCaption = (\n <>\n {props.mode.icon && (\n <Icon\n icon={props.mode.icon}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n )}\n <span className={SEGMENT_CAPTION_CLASS}>{props.mode.label}</span>\n </>\n );\n return (\n <div\n data-runtime-bar-section={measure ? undefined : \"identity\"}\n className={cn(\n \"flex h-control-h min-w-0 items-stretch\",\n props.variant === \"combo\" && \"gap-1\",\n )}\n >\n {measure ? (\n <IdentityMeasure variant={props.variant}>{modeCaption}</IdentityMeasure>\n ) : (\n <RuntimeSegment\n menuLabel=\"Runtime mode\"\n title={`Runtime mode — ${props.mode.label}`}\n disabled={props.locked}\n className=\"shrink-0\"\n items={props.modes.map((mode) => ({\n label: mode.label,\n ...(mode.icon ? { icon: mode.icon } : {}),\n onSelect: () => props.onModeChange(mode.id),\n }))}\n >\n {modeCaption}\n </RuntimeSegment>\n )}\n {measure ? (\n <IdentityMeasure variant={props.variant} model>\n <ModelCaption {...props} />\n </IdentityMeasure>\n ) : (\n <RuntimeModelPicker {...props} />\n )}\n </div>\n );\n}\n\nfunction IdentityMeasure({\n variant,\n model = false,\n children,\n}: {\n variant: \"segmented\" | \"combo\";\n model?: boolean;\n children: ReactNode;\n}) {\n return (\n <div\n className={cn(\n \"flex h-control-h items-center gap-1.5 px-density-2\",\n model && \"max-w-56 min-w-0\",\n variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border first:border-l-0\",\n )}\n >\n <RuntimeSegmentCaption>{children}</RuntimeSegmentCaption>\n </div>\n );\n}\n\nfunction ModelCaption(props: RuntimeBarIdentityProps) {\n const brand = runtimeFamilyBrand(props.family);\n const label = props.showModel\n ? props.unavailable\n ? \"Unavailable selection\"\n : (props.selectedModel?.label ?? props.model ?? UNSPECIFIED_LABEL)\n : props.family.label;\n return (\n <>\n {props.showModel && (\n <span className=\"sr-only\">{props.family.label} </span>\n )}\n {brand.icon && (\n <Icon\n icon={brand.icon}\n className={cn(\"size-4 shrink-0\", brand.color)}\n />\n )}\n <span className=\"min-w-0 truncate font-mono text-xs font-semibold text-foreground\">\n {label}\n </span>\n </>\n );\n}\n\nfunction RuntimeModelPicker(props: RuntimeBarIdentityProps) {\n const title = props.showModel\n ? `Model — ${props.unavailable ? \"unavailable selection\" : props.model || \"unspecified\"}`\n : `Family — ${props.family.label}`;\n if (!props.showModel)\n return (\n <RuntimeSegment\n menuLabel=\"Family\"\n title={title}\n disabled={props.locked}\n className=\"min-w-0 max-w-56 flex-1\"\n items={props.groups.map(({ family }) => {\n const brand = runtimeFamilyBrand(family);\n return {\n label: family.label,\n ...(brand.icon ? { icon: brand.icon } : {}),\n onSelect: () => props.onFamilySelect(family.id),\n };\n })}\n >\n <ModelCaption {...props} />\n </RuntimeSegment>\n );\n const options: ComboboxOption[] = [\n {\n value: \"\",\n label: UNSPECIFIED_LABEL,\n description: unspecifiedHint(props.inheritedModelLabel),\n },\n ...props.groups.flatMap(({ family, models }) => {\n const brand = runtimeFamilyBrand(family);\n const icon = brand.icon ? (\n <Icon icon={brand.icon} className={cn(\"size-4\", brand.color)} />\n ) : undefined;\n return models.length\n ? models.map((model) => ({\n value: model.id,\n label: model.label.trim() || model.id,\n group: family.label,\n icon,\n }))\n : [\n {\n value: `family:${family.id}`,\n label: \"Custom model…\",\n group: family.label,\n icon,\n },\n ];\n }),\n ];\n return (\n <Combobox\n searchPlacement=\"menu\"\n ariaLabel=\"Model\"\n title={title}\n disabled={props.locked}\n value={\n props.unavailable ? \"\" : (props.selectedModel?.id ?? props.model ?? \"\")\n }\n options={options}\n className={cn(\n \"h-control-h min-w-0 max-w-56 flex-1\",\n props.variant === \"combo\"\n ? \"rounded-md border border-input bg-background\"\n : \"border-l border-border first:border-l-0\",\n )}\n triggerClassName=\"h-full rounded-none border-0 px-density-2 focus-visible:ring-inset aria-expanded:bg-muted\"\n triggerContent={<ModelCaption {...props} />}\n onNew={(value) => ({ value, label: `Use custom: ${value}` })}\n onChange={(value) => {\n if (!value) return props.onModelClear();\n const family = props.groups.find(\n ({ family }) => value === `family:${family.id}`,\n )?.family;\n if (family) return props.onFamilySelect(family.id);\n const model = props.groups\n .flatMap(({ models }) => models)\n .find((model) => model.id === value);\n if (model) props.onModelSelect(model);\n else props.onCustomModel(value);\n }}\n />\n );\n}\n"],"names":["jsxs","Fragment","jsx","Icon","SEGMENT_CAPTION_CLASS","cn","RuntimeSegment","RuntimeSegmentCaption","runtimeFamilyBrand","UNSPECIFIED_LABEL","unspecifiedHint","Combobox","_a","family","model"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ChatModel } from '../chat/types.js';
|
|
2
|
+
import { modelGroupsForMode } from './RuntimeBar.selection.js';
|
|
3
|
+
import { SpecRuntimeFamily, SpecRuntimeModeOption } from './runtime-mode.js';
|
|
4
|
+
export type RuntimeBarIdentityProps = {
|
|
5
|
+
family: SpecRuntimeFamily;
|
|
6
|
+
mode: SpecRuntimeModeOption;
|
|
7
|
+
modes: SpecRuntimeModeOption[];
|
|
8
|
+
groups: ReturnType<typeof modelGroupsForMode>;
|
|
9
|
+
selectedModel: ChatModel | undefined;
|
|
10
|
+
model: string | undefined;
|
|
11
|
+
unavailable: boolean;
|
|
12
|
+
inheritedModelLabel: string | undefined;
|
|
13
|
+
locked: boolean;
|
|
14
|
+
showModel: boolean;
|
|
15
|
+
variant: "segmented" | "combo";
|
|
16
|
+
onModeChange: (mode: string) => void;
|
|
17
|
+
onModelSelect: (model: ChatModel) => void;
|
|
18
|
+
onModelClear: () => void;
|
|
19
|
+
onCustomModel: (model: string) => void;
|
|
20
|
+
onFamilySelect: (family: string) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare function RuntimeBarIdentity({ measure, ...props }: RuntimeBarIdentityProps & {
|
|
23
|
+
measure?: boolean;
|
|
24
|
+
}): import("react").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=RuntimeBarIdentity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBarIdentity.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarIdentity.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAO/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG/E,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,MAAM,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC9C,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,OAAe,EACf,GAAG,KAAK,EACT,EAAE,uBAAuB,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,+BA8CjD"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Combobox } from "../../components/Combobox.js";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
import { Icon } from "../Icon.js";
|
|
5
|
+
import { runtimeFamilyBrand } from "./RuntimeBar.model.js";
|
|
6
|
+
import { SEGMENT_CAPTION_CLASS, RuntimeSegment, RuntimeSegmentCaption } from "./RuntimeBarSegment.js";
|
|
7
|
+
import { UNSPECIFIED_LABEL, unspecifiedHint } from "./unspecified.js";
|
|
8
|
+
function RuntimeBarIdentity({
|
|
9
|
+
measure = false,
|
|
10
|
+
...props
|
|
11
|
+
}) {
|
|
12
|
+
const modeCaption = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
13
|
+
props.mode.icon && /* @__PURE__ */ jsx(
|
|
14
|
+
Icon,
|
|
15
|
+
{
|
|
16
|
+
icon: props.mode.icon,
|
|
17
|
+
className: "size-4 shrink-0 text-muted-foreground"
|
|
18
|
+
}
|
|
19
|
+
),
|
|
20
|
+
/* @__PURE__ */ jsx("span", { className: SEGMENT_CAPTION_CLASS, children: props.mode.label })
|
|
21
|
+
] });
|
|
22
|
+
return /* @__PURE__ */ jsxs(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
"data-runtime-bar-section": measure ? void 0 : "identity",
|
|
26
|
+
className: cn(
|
|
27
|
+
"flex h-control-h min-w-0 items-stretch",
|
|
28
|
+
props.variant === "combo" && "gap-1"
|
|
29
|
+
),
|
|
30
|
+
children: [
|
|
31
|
+
measure ? /* @__PURE__ */ jsx(IdentityMeasure, { variant: props.variant, children: modeCaption }) : /* @__PURE__ */ jsx(
|
|
32
|
+
RuntimeSegment,
|
|
33
|
+
{
|
|
34
|
+
menuLabel: "Runtime mode",
|
|
35
|
+
title: `Runtime mode — ${props.mode.label}`,
|
|
36
|
+
disabled: props.locked,
|
|
37
|
+
className: "shrink-0",
|
|
38
|
+
items: props.modes.map((mode) => ({
|
|
39
|
+
label: mode.label,
|
|
40
|
+
...mode.icon ? { icon: mode.icon } : {},
|
|
41
|
+
onSelect: () => props.onModeChange(mode.id)
|
|
42
|
+
})),
|
|
43
|
+
children: modeCaption
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
measure ? /* @__PURE__ */ jsx(IdentityMeasure, { variant: props.variant, model: true, children: /* @__PURE__ */ jsx(ModelCaption, { ...props }) }) : /* @__PURE__ */ jsx(RuntimeModelPicker, { ...props })
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
function IdentityMeasure({
|
|
52
|
+
variant,
|
|
53
|
+
model = false,
|
|
54
|
+
children
|
|
55
|
+
}) {
|
|
56
|
+
return /* @__PURE__ */ jsx(
|
|
57
|
+
"div",
|
|
58
|
+
{
|
|
59
|
+
className: cn(
|
|
60
|
+
"flex h-control-h items-center gap-1.5 px-density-2",
|
|
61
|
+
model && "max-w-56 min-w-0",
|
|
62
|
+
variant === "combo" ? "rounded-md border border-input" : "border-l border-border first:border-l-0"
|
|
63
|
+
),
|
|
64
|
+
children: /* @__PURE__ */ jsx(RuntimeSegmentCaption, { children })
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
function ModelCaption(props) {
|
|
69
|
+
var _a;
|
|
70
|
+
const brand = runtimeFamilyBrand(props.family);
|
|
71
|
+
const label = props.showModel ? props.unavailable ? "Unavailable selection" : ((_a = props.selectedModel) == null ? void 0 : _a.label) ?? props.model ?? UNSPECIFIED_LABEL : props.family.label;
|
|
72
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
73
|
+
props.showModel && /* @__PURE__ */ jsxs("span", { className: "sr-only", children: [
|
|
74
|
+
props.family.label,
|
|
75
|
+
" "
|
|
76
|
+
] }),
|
|
77
|
+
brand.icon && /* @__PURE__ */ jsx(
|
|
78
|
+
Icon,
|
|
79
|
+
{
|
|
80
|
+
icon: brand.icon,
|
|
81
|
+
className: cn("size-4 shrink-0", brand.color)
|
|
82
|
+
}
|
|
83
|
+
),
|
|
84
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate font-mono text-xs font-semibold text-foreground", children: label })
|
|
85
|
+
] });
|
|
86
|
+
}
|
|
87
|
+
function RuntimeModelPicker(props) {
|
|
88
|
+
var _a;
|
|
89
|
+
const title = props.showModel ? `Model — ${props.unavailable ? "unavailable selection" : props.model || "unspecified"}` : `Family — ${props.family.label}`;
|
|
90
|
+
if (!props.showModel)
|
|
91
|
+
return /* @__PURE__ */ jsx(
|
|
92
|
+
RuntimeSegment,
|
|
93
|
+
{
|
|
94
|
+
menuLabel: "Family",
|
|
95
|
+
title,
|
|
96
|
+
disabled: props.locked,
|
|
97
|
+
className: "min-w-0 max-w-56 flex-1",
|
|
98
|
+
items: props.groups.map(({ family }) => {
|
|
99
|
+
const brand = runtimeFamilyBrand(family);
|
|
100
|
+
return {
|
|
101
|
+
label: family.label,
|
|
102
|
+
...brand.icon ? { icon: brand.icon } : {},
|
|
103
|
+
onSelect: () => props.onFamilySelect(family.id)
|
|
104
|
+
};
|
|
105
|
+
}),
|
|
106
|
+
children: /* @__PURE__ */ jsx(ModelCaption, { ...props })
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
const options = [
|
|
110
|
+
{
|
|
111
|
+
value: "",
|
|
112
|
+
label: UNSPECIFIED_LABEL,
|
|
113
|
+
description: unspecifiedHint(props.inheritedModelLabel)
|
|
114
|
+
},
|
|
115
|
+
...props.groups.flatMap(({ family, models }) => {
|
|
116
|
+
const brand = runtimeFamilyBrand(family);
|
|
117
|
+
const icon = brand.icon ? /* @__PURE__ */ jsx(Icon, { icon: brand.icon, className: cn("size-4", brand.color) }) : void 0;
|
|
118
|
+
return models.length ? models.map((model) => ({
|
|
119
|
+
value: model.id,
|
|
120
|
+
label: model.label.trim() || model.id,
|
|
121
|
+
group: family.label,
|
|
122
|
+
icon
|
|
123
|
+
})) : [
|
|
124
|
+
{
|
|
125
|
+
value: `family:${family.id}`,
|
|
126
|
+
label: "Custom model…",
|
|
127
|
+
group: family.label,
|
|
128
|
+
icon
|
|
129
|
+
}
|
|
130
|
+
];
|
|
131
|
+
})
|
|
132
|
+
];
|
|
133
|
+
return /* @__PURE__ */ jsx(
|
|
134
|
+
Combobox,
|
|
135
|
+
{
|
|
136
|
+
searchPlacement: "menu",
|
|
137
|
+
ariaLabel: "Model",
|
|
138
|
+
title,
|
|
139
|
+
disabled: props.locked,
|
|
140
|
+
value: props.unavailable ? "" : ((_a = props.selectedModel) == null ? void 0 : _a.id) ?? props.model ?? "",
|
|
141
|
+
options,
|
|
142
|
+
className: cn(
|
|
143
|
+
"h-control-h min-w-0 max-w-56 flex-1",
|
|
144
|
+
props.variant === "combo" ? "rounded-md border border-input bg-background" : "border-l border-border first:border-l-0"
|
|
145
|
+
),
|
|
146
|
+
triggerClassName: "h-full rounded-none border-0 px-density-2 focus-visible:ring-inset aria-expanded:bg-muted",
|
|
147
|
+
triggerContent: /* @__PURE__ */ jsx(ModelCaption, { ...props }),
|
|
148
|
+
onNew: (value) => ({ value, label: `Use custom: ${value}` }),
|
|
149
|
+
onChange: (value) => {
|
|
150
|
+
var _a2;
|
|
151
|
+
if (!value) return props.onModelClear();
|
|
152
|
+
const family = (_a2 = props.groups.find(
|
|
153
|
+
({ family: family2 }) => value === `family:${family2.id}`
|
|
154
|
+
)) == null ? void 0 : _a2.family;
|
|
155
|
+
if (family) return props.onFamilySelect(family.id);
|
|
156
|
+
const model = props.groups.flatMap(({ models }) => models).find((model2) => model2.id === value);
|
|
157
|
+
if (model) props.onModelSelect(model);
|
|
158
|
+
else props.onCustomModel(value);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
export {
|
|
164
|
+
RuntimeBarIdentity
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=RuntimeBarIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBarIdentity.js","sources":["../../../src/data/runtime/RuntimeBarIdentity.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Combobox, type ComboboxOption } from \"../../components/Combobox\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport type { ChatModel } from \"../chat/types\";\nimport { runtimeFamilyBrand } from \"./RuntimeBar.model\";\nimport {\n RuntimeSegment,\n RuntimeSegmentCaption,\n SEGMENT_CAPTION_CLASS,\n} from \"./RuntimeBarSegment\";\nimport { modelGroupsForMode } from \"./RuntimeBar.selection\";\nimport type { SpecRuntimeFamily, SpecRuntimeModeOption } from \"./runtime-mode\";\nimport { UNSPECIFIED_LABEL, unspecifiedHint } from \"./unspecified\";\n\nexport type RuntimeBarIdentityProps = {\n family: SpecRuntimeFamily;\n mode: SpecRuntimeModeOption;\n modes: SpecRuntimeModeOption[];\n groups: ReturnType<typeof modelGroupsForMode>;\n selectedModel: ChatModel | undefined;\n model: string | undefined;\n unavailable: boolean;\n inheritedModelLabel: string | undefined;\n locked: boolean;\n showModel: boolean;\n variant: \"segmented\" | \"combo\";\n onModeChange: (mode: string) => void;\n onModelSelect: (model: ChatModel) => void;\n onModelClear: () => void;\n onCustomModel: (model: string) => void;\n onFamilySelect: (family: string) => void;\n};\n\nexport function RuntimeBarIdentity({\n measure = false,\n ...props\n}: RuntimeBarIdentityProps & { measure?: boolean }) {\n const modeCaption = (\n <>\n {props.mode.icon && (\n <Icon\n icon={props.mode.icon}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n )}\n <span className={SEGMENT_CAPTION_CLASS}>{props.mode.label}</span>\n </>\n );\n return (\n <div\n data-runtime-bar-section={measure ? undefined : \"identity\"}\n className={cn(\n \"flex h-control-h min-w-0 items-stretch\",\n props.variant === \"combo\" && \"gap-1\",\n )}\n >\n {measure ? (\n <IdentityMeasure variant={props.variant}>{modeCaption}</IdentityMeasure>\n ) : (\n <RuntimeSegment\n menuLabel=\"Runtime mode\"\n title={`Runtime mode — ${props.mode.label}`}\n disabled={props.locked}\n className=\"shrink-0\"\n items={props.modes.map((mode) => ({\n label: mode.label,\n ...(mode.icon ? { icon: mode.icon } : {}),\n onSelect: () => props.onModeChange(mode.id),\n }))}\n >\n {modeCaption}\n </RuntimeSegment>\n )}\n {measure ? (\n <IdentityMeasure variant={props.variant} model>\n <ModelCaption {...props} />\n </IdentityMeasure>\n ) : (\n <RuntimeModelPicker {...props} />\n )}\n </div>\n );\n}\n\nfunction IdentityMeasure({\n variant,\n model = false,\n children,\n}: {\n variant: \"segmented\" | \"combo\";\n model?: boolean;\n children: ReactNode;\n}) {\n return (\n <div\n className={cn(\n \"flex h-control-h items-center gap-1.5 px-density-2\",\n model && \"max-w-56 min-w-0\",\n variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border first:border-l-0\",\n )}\n >\n <RuntimeSegmentCaption>{children}</RuntimeSegmentCaption>\n </div>\n );\n}\n\nfunction ModelCaption(props: RuntimeBarIdentityProps) {\n const brand = runtimeFamilyBrand(props.family);\n const label = props.showModel\n ? props.unavailable\n ? \"Unavailable selection\"\n : (props.selectedModel?.label ?? props.model ?? UNSPECIFIED_LABEL)\n : props.family.label;\n return (\n <>\n {props.showModel && (\n <span className=\"sr-only\">{props.family.label} </span>\n )}\n {brand.icon && (\n <Icon\n icon={brand.icon}\n className={cn(\"size-4 shrink-0\", brand.color)}\n />\n )}\n <span className=\"min-w-0 truncate font-mono text-xs font-semibold text-foreground\">\n {label}\n </span>\n </>\n );\n}\n\nfunction RuntimeModelPicker(props: RuntimeBarIdentityProps) {\n const title = props.showModel\n ? `Model — ${props.unavailable ? \"unavailable selection\" : props.model || \"unspecified\"}`\n : `Family — ${props.family.label}`;\n if (!props.showModel)\n return (\n <RuntimeSegment\n menuLabel=\"Family\"\n title={title}\n disabled={props.locked}\n className=\"min-w-0 max-w-56 flex-1\"\n items={props.groups.map(({ family }) => {\n const brand = runtimeFamilyBrand(family);\n return {\n label: family.label,\n ...(brand.icon ? { icon: brand.icon } : {}),\n onSelect: () => props.onFamilySelect(family.id),\n };\n })}\n >\n <ModelCaption {...props} />\n </RuntimeSegment>\n );\n const options: ComboboxOption[] = [\n {\n value: \"\",\n label: UNSPECIFIED_LABEL,\n description: unspecifiedHint(props.inheritedModelLabel),\n },\n ...props.groups.flatMap(({ family, models }) => {\n const brand = runtimeFamilyBrand(family);\n const icon = brand.icon ? (\n <Icon icon={brand.icon} className={cn(\"size-4\", brand.color)} />\n ) : undefined;\n return models.length\n ? models.map((model) => ({\n value: model.id,\n label: model.label.trim() || model.id,\n group: family.label,\n icon,\n }))\n : [\n {\n value: `family:${family.id}`,\n label: \"Custom model…\",\n group: family.label,\n icon,\n },\n ];\n }),\n ];\n return (\n <Combobox\n searchPlacement=\"menu\"\n ariaLabel=\"Model\"\n title={title}\n disabled={props.locked}\n value={\n props.unavailable ? \"\" : (props.selectedModel?.id ?? props.model ?? \"\")\n }\n options={options}\n className={cn(\n \"h-control-h min-w-0 max-w-56 flex-1\",\n props.variant === \"combo\"\n ? \"rounded-md border border-input bg-background\"\n : \"border-l border-border first:border-l-0\",\n )}\n triggerClassName=\"h-full rounded-none border-0 px-density-2 focus-visible:ring-inset aria-expanded:bg-muted\"\n triggerContent={<ModelCaption {...props} />}\n onNew={(value) => ({ value, label: `Use custom: ${value}` })}\n onChange={(value) => {\n if (!value) return props.onModelClear();\n const family = props.groups.find(\n ({ family }) => value === `family:${family.id}`,\n )?.family;\n if (family) return props.onFamilySelect(family.id);\n const model = props.groups\n .flatMap(({ models }) => models)\n .find((model) => model.id === value);\n if (model) props.onModelSelect(model);\n else props.onCustomModel(value);\n }}\n />\n );\n}\n"],"names":["_a","family","model"],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const utils = require("../../lib/utils.cjs");
|
|
5
|
+
const Icon = require("../Icon.cjs");
|
|
6
|
+
const RuntimeBarActions = require("./RuntimeBarActions.cjs");
|
|
7
|
+
const RuntimeBarIdentity = require("./RuntimeBarIdentity.cjs");
|
|
8
|
+
const RuntimeBarSegment = require("./RuntimeBarSegment.cjs");
|
|
9
|
+
const useRuntimeBarOverflow = require("./use-runtime-bar-overflow.cjs");
|
|
10
|
+
const UiDotsVertical = require("../../icons/components/UiDotsVertical.cjs");
|
|
11
|
+
function RuntimeBarLayout({
|
|
12
|
+
identity,
|
|
13
|
+
actions,
|
|
14
|
+
ariaLabel,
|
|
15
|
+
className
|
|
16
|
+
}) {
|
|
17
|
+
var _a, _b, _c;
|
|
18
|
+
const { containerRef, measurementRef, visibleCount } = useRuntimeBarOverflow.useRuntimeBarOverflow();
|
|
19
|
+
const supplied = ((_a = actions.fields) == null ? void 0 : _a.filter((field) => field.isSet)) ?? [];
|
|
20
|
+
const hasMenu = Boolean(((_b = actions.fields) == null ? void 0 : _b.length) || ((_c = actions.menu) == null ? void 0 : _c.length));
|
|
21
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
ref: containerRef,
|
|
25
|
+
className: utils.cn("relative w-full min-w-0", className),
|
|
26
|
+
children: [
|
|
27
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
28
|
+
"div",
|
|
29
|
+
{
|
|
30
|
+
role: "group",
|
|
31
|
+
"aria-label": ariaLabel,
|
|
32
|
+
"data-runtime-bar-variant": identity.variant,
|
|
33
|
+
className: utils.cn(
|
|
34
|
+
"inline-flex h-control-h max-w-full items-stretch",
|
|
35
|
+
identity.variant === "combo" ? "gap-1" : "overflow-hidden rounded-md border border-input bg-background"
|
|
36
|
+
),
|
|
37
|
+
children: [
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(RuntimeBarIdentity.RuntimeBarIdentity, { ...identity }),
|
|
39
|
+
/* @__PURE__ */ jsxRuntime.jsx(RuntimeBarActions.RuntimeBarActions, { ...actions, visibleCount })
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
),
|
|
43
|
+
hasMenu && /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
className: "pointer-events-none absolute inset-0 overflow-hidden",
|
|
47
|
+
"aria-hidden": "true",
|
|
48
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
ref: measurementRef,
|
|
52
|
+
className: utils.cn(
|
|
53
|
+
"pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch",
|
|
54
|
+
identity.variant === "combo" && "gap-1"
|
|
55
|
+
),
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx(RuntimeBarIdentity.RuntimeBarIdentity, { ...identity, measure: true }),
|
|
58
|
+
supplied.map((field) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
59
|
+
"div",
|
|
60
|
+
{
|
|
61
|
+
className: utils.cn(
|
|
62
|
+
"flex h-control-h items-center gap-1.5 px-density-2",
|
|
63
|
+
identity.variant === "combo" ? "rounded-md border border-input" : "border-l border-border"
|
|
64
|
+
),
|
|
65
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(RuntimeBarSegment.RuntimeSegmentCaption, { children: field.caption })
|
|
66
|
+
},
|
|
67
|
+
field.id
|
|
68
|
+
)),
|
|
69
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
70
|
+
"div",
|
|
71
|
+
{
|
|
72
|
+
className: utils.cn(
|
|
73
|
+
"flex h-control-h items-center px-density-2",
|
|
74
|
+
identity.variant === "combo" ? "rounded-md border border-input" : "border-l border-border"
|
|
75
|
+
),
|
|
76
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
+
Icon.Icon,
|
|
78
|
+
{
|
|
79
|
+
icon: UiDotsVertical.UiDotsVertical,
|
|
80
|
+
className: "size-4 shrink-0 text-muted-foreground"
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
)
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
exports.RuntimeBarLayout = RuntimeBarLayout;
|
|
95
|
+
//# sourceMappingURL=RuntimeBarLayout.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBarLayout.cjs","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"sourcesContent":["import { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"./RuntimeBarActions\";\nimport {\n RuntimeBarIdentity,\n type RuntimeBarIdentityProps,\n} from \"./RuntimeBarIdentity\";\nimport { RuntimeSegmentCaption } from \"./RuntimeBarSegment\";\nimport { useRuntimeBarOverflow } from \"./use-runtime-bar-overflow\";\n\nexport function RuntimeBarLayout({\n identity,\n actions,\n ariaLabel,\n className,\n}: {\n identity: RuntimeBarIdentityProps;\n actions: RuntimeBarActionsProps;\n ariaLabel: string;\n className?: string | undefined;\n}) {\n const { containerRef, measurementRef, visibleCount } =\n useRuntimeBarOverflow();\n const supplied = actions.fields?.filter((field) => field.isSet) ?? [];\n const hasMenu = Boolean(actions.fields?.length || actions.menu?.length);\n return (\n <div\n ref={containerRef}\n className={cn(\"relative w-full min-w-0\", className)}\n >\n <div\n role=\"group\"\n aria-label={ariaLabel}\n data-runtime-bar-variant={identity.variant}\n className={cn(\n \"inline-flex h-control-h max-w-full items-stretch\",\n identity.variant === \"combo\"\n ? \"gap-1\"\n : \"overflow-hidden rounded-md border border-input bg-background\",\n )}\n >\n <RuntimeBarIdentity {...identity} />\n <RuntimeBarActions {...actions} visibleCount={visibleCount} />\n </div>\n {hasMenu && (\n <div\n className=\"pointer-events-none absolute inset-0 overflow-hidden\"\n aria-hidden=\"true\"\n >\n <div\n ref={measurementRef}\n className={cn(\n \"pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch\",\n identity.variant === \"combo\" && \"gap-1\",\n )}\n >\n <RuntimeBarIdentity {...identity} measure />\n {supplied.map((field) => (\n <div\n key={field.id}\n className={cn(\n \"flex h-control-h items-center gap-1.5 px-density-2\",\n identity.variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border\",\n )}\n >\n <RuntimeSegmentCaption>{field.caption}</RuntimeSegmentCaption>\n </div>\n ))}\n <div\n className={cn(\n \"flex h-control-h items-center px-density-2\",\n identity.variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border\",\n )}\n >\n <Icon\n icon={UiDotsVertical}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["useRuntimeBarOverflow","jsxs","cn","jsx","RuntimeBarIdentity","RuntimeBarActions","RuntimeSegmentCaption","Icon","UiDotsVertical"],"mappings":";;;;;;;;;;AAcO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;;AACD,QAAM,EAAE,cAAc,gBAAgB,aAAA,IACpCA,sBAAAA,sBAAA;AACF,QAAM,aAAW,aAAQ,WAAR,mBAAgB,OAAO,CAAC,UAAU,MAAM,WAAU,CAAA;AACnE,QAAM,UAAU,UAAQ,aAAQ,WAAR,mBAAgB,aAAU,aAAQ,SAAR,mBAAc,OAAM;AACtE,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAWC,MAAAA,GAAG,2BAA2B,SAAS;AAAA,MAElD,UAAA;AAAA,QAAAD,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY;AAAA,YACZ,4BAA0B,SAAS;AAAA,YACnC,WAAWC,MAAAA;AAAAA,cACT;AAAA,cACA,SAAS,YAAY,UACjB,UACA;AAAA,YAAA;AAAA,YAGN,UAAA;AAAA,cAAAC,2BAAAA,IAACC,mBAAAA,oBAAA,EAAoB,GAAG,UAAU;AAAA,cAClCD,2BAAAA,IAACE,kBAAAA,mBAAA,EAAmB,GAAG,SAAS,aAAA,CAA4B;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAE7D,WACCF,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YAEZ,UAAAF,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBACL,WAAWC,MAAAA;AAAAA,kBACT;AAAA,kBACA,SAAS,YAAY,WAAW;AAAA,gBAAA;AAAA,gBAGlC,UAAA;AAAA,kBAAAC,2BAAAA,IAACC,mBAAAA,oBAAA,EAAoB,GAAG,UAAU,SAAO,KAAA,CAAC;AAAA,kBACzC,SAAS,IAAI,CAAC,UACbD,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,WAAWD,MAAAA;AAAAA,wBACT;AAAA,wBACA,SAAS,YAAY,UACjB,mCACA;AAAA,sBAAA;AAAA,sBAGN,UAAAC,2BAAAA,IAACG,kBAAAA,uBAAA,EAAuB,UAAA,MAAM,QAAA,CAAQ;AAAA,oBAAA;AAAA,oBARjC,MAAM;AAAA,kBAAA,CAUd;AAAA,kBACDH,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWD,MAAAA;AAAAA,wBACT;AAAA,wBACA,SAAS,YAAY,UACjB,mCACA;AAAA,sBAAA;AAAA,sBAGN,UAAAC,2BAAAA;AAAAA,wBAACI,KAAAA;AAAAA,wBAAA;AAAA,0BACC,MAAMC,eAAAA;AAAAA,0BACN,WAAU;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACZ;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RuntimeBarActionsProps } from './RuntimeBarActions.js';
|
|
2
|
+
import { RuntimeBarIdentityProps } from './RuntimeBarIdentity.js';
|
|
3
|
+
export declare function RuntimeBarLayout({ identity, actions, ariaLabel, className, }: {
|
|
4
|
+
identity: RuntimeBarIdentityProps;
|
|
5
|
+
actions: RuntimeBarActionsProps;
|
|
6
|
+
ariaLabel: string;
|
|
7
|
+
className?: string | undefined;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=RuntimeBarLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBarLayout.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAI9B,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,sBAAsB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,+BAoEA"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
import { Icon } from "../Icon.js";
|
|
4
|
+
import { RuntimeBarActions } from "./RuntimeBarActions.js";
|
|
5
|
+
import { RuntimeBarIdentity } from "./RuntimeBarIdentity.js";
|
|
6
|
+
import { RuntimeSegmentCaption } from "./RuntimeBarSegment.js";
|
|
7
|
+
import { useRuntimeBarOverflow } from "./use-runtime-bar-overflow.js";
|
|
8
|
+
import { UiDotsVertical } from "../../icons/components/UiDotsVertical.js";
|
|
9
|
+
function RuntimeBarLayout({
|
|
10
|
+
identity,
|
|
11
|
+
actions,
|
|
12
|
+
ariaLabel,
|
|
13
|
+
className
|
|
14
|
+
}) {
|
|
15
|
+
var _a, _b, _c;
|
|
16
|
+
const { containerRef, measurementRef, visibleCount } = useRuntimeBarOverflow();
|
|
17
|
+
const supplied = ((_a = actions.fields) == null ? void 0 : _a.filter((field) => field.isSet)) ?? [];
|
|
18
|
+
const hasMenu = Boolean(((_b = actions.fields) == null ? void 0 : _b.length) || ((_c = actions.menu) == null ? void 0 : _c.length));
|
|
19
|
+
return /* @__PURE__ */ jsxs(
|
|
20
|
+
"div",
|
|
21
|
+
{
|
|
22
|
+
ref: containerRef,
|
|
23
|
+
className: cn("relative w-full min-w-0", className),
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ jsxs(
|
|
26
|
+
"div",
|
|
27
|
+
{
|
|
28
|
+
role: "group",
|
|
29
|
+
"aria-label": ariaLabel,
|
|
30
|
+
"data-runtime-bar-variant": identity.variant,
|
|
31
|
+
className: cn(
|
|
32
|
+
"inline-flex h-control-h max-w-full items-stretch",
|
|
33
|
+
identity.variant === "combo" ? "gap-1" : "overflow-hidden rounded-md border border-input bg-background"
|
|
34
|
+
),
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ jsx(RuntimeBarIdentity, { ...identity }),
|
|
37
|
+
/* @__PURE__ */ jsx(RuntimeBarActions, { ...actions, visibleCount })
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
hasMenu && /* @__PURE__ */ jsx(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: "pointer-events-none absolute inset-0 overflow-hidden",
|
|
45
|
+
"aria-hidden": "true",
|
|
46
|
+
children: /* @__PURE__ */ jsxs(
|
|
47
|
+
"div",
|
|
48
|
+
{
|
|
49
|
+
ref: measurementRef,
|
|
50
|
+
className: cn(
|
|
51
|
+
"pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch",
|
|
52
|
+
identity.variant === "combo" && "gap-1"
|
|
53
|
+
),
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ jsx(RuntimeBarIdentity, { ...identity, measure: true }),
|
|
56
|
+
supplied.map((field) => /* @__PURE__ */ jsx(
|
|
57
|
+
"div",
|
|
58
|
+
{
|
|
59
|
+
className: cn(
|
|
60
|
+
"flex h-control-h items-center gap-1.5 px-density-2",
|
|
61
|
+
identity.variant === "combo" ? "rounded-md border border-input" : "border-l border-border"
|
|
62
|
+
),
|
|
63
|
+
children: /* @__PURE__ */ jsx(RuntimeSegmentCaption, { children: field.caption })
|
|
64
|
+
},
|
|
65
|
+
field.id
|
|
66
|
+
)),
|
|
67
|
+
/* @__PURE__ */ jsx(
|
|
68
|
+
"div",
|
|
69
|
+
{
|
|
70
|
+
className: cn(
|
|
71
|
+
"flex h-control-h items-center px-density-2",
|
|
72
|
+
identity.variant === "combo" ? "rounded-md border border-input" : "border-l border-border"
|
|
73
|
+
),
|
|
74
|
+
children: /* @__PURE__ */ jsx(
|
|
75
|
+
Icon,
|
|
76
|
+
{
|
|
77
|
+
icon: UiDotsVertical,
|
|
78
|
+
className: "size-4 shrink-0 text-muted-foreground"
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
export {
|
|
93
|
+
RuntimeBarLayout
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=RuntimeBarLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBarLayout.js","sources":["../../../src/data/runtime/RuntimeBarLayout.tsx"],"sourcesContent":["import { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"./RuntimeBarActions\";\nimport {\n RuntimeBarIdentity,\n type RuntimeBarIdentityProps,\n} from \"./RuntimeBarIdentity\";\nimport { RuntimeSegmentCaption } from \"./RuntimeBarSegment\";\nimport { useRuntimeBarOverflow } from \"./use-runtime-bar-overflow\";\n\nexport function RuntimeBarLayout({\n identity,\n actions,\n ariaLabel,\n className,\n}: {\n identity: RuntimeBarIdentityProps;\n actions: RuntimeBarActionsProps;\n ariaLabel: string;\n className?: string | undefined;\n}) {\n const { containerRef, measurementRef, visibleCount } =\n useRuntimeBarOverflow();\n const supplied = actions.fields?.filter((field) => field.isSet) ?? [];\n const hasMenu = Boolean(actions.fields?.length || actions.menu?.length);\n return (\n <div\n ref={containerRef}\n className={cn(\"relative w-full min-w-0\", className)}\n >\n <div\n role=\"group\"\n aria-label={ariaLabel}\n data-runtime-bar-variant={identity.variant}\n className={cn(\n \"inline-flex h-control-h max-w-full items-stretch\",\n identity.variant === \"combo\"\n ? \"gap-1\"\n : \"overflow-hidden rounded-md border border-input bg-background\",\n )}\n >\n <RuntimeBarIdentity {...identity} />\n <RuntimeBarActions {...actions} visibleCount={visibleCount} />\n </div>\n {hasMenu && (\n <div\n className=\"pointer-events-none absolute inset-0 overflow-hidden\"\n aria-hidden=\"true\"\n >\n <div\n ref={measurementRef}\n className={cn(\n \"pointer-events-none invisible absolute left-0 top-0 flex w-max items-stretch\",\n identity.variant === \"combo\" && \"gap-1\",\n )}\n >\n <RuntimeBarIdentity {...identity} measure />\n {supplied.map((field) => (\n <div\n key={field.id}\n className={cn(\n \"flex h-control-h items-center gap-1.5 px-density-2\",\n identity.variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border\",\n )}\n >\n <RuntimeSegmentCaption>{field.caption}</RuntimeSegmentCaption>\n </div>\n ))}\n <div\n className={cn(\n \"flex h-control-h items-center px-density-2\",\n identity.variant === \"combo\"\n ? \"rounded-md border border-input\"\n : \"border-l border-border\",\n )}\n >\n <Icon\n icon={UiDotsVertical}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAcO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;;AACD,QAAM,EAAE,cAAc,gBAAgB,aAAA,IACpC,sBAAA;AACF,QAAM,aAAW,aAAQ,WAAR,mBAAgB,OAAO,CAAC,UAAU,MAAM,WAAU,CAAA;AACnE,QAAM,UAAU,UAAQ,aAAQ,WAAR,mBAAgB,aAAU,aAAQ,SAAR,mBAAc,OAAM;AACtE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,GAAG,2BAA2B,SAAS;AAAA,MAElD,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY;AAAA,YACZ,4BAA0B,SAAS;AAAA,YACnC,WAAW;AAAA,cACT;AAAA,cACA,SAAS,YAAY,UACjB,UACA;AAAA,YAAA;AAAA,YAGN,UAAA;AAAA,cAAA,oBAAC,oBAAA,EAAoB,GAAG,UAAU;AAAA,cAClC,oBAAC,mBAAA,EAAmB,GAAG,SAAS,aAAA,CAA4B;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAE7D,WACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YAEZ,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBACL,WAAW;AAAA,kBACT;AAAA,kBACA,SAAS,YAAY,WAAW;AAAA,gBAAA;AAAA,gBAGlC,UAAA;AAAA,kBAAA,oBAAC,oBAAA,EAAoB,GAAG,UAAU,SAAO,KAAA,CAAC;AAAA,kBACzC,SAAS,IAAI,CAAC,UACb;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,WAAW;AAAA,wBACT;AAAA,wBACA,SAAS,YAAY,UACjB,mCACA;AAAA,sBAAA;AAAA,sBAGN,UAAA,oBAAC,uBAAA,EAAuB,UAAA,MAAM,QAAA,CAAQ;AAAA,oBAAA;AAAA,oBARjC,MAAM;AAAA,kBAAA,CAUd;AAAA,kBACD;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAW;AAAA,wBACT;AAAA,wBACA,SAAS,YAAY,UACjB,mCACA;AAAA,sBAAA;AAAA,sBAGN,UAAA;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,MAAM;AAAA,0BACN,WAAU;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACZ;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|