@flanksource/clicky-ui 0.3.9 → 0.3.11
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/NOTICE.md +89 -0
- package/README.md +33 -2
- package/dist/ai.cjs +71 -5
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +71 -5
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +17 -13
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +8 -4
- package/dist/clicky.d.ts +1 -1
- package/dist/clicky.d.ts.map +1 -1
- package/dist/comments/CommentCard.cjs +84 -38
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts +1 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +85 -39
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentComposer.cjs +21 -11
- package/dist/comments/CommentComposer.cjs.map +1 -1
- package/dist/comments/CommentComposer.d.ts.map +1 -1
- package/dist/comments/CommentComposer.js +21 -11
- package/dist/comments/CommentComposer.js.map +1 -1
- package/dist/comments/CommentProvider.cjs +84 -12
- package/dist/comments/CommentProvider.cjs.map +1 -1
- package/dist/comments/CommentProvider.d.ts +4 -2
- package/dist/comments/CommentProvider.d.ts.map +1 -1
- package/dist/comments/CommentProvider.js +86 -14
- package/dist/comments/CommentProvider.js.map +1 -1
- package/dist/comments/CommentSidePanel.cjs +116 -38
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.d.ts +2 -0
- package/dist/comments/CommentSidePanel.d.ts.map +1 -1
- package/dist/comments/CommentSidePanel.js +117 -39
- package/dist/comments/CommentSidePanel.js.map +1 -1
- package/dist/comments/CommentThread.cjs +4 -0
- package/dist/comments/CommentThread.cjs.map +1 -1
- package/dist/comments/CommentThread.d.ts +5 -1
- package/dist/comments/CommentThread.d.ts.map +1 -1
- package/dist/comments/CommentThread.js +4 -0
- package/dist/comments/CommentThread.js.map +1 -1
- package/dist/comments/CommentThreadList.cjs +17 -5
- package/dist/comments/CommentThreadList.cjs.map +1 -1
- package/dist/comments/CommentThreadList.d.ts +3 -1
- package/dist/comments/CommentThreadList.d.ts.map +1 -1
- package/dist/comments/CommentThreadList.js +18 -6
- package/dist/comments/CommentThreadList.js.map +1 -1
- package/dist/comments/comment-context.cjs +88 -0
- package/dist/comments/comment-context.cjs.map +1 -1
- package/dist/comments/comment-context.d.ts +26 -0
- package/dist/comments/comment-context.d.ts.map +1 -1
- package/dist/comments/comment-context.js +89 -1
- package/dist/comments/comment-context.js.map +1 -1
- package/dist/comments.cjs +3 -0
- package/dist/comments.cjs.map +1 -1
- package/dist/comments.d.ts +1 -1
- package/dist/comments.d.ts.map +1 -1
- package/dist/comments.js +4 -1
- package/dist/components/Combobox.cjs +145 -34
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +24 -1
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +147 -36
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/DatePicker.cjs +1 -1
- package/dist/components/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker.js +1 -1
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/DateTimePicker.cjs +1 -1
- package/dist/components/DateTimePicker.cjs.map +1 -1
- package/dist/components/DateTimePicker.js +1 -1
- package/dist/components/DateTimePicker.js.map +1 -1
- package/dist/components/FilterBar.cjs +41 -459
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +4 -62
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +13 -430
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/InputField.cjs +97 -0
- package/dist/components/InputField.cjs.map +1 -0
- package/dist/components/InputField.d.ts +42 -0
- package/dist/components/InputField.d.ts.map +1 -0
- package/dist/components/InputField.js +97 -0
- package/dist/components/InputField.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +90 -15
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +92 -17
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MdxEditorField.cjs.map +1 -1
- package/dist/components/MdxEditorField.d.ts +1 -1
- package/dist/components/MdxEditorField.d.ts.map +1 -1
- package/dist/components/MdxEditorField.js.map +1 -1
- package/dist/components/MdxEditorToolbar.cjs +6 -1
- package/dist/components/MdxEditorToolbar.cjs.map +1 -1
- package/dist/components/MdxEditorToolbar.d.ts.map +1 -1
- package/dist/components/MdxEditorToolbar.js +6 -1
- package/dist/components/MdxEditorToolbar.js.map +1 -1
- package/dist/components/MultiSelect.cjs +0 -1
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +0 -1
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/SearchInput.cjs +14 -43
- package/dist/components/SearchInput.cjs.map +1 -1
- package/dist/components/SearchInput.d.ts +6 -5
- package/dist/components/SearchInput.d.ts.map +1 -1
- package/dist/components/SearchInput.js +15 -44
- package/dist/components/SearchInput.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +155 -67
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts +34 -16
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +158 -70
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/SecretKeySelector.model.cjs +32 -0
- package/dist/components/SecretKeySelector.model.cjs.map +1 -0
- package/dist/components/SecretKeySelector.model.d.ts +4 -0
- package/dist/components/SecretKeySelector.model.d.ts.map +1 -0
- package/dist/components/SecretKeySelector.model.js +32 -0
- package/dist/components/SecretKeySelector.model.js.map +1 -0
- package/dist/components/SegmentedControl.cjs +41 -6
- package/dist/components/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl.d.ts +7 -3
- package/dist/components/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl.js +41 -6
- package/dist/components/SegmentedControl.js.map +1 -1
- package/dist/components/filter-bar-context.cjs +10 -0
- package/dist/components/filter-bar-context.cjs.map +1 -0
- package/dist/components/filter-bar-context.d.ts +5 -0
- package/dist/components/filter-bar-context.d.ts.map +1 -0
- package/dist/components/filter-bar-context.js +10 -0
- package/dist/components/filter-bar-context.js.map +1 -0
- package/dist/components/filter-bar-field-utils.cjs +119 -0
- package/dist/components/filter-bar-field-utils.cjs.map +1 -0
- package/dist/components/filter-bar-field-utils.d.ts +21 -0
- package/dist/components/filter-bar-field-utils.d.ts.map +1 -0
- package/dist/components/filter-bar-field-utils.js +119 -0
- package/dist/components/filter-bar-field-utils.js.map +1 -0
- package/dist/components/filter-bar-multi.cjs +193 -0
- package/dist/components/filter-bar-multi.cjs.map +1 -0
- package/dist/components/filter-bar-multi.d.ts +74 -0
- package/dist/components/filter-bar-multi.d.ts.map +1 -0
- package/dist/components/filter-bar-multi.js +193 -0
- package/dist/components/filter-bar-multi.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +81 -10
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +82 -11
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-fields.cjs +156 -24
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts +9 -1
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +156 -24
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-object.cjs +35 -12
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +37 -14
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +21 -3
- 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 +22 -4
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +123 -13
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +1 -0
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +123 -13
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +30 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +19 -0
- package/dist/components/json-schema-form-utils.cjs.map +1 -1
- package/dist/components/json-schema-form-utils.d.ts +3 -0
- package/dist/components/json-schema-form-utils.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.js +19 -0
- package/dist/components/json-schema-form-utils.js.map +1 -1
- package/dist/components/loading.cjs +17 -0
- package/dist/components/loading.cjs.map +1 -1
- package/dist/components/loading.d.ts +9 -0
- package/dist/components/loading.d.ts.map +1 -1
- package/dist/components/loading.js +17 -0
- package/dist/components/loading.js.map +1 -1
- package/dist/components/mdx-editor-field-plugins.cjs +28 -4
- package/dist/components/mdx-editor-field-plugins.cjs.map +1 -1
- package/dist/components/mdx-editor-field-plugins.d.ts.map +1 -1
- package/dist/components/mdx-editor-field-plugins.js +28 -4
- package/dist/components/mdx-editor-field-plugins.js.map +1 -1
- package/dist/components/mdx-editor-options.d.ts +23 -1
- package/dist/components/mdx-editor-options.d.ts.map +1 -1
- package/dist/components.cjs +13 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +20 -16
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +14 -2
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +301 -51
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts +21 -3
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +301 -51
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/CodeBlock.cjs +100 -20
- package/dist/data/CodeBlock.cjs.map +1 -1
- package/dist/data/CodeBlock.d.ts +18 -1
- package/dist/data/CodeBlock.d.ts.map +1 -1
- package/dist/data/CodeBlock.js +101 -21
- package/dist/data/CodeBlock.js.map +1 -1
- package/dist/data/CodeDiff.cjs +221 -0
- package/dist/data/CodeDiff.cjs.map +1 -0
- package/dist/data/CodeDiff.d.ts +24 -0
- package/dist/data/CodeDiff.d.ts.map +1 -0
- package/dist/data/CodeDiff.js +221 -0
- package/dist/data/CodeDiff.js.map +1 -0
- package/dist/data/DataTable.cjs +359 -219
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +12 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +353 -213
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/FilterPill.cjs +43 -35
- package/dist/data/FilterPill.cjs.map +1 -1
- package/dist/data/FilterPill.d.ts +9 -1
- package/dist/data/FilterPill.d.ts.map +1 -1
- package/dist/data/FilterPill.js +43 -35
- package/dist/data/FilterPill.js.map +1 -1
- package/dist/data/FixtureEditor/FenceForm.cjs +123 -0
- package/dist/data/FixtureEditor/FenceForm.cjs.map +1 -0
- package/dist/data/FixtureEditor/FenceForm.d.ts +14 -0
- package/dist/data/FixtureEditor/FenceForm.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FenceForm.js +123 -0
- package/dist/data/FixtureEditor/FenceForm.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.cjs +236 -0
- package/dist/data/FixtureEditor/FixtureEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.d.ts +3 -0
- package/dist/data/FixtureEditor/FixtureEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.js +236 -0
- package/dist/data/FixtureEditor/FixtureEditor.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.cjs +128 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts +8 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.js +128 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs +148 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts +11 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js +148 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.cjs +35 -0
- package/dist/data/FixtureEditor/RawFenceEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.d.ts +11 -0
- package/dist/data/FixtureEditor/RawFenceEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.js +35 -0
- package/dist/data/FixtureEditor/RawFenceEditor.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.cjs +130 -0
- package/dist/data/FixtureEditor/fixture-blocks.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.d.ts +26 -0
- package/dist/data/FixtureEditor/fixture-blocks.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.js +130 -0
- package/dist/data/FixtureEditor/fixture-blocks.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.cjs +17 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.d.ts +3 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.js +17 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs +300 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts +32 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.js +300 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -0
- package/dist/data/FixtureEditor/index.d.ts +5 -0
- package/dist/data/FixtureEditor/index.d.ts.map +1 -0
- package/dist/data/FixtureEditor/types.d.ts +44 -0
- package/dist/data/FixtureEditor/types.d.ts.map +1 -0
- package/dist/data/LogDetails.cjs +4 -4
- package/dist/data/LogDetails.cjs.map +1 -1
- package/dist/data/LogDetails.js +4 -4
- package/dist/data/LogDetails.js.map +1 -1
- package/dist/data/Markdown.cjs +29 -1
- package/dist/data/Markdown.cjs.map +1 -1
- package/dist/data/Markdown.d.ts +3 -2
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js +30 -2
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/Properties.cjs +160 -40
- package/dist/data/Properties.cjs.map +1 -1
- package/dist/data/Properties.d.ts +8 -2
- package/dist/data/Properties.d.ts.map +1 -1
- package/dist/data/Properties.js +160 -40
- package/dist/data/Properties.js.map +1 -1
- package/dist/data/SchemaViewer.cjs +1 -1
- package/dist/data/SchemaViewer.cjs.map +1 -1
- package/dist/data/SchemaViewer.js +2 -2
- package/dist/data/SchemaViewer.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +336 -18
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +13 -4
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +336 -18
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.test-utils.d.ts +12 -0
- package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -0
- package/dist/data/ai/PolicyTree.cjs +265 -0
- package/dist/data/ai/PolicyTree.cjs.map +1 -0
- package/dist/data/ai/PolicyTree.d.ts +33 -0
- package/dist/data/ai/PolicyTree.d.ts.map +1 -0
- package/dist/data/ai/PolicyTree.js +265 -0
- package/dist/data/ai/PolicyTree.js.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +251 -0
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +31 -0
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.js +251 -0
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -0
- package/dist/data/ai/PromptPicker/index.d.ts +4 -0
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.cjs +39 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.d.ts +9 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.js +39 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.js.map +1 -0
- package/dist/data/ai/PromptPicker/types.d.ts +25 -0
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.cjs +242 -0
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.d.ts +42 -0
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.js +242 -0
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -0
- package/dist/data/ai/RuntimeModePicker.cjs +61 -0
- package/dist/data/ai/RuntimeModePicker.cjs.map +1 -0
- package/dist/data/ai/RuntimeModePicker.d.ts +12 -0
- package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -0
- package/dist/data/ai/RuntimeModePicker.js +61 -0
- package/dist/data/ai/RuntimeModePicker.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +432 -0
- package/dist/data/ai/SessionInspector.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.d.ts +11 -0
- package/dist/data/ai/SessionInspector.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.js +432 -0
- package/dist/data/ai/SessionInspector.js.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +208 -196
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +39 -3
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.grouping.cjs +44 -0
- package/dist/data/ai/SessionViewer.grouping.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.grouping.d.ts +17 -0
- package/dist/data/ai/SessionViewer.grouping.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.grouping.js +44 -0
- package/dist/data/ai/SessionViewer.grouping.js.map +1 -0
- package/dist/data/ai/SessionViewer.input.cjs +219 -0
- package/dist/data/ai/SessionViewer.input.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.input.d.ts +44 -0
- package/dist/data/ai/SessionViewer.input.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.input.js +219 -0
- package/dist/data/ai/SessionViewer.input.js.map +1 -0
- package/dist/data/ai/SessionViewer.js +209 -197
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +203 -105
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +45 -7
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +203 -105
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +751 -0
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.rows.d.ts +20 -0
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.rows.js +751 -0
- package/dist/data/ai/SessionViewer.rows.js.map +1 -0
- package/dist/data/ai/SessionViewer.unified.d.ts +193 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -0
- package/dist/data/ai/SessionViewerMenu.cjs +57 -68
- package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
- package/dist/data/ai/SessionViewerMenu.d.ts +3 -3
- package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.js +58 -69
- package/dist/data/ai/SessionViewerMenu.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.cjs +25 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.js +25 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +6 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +44 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs +137 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js +137 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.cjs +29 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.js +29 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +481 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +16 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +481 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +421 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +17 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +421 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +98 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +10 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +98 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.cjs +23 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +7 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.js +23 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs +77 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +14 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js +77 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +65 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +65 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +227 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +227 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.cjs +45 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts +7 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.js +45 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.cjs +287 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +79 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.js +287 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +213 -0
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +41 -0
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.js +213 -0
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.cjs +252 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts +36 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.js +252 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs +214 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts +35 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.js +214 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs +15 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +13 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.js +15 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.cjs +74 -0
- package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts +19 -0
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.js +74 -0
- package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +144 -0
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +28 -0
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.js +144 -0
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.cjs +55 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.d.ts +9 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.js +55 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +398 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +169 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js +398 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -0
- package/dist/data/ai/ToolPreferences.cjs +705 -165
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +29 -5
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +707 -167
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.cjs +549 -0
- package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.d.ts +7 -0
- package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.js +549 -0
- package/dist/data/ai/ToolSchemaBrowser.js.map +1 -0
- package/dist/data/ai/agent-action-icons.cjs +78 -0
- package/dist/data/ai/agent-action-icons.cjs.map +1 -0
- package/dist/data/ai/agent-action-icons.d.ts +22 -0
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -0
- package/dist/data/ai/agent-action-icons.js +78 -0
- package/dist/data/ai/agent-action-icons.js.map +1 -0
- package/dist/data/ai/index.d.ts +21 -6
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.cjs +23 -0
- package/dist/data/ai/model-capabilities.cjs.map +1 -0
- package/dist/data/ai/model-capabilities.d.ts +9 -0
- package/dist/data/ai/model-capabilities.d.ts.map +1 -0
- package/dist/data/ai/model-capabilities.js +23 -0
- package/dist/data/ai/model-capabilities.js.map +1 -0
- package/dist/data/ai/runtime-mode.cjs +133 -0
- package/dist/data/ai/runtime-mode.cjs.map +1 -0
- package/dist/data/ai/runtime-mode.d.ts +31 -0
- package/dist/data/ai/runtime-mode.d.ts.map +1 -0
- package/dist/data/ai/runtime-mode.js +133 -0
- package/dist/data/ai/runtime-mode.js.map +1 -0
- package/dist/data/ai/session-categories.cjs +34 -0
- package/dist/data/ai/session-categories.cjs.map +1 -1
- package/dist/data/ai/session-categories.d.ts +2 -0
- package/dist/data/ai/session-categories.d.ts.map +1 -1
- package/dist/data/ai/session-categories.js +34 -0
- package/dist/data/ai/session-categories.js.map +1 -1
- package/dist/data/ai/session-cost.cjs +13 -0
- package/dist/data/ai/session-cost.cjs.map +1 -0
- package/dist/data/ai/session-cost.d.ts +8 -0
- package/dist/data/ai/session-cost.d.ts.map +1 -0
- package/dist/data/ai/session-cost.js +13 -0
- package/dist/data/ai/session-cost.js.map +1 -0
- package/dist/data/ai/tool-name.d.ts +10 -0
- package/dist/data/ai/tool-name.d.ts.map +1 -0
- package/dist/data/ai/use-session-scroll.cjs +96 -0
- package/dist/data/ai/use-session-scroll.cjs.map +1 -0
- package/dist/data/ai/use-session-scroll.d.ts +43 -0
- package/dist/data/ai/use-session-scroll.d.ts.map +1 -0
- package/dist/data/ai/use-session-scroll.js +96 -0
- package/dist/data/ai/use-session-scroll.js.map +1 -0
- package/dist/data/cells/TagList.cjs +4 -2
- package/dist/data/cells/TagList.cjs.map +1 -1
- package/dist/data/cells/TagList.d.ts +2 -1
- package/dist/data/cells/TagList.d.ts.map +1 -1
- package/dist/data/cells/TagList.js +4 -2
- package/dist/data/cells/TagList.js.map +1 -1
- package/dist/data/chat/Chat.cjs +49 -15
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +16 -2
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +49 -15
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +164 -0
- package/dist/data/chat/ContextMeter.cjs.map +1 -0
- package/dist/data/chat/ContextMeter.d.ts +50 -0
- package/dist/data/chat/ContextMeter.d.ts.map +1 -0
- package/dist/data/chat/ContextMeter.js +164 -0
- package/dist/data/chat/ContextMeter.js.map +1 -0
- package/dist/data/chat/ModelSelector.cjs +139 -10
- package/dist/data/chat/ModelSelector.cjs.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts +44 -3
- package/dist/data/chat/ModelSelector.d.ts.map +1 -1
- package/dist/data/chat/ModelSelector.js +141 -12
- package/dist/data/chat/ModelSelector.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +83 -69
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts +3 -3
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +83 -69
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/effort-icons.cjs +43 -0
- package/dist/data/chat/effort-icons.cjs.map +1 -0
- package/dist/data/chat/effort-icons.d.ts +10 -0
- package/dist/data/chat/effort-icons.d.ts.map +1 -0
- package/dist/data/chat/effort-icons.js +43 -0
- package/dist/data/chat/effort-icons.js.map +1 -0
- package/dist/data/chat/index.d.ts +3 -3
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.cjs +25 -6
- package/dist/data/chat/provider-icons.cjs.map +1 -1
- package/dist/data/chat/provider-icons.d.ts +3 -5
- package/dist/data/chat/provider-icons.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.js +25 -6
- package/dist/data/chat/provider-icons.js.map +1 -1
- package/dist/data/chat/types.cjs +42 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +83 -19
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js +42 -0
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/code-block-actions.cjs +101 -0
- package/dist/data/code-block-actions.cjs.map +1 -0
- package/dist/data/code-block-actions.d.ts +20 -0
- package/dist/data/code-block-actions.d.ts.map +1 -0
- package/dist/data/code-block-actions.js +101 -0
- package/dist/data/code-block-actions.js.map +1 -0
- package/dist/data/code-diff.cjs +106 -0
- package/dist/data/code-diff.cjs.map +1 -0
- package/dist/data/code-diff.d.ts +20 -0
- package/dist/data/code-diff.d.ts.map +1 -0
- package/dist/data/code-diff.js +106 -0
- package/dist/data/code-diff.js.map +1 -0
- package/dist/data/code-highlight.cjs +30 -0
- package/dist/data/code-highlight.cjs.map +1 -1
- package/dist/data/code-highlight.d.ts +8 -0
- package/dist/data/code-highlight.d.ts.map +1 -1
- package/dist/data/code-highlight.js +30 -0
- package/dist/data/code-highlight.js.map +1 -1
- package/dist/data/git/GitChangeList.cjs +410 -0
- package/dist/data/git/GitChangeList.cjs.map +1 -0
- package/dist/data/git/GitChangeList.d.ts +69 -0
- package/dist/data/git/GitChangeList.d.ts.map +1 -0
- package/dist/data/git/GitChangeList.js +410 -0
- package/dist/data/git/GitChangeList.js.map +1 -0
- package/dist/data/git/git-dates.cjs +37 -0
- package/dist/data/git/git-dates.cjs.map +1 -0
- package/dist/data/git/git-dates.d.ts +4 -0
- package/dist/data/git/git-dates.d.ts.map +1 -0
- package/dist/data/git/git-dates.js +37 -0
- package/dist/data/git/git-dates.js.map +1 -0
- package/dist/data/git/index.d.ts +3 -0
- package/dist/data/git/index.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.cjs +323 -0
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.cjs +99 -0
- package/dist/data/query-browser/QueryBrowser.completion.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.d.ts +34 -0
- package/dist/data/query-browser/QueryBrowser.completion.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.js +99 -0
- package/dist/data/query-browser/QueryBrowser.completion.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.d.ts +42 -0
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.js +323 -0
- package/dist/data/query-browser/QueryBrowser.js.map +1 -0
- package/dist/data/query-browser/index.d.ts +3 -0
- package/dist/data/query-browser/index.d.ts.map +1 -0
- package/dist/data/test-runner/TestFilterBar.cjs +14 -9
- package/dist/data/test-runner/TestFilterBar.cjs.map +1 -1
- package/dist/data/test-runner/TestFilterBar.d.ts.map +1 -1
- package/dist/data/test-runner/TestFilterBar.js +15 -10
- package/dist/data/test-runner/TestFilterBar.js.map +1 -1
- package/dist/data/test-runner/TestRunSummary.cjs +1 -11
- package/dist/data/test-runner/TestRunSummary.cjs.map +1 -1
- package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunSummary.js +2 -12
- package/dist/data/test-runner/TestRunSummary.js.map +1 -1
- package/dist/data/test-runner/TestRunner.cjs +3 -12
- package/dist/data/test-runner/TestRunner.cjs.map +1 -1
- package/dist/data/test-runner/TestRunner.d.ts +8 -1
- package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunner.js +4 -13
- package/dist/data/test-runner/TestRunner.js.map +1 -1
- package/dist/data/test-runner/filterState.cjs +8 -0
- package/dist/data/test-runner/filterState.cjs.map +1 -1
- package/dist/data/test-runner/filterState.d.ts +2 -0
- package/dist/data/test-runner/filterState.d.ts.map +1 -1
- package/dist/data/test-runner/filterState.js +9 -1
- package/dist/data/test-runner/filterState.js.map +1 -1
- package/dist/data/test-runner/index.d.ts +2 -2
- package/dist/data/test-runner/index.d.ts.map +1 -1
- package/dist/data/test-runner/status.cjs +16 -0
- package/dist/data/test-runner/status.cjs.map +1 -1
- package/dist/data/test-runner/status.d.ts +9 -0
- package/dist/data/test-runner/status.d.ts.map +1 -1
- package/dist/data/test-runner/status.js +16 -0
- package/dist/data/test-runner/status.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.cjs.map +1 -1
- package/dist/data/version-info.js +3 -3
- package/dist/data/version-info.js.map +1 -1
- package/dist/data.cjs +191 -15
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +7 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +180 -4
- package/dist/data.js.map +1 -1
- package/dist/icons/components/UiArrowFatUp.cjs +15 -0
- package/dist/icons/components/UiArrowFatUp.cjs.map +1 -0
- package/dist/icons/components/UiArrowFatUp.d.ts +15 -0
- package/dist/icons/components/UiArrowFatUp.d.ts.map +1 -0
- package/dist/icons/components/UiArrowFatUp.js +15 -0
- package/dist/icons/components/UiArrowFatUp.js.map +1 -0
- package/dist/icons/components/UiAsterisk.cjs +15 -0
- package/dist/icons/components/UiAsterisk.cjs.map +1 -0
- package/dist/icons/components/UiAsterisk.d.ts +15 -0
- package/dist/icons/components/UiAsterisk.d.ts.map +1 -0
- package/dist/icons/components/UiAsterisk.js +15 -0
- package/dist/icons/components/UiAsterisk.js.map +1 -0
- package/dist/icons/components/UiAtom.cjs +15 -0
- package/dist/icons/components/UiAtom.cjs.map +1 -0
- package/dist/icons/components/UiAtom.d.ts +15 -0
- package/dist/icons/components/UiAtom.d.ts.map +1 -0
- package/dist/icons/components/UiAtom.js +15 -0
- package/dist/icons/components/UiAtom.js.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.cjs +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.cjs.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.d.ts +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.js +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.js +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.js +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.js +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.js +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.js +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.js.map +1 -0
- package/dist/icons/components/UiChatDots.cjs +15 -0
- package/dist/icons/components/UiChatDots.cjs.map +1 -0
- package/dist/icons/components/UiChatDots.d.ts +15 -0
- package/dist/icons/components/UiChatDots.d.ts.map +1 -0
- package/dist/icons/components/UiChatDots.js +15 -0
- package/dist/icons/components/UiChatDots.js.map +1 -0
- package/dist/icons/components/UiCoins.cjs +15 -0
- package/dist/icons/components/UiCoins.cjs.map +1 -0
- package/dist/icons/components/UiCoins.d.ts +15 -0
- package/dist/icons/components/UiCoins.d.ts.map +1 -0
- package/dist/icons/components/UiCoins.js +15 -0
- package/dist/icons/components/UiCoins.js.map +1 -0
- package/dist/icons/components/UiCompass.cjs +15 -0
- package/dist/icons/components/UiCompass.cjs.map +1 -0
- package/dist/icons/components/UiCompass.d.ts +15 -0
- package/dist/icons/components/UiCompass.d.ts.map +1 -0
- package/dist/icons/components/UiCompass.js +15 -0
- package/dist/icons/components/UiCompass.js.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.cjs +15 -0
- package/dist/icons/components/UiCurrencyDollar.cjs.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.d.ts +15 -0
- package/dist/icons/components/UiCurrencyDollar.d.ts.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.js +15 -0
- package/dist/icons/components/UiCurrencyDollar.js.map +1 -0
- package/dist/icons/components/UiCursorClick.cjs +15 -0
- package/dist/icons/components/UiCursorClick.cjs.map +1 -0
- package/dist/icons/components/UiCursorClick.d.ts +15 -0
- package/dist/icons/components/UiCursorClick.d.ts.map +1 -0
- package/dist/icons/components/UiCursorClick.js +15 -0
- package/dist/icons/components/UiCursorClick.js.map +1 -0
- package/dist/icons/components/UiCursorText.cjs +15 -0
- package/dist/icons/components/UiCursorText.cjs.map +1 -0
- package/dist/icons/components/UiCursorText.d.ts +15 -0
- package/dist/icons/components/UiCursorText.d.ts.map +1 -0
- package/dist/icons/components/UiCursorText.js +15 -0
- package/dist/icons/components/UiCursorText.js.map +1 -0
- package/dist/icons/components/UiDebugContinue.cjs +10 -0
- package/dist/icons/components/UiDebugContinue.cjs.map +1 -0
- package/dist/icons/components/UiDebugContinue.d.ts +9 -0
- package/dist/icons/components/UiDebugContinue.d.ts.map +1 -0
- package/dist/icons/components/UiDebugContinue.js +10 -0
- package/dist/icons/components/UiDebugContinue.js.map +1 -0
- package/dist/icons/components/UiDebugStepInto.cjs +10 -0
- package/dist/icons/components/UiDebugStepInto.cjs.map +1 -0
- package/dist/icons/components/UiDebugStepInto.d.ts +9 -0
- package/dist/icons/components/UiDebugStepInto.d.ts.map +1 -0
- package/dist/icons/components/UiDebugStepInto.js +10 -0
- package/dist/icons/components/UiDebugStepInto.js.map +1 -0
- package/dist/icons/components/UiDebugStepOut.cjs +10 -0
- package/dist/icons/components/UiDebugStepOut.cjs.map +1 -0
- package/dist/icons/components/UiDebugStepOut.d.ts +9 -0
- package/dist/icons/components/UiDebugStepOut.d.ts.map +1 -0
- package/dist/icons/components/UiDebugStepOut.js +10 -0
- package/dist/icons/components/UiDebugStepOut.js.map +1 -0
- package/dist/icons/components/UiDebugStop.cjs +10 -0
- package/dist/icons/components/UiDebugStop.cjs.map +1 -0
- package/dist/icons/components/UiDebugStop.d.ts +9 -0
- package/dist/icons/components/UiDebugStop.d.ts.map +1 -0
- package/dist/icons/components/UiDebugStop.js +10 -0
- package/dist/icons/components/UiDebugStop.js.map +1 -0
- package/dist/icons/components/UiEllipsisBold.cjs +10 -0
- package/dist/icons/components/UiEllipsisBold.cjs.map +1 -0
- package/dist/icons/components/UiEllipsisBold.d.ts +9 -0
- package/dist/icons/components/UiEllipsisBold.d.ts.map +1 -0
- package/dist/icons/components/UiEllipsisBold.js +10 -0
- package/dist/icons/components/UiEllipsisBold.js.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.cjs +15 -0
- package/dist/icons/components/UiFastForwardCircle.cjs.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.d.ts +15 -0
- package/dist/icons/components/UiFastForwardCircle.d.ts.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.js +15 -0
- package/dist/icons/components/UiFastForwardCircle.js.map +1 -0
- package/dist/icons/components/UiFilePlus.cjs +15 -0
- package/dist/icons/components/UiFilePlus.cjs.map +1 -0
- package/dist/icons/components/UiFilePlus.d.ts +15 -0
- package/dist/icons/components/UiFilePlus.d.ts.map +1 -0
- package/dist/icons/components/UiFilePlus.js +15 -0
- package/dist/icons/components/UiFilePlus.js.map +1 -0
- package/dist/icons/components/UiGavel.cjs +15 -0
- package/dist/icons/components/UiGavel.cjs.map +1 -0
- package/dist/icons/components/UiGavel.d.ts +15 -0
- package/dist/icons/components/UiGavel.d.ts.map +1 -0
- package/dist/icons/components/UiGavel.js +15 -0
- package/dist/icons/components/UiGavel.js.map +1 -0
- package/dist/icons/components/UiGearSix.cjs +15 -0
- package/dist/icons/components/UiGearSix.cjs.map +1 -0
- package/dist/icons/components/UiGearSix.d.ts +15 -0
- package/dist/icons/components/UiGearSix.d.ts.map +1 -0
- package/dist/icons/components/UiGearSix.js +15 -0
- package/dist/icons/components/UiGearSix.js.map +1 -0
- package/dist/icons/components/UiGitCommit.cjs +15 -0
- package/dist/icons/components/UiGitCommit.cjs.map +1 -0
- package/dist/icons/components/UiGitCommit.d.ts +15 -0
- package/dist/icons/components/UiGitCommit.d.ts.map +1 -0
- package/dist/icons/components/UiGitCommit.js +15 -0
- package/dist/icons/components/UiGitCommit.js.map +1 -0
- package/dist/icons/components/UiHandPalm.cjs +15 -0
- package/dist/icons/components/UiHandPalm.cjs.map +1 -0
- package/dist/icons/components/UiHandPalm.d.ts +15 -0
- package/dist/icons/components/UiHandPalm.d.ts.map +1 -0
- package/dist/icons/components/UiHandPalm.js +15 -0
- package/dist/icons/components/UiHandPalm.js.map +1 -0
- package/dist/icons/components/UiKeyboard.cjs +15 -0
- package/dist/icons/components/UiKeyboard.cjs.map +1 -0
- package/dist/icons/components/UiKeyboard.d.ts +15 -0
- package/dist/icons/components/UiKeyboard.d.ts.map +1 -0
- package/dist/icons/components/UiKeyboard.js +15 -0
- package/dist/icons/components/UiKeyboard.js.map +1 -0
- package/dist/icons/components/UiListChecks.cjs +15 -0
- package/dist/icons/components/UiListChecks.cjs.map +1 -0
- package/dist/icons/components/UiListChecks.d.ts +15 -0
- package/dist/icons/components/UiListChecks.d.ts.map +1 -0
- package/dist/icons/components/UiListChecks.js +15 -0
- package/dist/icons/components/UiListChecks.js.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.cjs +10 -0
- package/dist/icons/components/UiLogoAnthropic.cjs.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.d.ts +9 -0
- package/dist/icons/components/UiLogoAnthropic.d.ts.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.js +10 -0
- package/dist/icons/components/UiLogoAnthropic.js.map +1 -0
- package/dist/icons/components/UiLogoClaude.cjs +10 -0
- package/dist/icons/components/UiLogoClaude.cjs.map +1 -0
- package/dist/icons/components/UiLogoClaude.d.ts +9 -0
- package/dist/icons/components/UiLogoClaude.d.ts.map +1 -0
- package/dist/icons/components/UiLogoClaude.js +10 -0
- package/dist/icons/components/UiLogoClaude.js.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.cjs +10 -0
- package/dist/icons/components/UiLogoDeepseek.cjs.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.d.ts +9 -0
- package/dist/icons/components/UiLogoDeepseek.d.ts.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.js +10 -0
- package/dist/icons/components/UiLogoDeepseek.js.map +1 -0
- package/dist/icons/components/UiLogoGemini.cjs +10 -0
- package/dist/icons/components/UiLogoGemini.cjs.map +1 -0
- package/dist/icons/components/UiLogoGemini.d.ts +9 -0
- package/dist/icons/components/UiLogoGemini.d.ts.map +1 -0
- package/dist/icons/components/UiLogoGemini.js +10 -0
- package/dist/icons/components/UiLogoGemini.js.map +1 -0
- package/dist/icons/components/UiLogoGoogle.cjs +10 -0
- package/dist/icons/components/UiLogoGoogle.cjs.map +1 -0
- package/dist/icons/components/UiLogoGoogle.d.ts +9 -0
- package/dist/icons/components/UiLogoGoogle.d.ts.map +1 -0
- package/dist/icons/components/UiLogoGoogle.js +10 -0
- package/dist/icons/components/UiLogoGoogle.js.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.cjs +10 -0
- package/dist/icons/components/UiLogoHuggingface.cjs.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.d.ts +9 -0
- package/dist/icons/components/UiLogoHuggingface.d.ts.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.js +10 -0
- package/dist/icons/components/UiLogoHuggingface.js.map +1 -0
- package/dist/icons/components/UiLogoMeta.cjs +10 -0
- package/dist/icons/components/UiLogoMeta.cjs.map +1 -0
- package/dist/icons/components/UiLogoMeta.d.ts +9 -0
- package/dist/icons/components/UiLogoMeta.d.ts.map +1 -0
- package/dist/icons/components/UiLogoMeta.js +10 -0
- package/dist/icons/components/UiLogoMeta.js.map +1 -0
- package/dist/icons/components/UiLogoMistral.cjs +10 -0
- package/dist/icons/components/UiLogoMistral.cjs.map +1 -0
- package/dist/icons/components/UiLogoMistral.d.ts +9 -0
- package/dist/icons/components/UiLogoMistral.d.ts.map +1 -0
- package/dist/icons/components/UiLogoMistral.js +10 -0
- package/dist/icons/components/UiLogoMistral.js.map +1 -0
- package/dist/icons/components/UiLogoOllama.cjs +10 -0
- package/dist/icons/components/UiLogoOllama.cjs.map +1 -0
- package/dist/icons/components/UiLogoOllama.d.ts +9 -0
- package/dist/icons/components/UiLogoOllama.d.ts.map +1 -0
- package/dist/icons/components/UiLogoOllama.js +10 -0
- package/dist/icons/components/UiLogoOllama.js.map +1 -0
- package/dist/icons/components/UiLogoOpenai.cjs +10 -0
- package/dist/icons/components/UiLogoOpenai.cjs.map +1 -0
- package/dist/icons/components/UiLogoOpenai.d.ts +9 -0
- package/dist/icons/components/UiLogoOpenai.d.ts.map +1 -0
- package/dist/icons/components/UiLogoOpenai.js +10 -0
- package/dist/icons/components/UiLogoOpenai.js.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.cjs +10 -0
- package/dist/icons/components/UiLogoPerplexity.cjs.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.d.ts +9 -0
- package/dist/icons/components/UiLogoPerplexity.d.ts.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.js +10 -0
- package/dist/icons/components/UiLogoPerplexity.js.map +1 -0
- package/dist/icons/components/UiPalette.cjs +15 -0
- package/dist/icons/components/UiPalette.cjs.map +1 -0
- package/dist/icons/components/UiPalette.d.ts +15 -0
- package/dist/icons/components/UiPalette.d.ts.map +1 -0
- package/dist/icons/components/UiPalette.js +15 -0
- package/dist/icons/components/UiPalette.js.map +1 -0
- package/dist/icons/components/UiPauseCircle.cjs +15 -0
- package/dist/icons/components/UiPauseCircle.cjs.map +1 -0
- package/dist/icons/components/UiPauseCircle.d.ts +15 -0
- package/dist/icons/components/UiPauseCircle.d.ts.map +1 -0
- package/dist/icons/components/UiPauseCircle.js +15 -0
- package/dist/icons/components/UiPauseCircle.js.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.cjs +15 -0
- package/dist/icons/components/UiPencilSimpleLine.cjs.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.d.ts +15 -0
- package/dist/icons/components/UiPencilSimpleLine.d.ts.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.js +15 -0
- package/dist/icons/components/UiPencilSimpleLine.js.map +1 -0
- package/dist/icons/components/UiPlugsConnected.cjs +15 -0
- package/dist/icons/components/UiPlugsConnected.cjs.map +1 -0
- package/dist/icons/components/UiPlugsConnected.d.ts +15 -0
- package/dist/icons/components/UiPlugsConnected.d.ts.map +1 -0
- package/dist/icons/components/UiPlugsConnected.js +15 -0
- package/dist/icons/components/UiPlugsConnected.js.map +1 -0
- package/dist/icons/components/UiProhibit.cjs +15 -0
- package/dist/icons/components/UiProhibit.cjs.map +1 -0
- package/dist/icons/components/UiProhibit.d.ts +15 -0
- package/dist/icons/components/UiProhibit.d.ts.map +1 -0
- package/dist/icons/components/UiProhibit.js +15 -0
- package/dist/icons/components/UiProhibit.js.map +1 -0
- package/dist/icons/components/UiRepeat.cjs +15 -0
- package/dist/icons/components/UiRepeat.cjs.map +1 -0
- package/dist/icons/components/UiRepeat.d.ts +15 -0
- package/dist/icons/components/UiRepeat.d.ts.map +1 -0
- package/dist/icons/components/UiRepeat.js +15 -0
- package/dist/icons/components/UiRepeat.js.map +1 -0
- package/dist/icons/components/UiScan.cjs +15 -0
- package/dist/icons/components/UiScan.cjs.map +1 -0
- package/dist/icons/components/UiScan.d.ts +15 -0
- package/dist/icons/components/UiScan.d.ts.map +1 -0
- package/dist/icons/components/UiScan.js +15 -0
- package/dist/icons/components/UiScan.js.map +1 -0
- package/dist/icons/components/UiScroll.cjs +15 -0
- package/dist/icons/components/UiScroll.cjs.map +1 -0
- package/dist/icons/components/UiScroll.d.ts +15 -0
- package/dist/icons/components/UiScroll.d.ts.map +1 -0
- package/dist/icons/components/UiScroll.js +15 -0
- package/dist/icons/components/UiScroll.js.map +1 -0
- package/dist/icons/components/UiShieldSlash.cjs +15 -0
- package/dist/icons/components/UiShieldSlash.cjs.map +1 -0
- package/dist/icons/components/UiShieldSlash.d.ts +15 -0
- package/dist/icons/components/UiShieldSlash.d.ts.map +1 -0
- package/dist/icons/components/UiShieldSlash.js +15 -0
- package/dist/icons/components/UiShieldSlash.js.map +1 -0
- package/dist/icons/components/UiStack.cjs +19 -0
- package/dist/icons/components/UiStack.cjs.map +1 -0
- package/dist/icons/components/UiStack.d.ts +15 -0
- package/dist/icons/components/UiStack.d.ts.map +1 -0
- package/dist/icons/components/UiStack.js +19 -0
- package/dist/icons/components/UiStack.js.map +1 -0
- package/dist/icons/components/UiStrategy.cjs +15 -0
- package/dist/icons/components/UiStrategy.cjs.map +1 -0
- package/dist/icons/components/UiStrategy.d.ts +15 -0
- package/dist/icons/components/UiStrategy.d.ts.map +1 -0
- package/dist/icons/components/UiStrategy.js +15 -0
- package/dist/icons/components/UiStrategy.js.map +1 -0
- package/dist/icons/components/UiThermometer.cjs +15 -0
- package/dist/icons/components/UiThermometer.cjs.map +1 -0
- package/dist/icons/components/UiThermometer.d.ts +15 -0
- package/dist/icons/components/UiThermometer.d.ts.map +1 -0
- package/dist/icons/components/UiThermometer.js +15 -0
- package/dist/icons/components/UiThermometer.js.map +1 -0
- package/dist/icons/components/UiTimer.cjs +15 -0
- package/dist/icons/components/UiTimer.cjs.map +1 -0
- package/dist/icons/components/UiTimer.d.ts +15 -0
- package/dist/icons/components/UiTimer.d.ts.map +1 -0
- package/dist/icons/components/UiTimer.js +15 -0
- package/dist/icons/components/UiTimer.js.map +1 -0
- package/dist/icons/index.d.ts +88 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons.cjs +140 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +140 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +213 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +204 -7
- package/dist/index.js.map +1 -1
- package/dist/layout/Workspace.cjs +191 -0
- package/dist/layout/Workspace.cjs.map +1 -0
- package/dist/layout/Workspace.d.ts +17 -0
- package/dist/layout/Workspace.d.ts.map +1 -0
- package/dist/layout/Workspace.js +191 -0
- package/dist/layout/Workspace.js.map +1 -0
- package/dist/layout/Workspace.model.cjs +142 -0
- package/dist/layout/Workspace.model.cjs.map +1 -0
- package/dist/layout/Workspace.model.d.ts +43 -0
- package/dist/layout/Workspace.model.d.ts.map +1 -0
- package/dist/layout/Workspace.model.js +142 -0
- package/dist/layout/Workspace.model.js.map +1 -0
- package/dist/layout/Workspace.regions.cjs +305 -0
- package/dist/layout/Workspace.regions.cjs.map +1 -0
- package/dist/layout/Workspace.regions.d.ts +17 -0
- package/dist/layout/Workspace.regions.d.ts.map +1 -0
- package/dist/layout/Workspace.regions.js +305 -0
- package/dist/layout/Workspace.regions.js.map +1 -0
- package/dist/lib/tokens.cjs +14 -0
- package/dist/lib/tokens.cjs.map +1 -0
- package/dist/lib/tokens.d.ts +5 -0
- package/dist/lib/tokens.d.ts.map +1 -0
- package/dist/lib/tokens.js +14 -0
- package/dist/lib/tokens.js.map +1 -0
- package/dist/monaco/MonacoEditor.cjs +69 -0
- package/dist/monaco/MonacoEditor.cjs.map +1 -0
- package/dist/monaco/MonacoEditor.d.ts +5 -0
- package/dist/monaco/MonacoEditor.d.ts.map +1 -0
- package/dist/monaco/MonacoEditor.js +52 -0
- package/dist/monaco/MonacoEditor.js.map +1 -0
- package/dist/monaco/MonacoProvider.cjs +22 -0
- package/dist/monaco/MonacoProvider.cjs.map +1 -0
- package/dist/monaco/MonacoProvider.d.ts +3 -0
- package/dist/monaco/MonacoProvider.d.ts.map +1 -0
- package/dist/monaco/MonacoProvider.js +22 -0
- package/dist/monaco/MonacoProvider.js.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.cjs +108 -0
- package/dist/monaco/MonacoSchemaEditor.cjs.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.d.ts +4 -0
- package/dist/monaco/MonacoSchemaEditor.d.ts.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.js +108 -0
- package/dist/monaco/MonacoSchemaEditor.js.map +1 -0
- package/dist/monaco/schema-normalizer.cjs +38 -0
- package/dist/monaco/schema-normalizer.cjs.map +1 -0
- package/dist/monaco/schema-normalizer.d.ts +7 -0
- package/dist/monaco/schema-normalizer.d.ts.map +1 -0
- package/dist/monaco/schema-normalizer.js +38 -0
- package/dist/monaco/schema-normalizer.js.map +1 -0
- package/dist/monaco/schema-registry.cjs +67 -0
- package/dist/monaco/schema-registry.cjs.map +1 -0
- package/dist/monaco/schema-registry.d.ts +3 -0
- package/dist/monaco/schema-registry.d.ts.map +1 -0
- package/dist/monaco/schema-registry.js +67 -0
- package/dist/monaco/schema-registry.js.map +1 -0
- package/dist/monaco/types.d.ts +31 -0
- package/dist/monaco/types.d.ts.map +1 -0
- package/dist/monaco/use-monaco-worker.cjs +10 -0
- package/dist/monaco/use-monaco-worker.cjs.map +1 -0
- package/dist/monaco/use-monaco-worker.d.ts +4 -0
- package/dist/monaco/use-monaco-worker.d.ts.map +1 -0
- package/dist/monaco/use-monaco-worker.js +10 -0
- package/dist/monaco/use-monaco-worker.js.map +1 -0
- package/dist/monaco-schema.cjs +5 -0
- package/dist/monaco-schema.cjs.map +1 -0
- package/dist/monaco-schema.d.ts +3 -0
- package/dist/monaco-schema.d.ts.map +1 -0
- package/dist/monaco-schema.js +5 -0
- package/dist/monaco-schema.js.map +1 -0
- package/dist/monaco.cjs +11 -0
- package/dist/monaco.cjs.map +1 -0
- package/dist/monaco.d.ts +6 -0
- package/dist/monaco.d.ts.map +1 -0
- package/dist/monaco.js +11 -0
- package/dist/monaco.js.map +1 -0
- package/dist/overlay/CellActions.cjs +183 -0
- package/dist/overlay/CellActions.cjs.map +1 -0
- package/dist/overlay/CellActions.d.ts +18 -0
- package/dist/overlay/CellActions.d.ts.map +1 -0
- package/dist/overlay/CellActions.js +183 -0
- package/dist/overlay/CellActions.js.map +1 -0
- package/dist/overlay/DropdownMenu.cjs +50 -59
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.d.ts +21 -2
- package/dist/overlay/DropdownMenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenu.js +38 -47
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.cjs +210 -0
- package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -0
- package/dist/overlay/DropdownMenuSubmenu.d.ts +12 -0
- package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -0
- package/dist/overlay/DropdownMenuSubmenu.js +210 -0
- package/dist/overlay/DropdownMenuSubmenu.js.map +1 -0
- package/dist/overlay/Modal.cjs +14 -2
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts +9 -2
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +14 -2
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/dropdownMenuContext.cjs +16 -0
- package/dist/overlay/dropdownMenuContext.cjs.map +1 -0
- package/dist/overlay/dropdownMenuContext.d.ts +16 -0
- package/dist/overlay/dropdownMenuContext.d.ts.map +1 -0
- package/dist/overlay/dropdownMenuContext.js +16 -0
- package/dist/overlay/dropdownMenuContext.js.map +1 -0
- package/dist/rpc/CommandOutput.cjs +28 -9
- package/dist/rpc/CommandOutput.cjs.map +1 -1
- package/dist/rpc/CommandOutput.d.ts +4 -2
- package/dist/rpc/CommandOutput.d.ts.map +1 -1
- package/dist/rpc/CommandOutput.js +28 -9
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +8 -1
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts +9 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +8 -1
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationActionBar.cjs +63 -41
- package/dist/rpc/OperationActionBar.cjs.map +1 -1
- package/dist/rpc/OperationActionBar.d.ts +2 -1
- package/dist/rpc/OperationActionBar.d.ts.map +1 -1
- package/dist/rpc/OperationActionBar.js +63 -41
- package/dist/rpc/OperationActionBar.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +111 -80
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +2 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +112 -81
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs +2 -0
- package/dist/rpc/OperationCommandPage.cjs.map +1 -1
- package/dist/rpc/OperationCommandPage.d.ts +3 -2
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js +2 -0
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.cjs +448 -0
- package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.d.ts +28 -0
- package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.js +448 -0
- package/dist/rpc/OperationEntityContextPicker.js.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.cjs +60 -0
- package/dist/rpc/OperationEntityContextPicker.model.cjs.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.d.ts +7 -0
- package/dist/rpc/OperationEntityContextPicker.model.d.ts.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.js +60 -0
- package/dist/rpc/OperationEntityContextPicker.model.js.map +1 -0
- package/dist/rpc/OperationEntityPage.cjs +47 -22
- package/dist/rpc/OperationEntityPage.cjs.map +1 -1
- package/dist/rpc/OperationEntityPage.d.ts +32 -2
- package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
- package/dist/rpc/OperationEntityPage.js +47 -22
- package/dist/rpc/OperationEntityPage.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +4 -2
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +3 -2
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +4 -2
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/SchemaActionForm.cjs +151 -17
- package/dist/rpc/SchemaActionForm.cjs.map +1 -1
- package/dist/rpc/SchemaActionForm.d.ts +7 -1
- package/dist/rpc/SchemaActionForm.d.ts.map +1 -1
- package/dist/rpc/SchemaActionForm.js +152 -18
- package/dist/rpc/SchemaActionForm.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +24 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/rpc.cjs +6 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +5 -3
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +6 -0
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +8 -0
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/tailwind-preset.d.ts.map +1 -1
- package/dist/tailwind-preset.js +8 -0
- package/dist/tailwind-preset.js.map +1 -1
- package/oxlint-plugins/README.md +82 -19
- package/oxlint-plugins/clicky-ui-no-adhoc-overlay.js +5 -50
- package/oxlint-plugins/clicky-ui-no-direct-z-index.js +134 -0
- package/oxlint-plugins/clicky-ui.js +3 -0
- package/package.json +26 -3
- package/dist/data/chat/ContextUsage.cjs +0 -99
- package/dist/data/chat/ContextUsage.cjs.map +0 -1
- package/dist/data/chat/ContextUsage.d.ts +0 -19
- package/dist/data/chat/ContextUsage.d.ts.map +0 -1
- package/dist/data/chat/ContextUsage.js +0 -99
- package/dist/data/chat/ContextUsage.js.map +0 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const rowNavigation = require("./rowNavigation.cjs");
|
|
4
|
+
const LABEL_KEYS = [
|
|
5
|
+
"name",
|
|
6
|
+
"title",
|
|
7
|
+
"ref",
|
|
8
|
+
"rule",
|
|
9
|
+
"type",
|
|
10
|
+
"reference"
|
|
11
|
+
];
|
|
12
|
+
function entityContextItemID(surfaceKey, recordID) {
|
|
13
|
+
return `entity:${surfaceKey}:${recordID}`;
|
|
14
|
+
}
|
|
15
|
+
function clickyRowRecord(row) {
|
|
16
|
+
return Object.fromEntries(
|
|
17
|
+
Object.entries(row.cells).map(([key, value]) => [key, rowNavigation.clickyNodeText(value).trim()]).filter(([, value]) => value !== "")
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
function contextItemFromEntityRow(surface, row, record) {
|
|
21
|
+
const recordID = rowNavigation.getClickyRowId(row);
|
|
22
|
+
if (!recordID) return void 0;
|
|
23
|
+
const rowRecord = clickyRowRecord(row);
|
|
24
|
+
const entries = Object.entries(rowRecord);
|
|
25
|
+
const byLowerKey = new Map(
|
|
26
|
+
entries.map(([key, value]) => [key.toLowerCase(), { key, value }])
|
|
27
|
+
);
|
|
28
|
+
const labelEntry = LABEL_KEYS.map((key) => byLowerKey.get(key)).find(
|
|
29
|
+
(entry) => entry == null ? void 0 : entry.value
|
|
30
|
+
);
|
|
31
|
+
const label = (labelEntry == null ? void 0 : labelEntry.value) ?? recordID;
|
|
32
|
+
const excluded = /* @__PURE__ */ new Set([
|
|
33
|
+
"_id",
|
|
34
|
+
"id",
|
|
35
|
+
"guid",
|
|
36
|
+
(labelEntry == null ? void 0 : labelEntry.key.toLowerCase()) ?? ""
|
|
37
|
+
]);
|
|
38
|
+
const fields = Object.fromEntries(
|
|
39
|
+
entries.filter(
|
|
40
|
+
([key, value]) => value !== "" && !excluded.has(key.toLowerCase())
|
|
41
|
+
).slice(0, 3)
|
|
42
|
+
);
|
|
43
|
+
return {
|
|
44
|
+
id: entityContextItemID(surface.key, recordID),
|
|
45
|
+
type: surface.key,
|
|
46
|
+
label,
|
|
47
|
+
...Object.keys(fields).length ? { fields } : {},
|
|
48
|
+
payload: {
|
|
49
|
+
surfaceKey: surface.key,
|
|
50
|
+
surfaceTitle: surface.title,
|
|
51
|
+
entity: surface.entity,
|
|
52
|
+
id: recordID,
|
|
53
|
+
record
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
exports.clickyRowRecord = clickyRowRecord;
|
|
58
|
+
exports.contextItemFromEntityRow = contextItemFromEntityRow;
|
|
59
|
+
exports.entityContextItemID = entityContextItemID;
|
|
60
|
+
//# sourceMappingURL=OperationEntityContextPicker.model.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationEntityContextPicker.model.cjs","sources":["../../src/rpc/OperationEntityContextPicker.model.ts"],"sourcesContent":["import type { ClickyRow } from \"../data/Clicky\";\nimport type { ChatContextItem } from \"../data/ai/context\";\nimport type { ClickySurface } from \"./types\";\nimport { clickyNodeText, getClickyRowId } from \"./rowNavigation\";\n\nconst LABEL_KEYS = [\n \"name\",\n \"title\",\n \"ref\",\n \"rule\",\n \"type\",\n \"reference\",\n] as const;\n\nexport function entityContextItemID(surfaceKey: string, recordID: string) {\n return `entity:${surfaceKey}:${recordID}`;\n}\n\nexport function clickyRowRecord(row: ClickyRow): Record<string, string> {\n return Object.fromEntries(\n Object.entries(row.cells)\n .map(([key, value]) => [key, clickyNodeText(value).trim()] as const)\n .filter(([, value]) => value !== \"\"),\n );\n}\n\nexport function contextItemFromEntityRow(\n surface: ClickySurface,\n row: ClickyRow,\n record: unknown,\n): ChatContextItem | undefined {\n const recordID = getClickyRowId(row);\n if (!recordID) return undefined;\n\n const rowRecord = clickyRowRecord(row);\n const entries = Object.entries(rowRecord);\n const byLowerKey = new Map(\n entries.map(([key, value]) => [key.toLowerCase(), { key, value }]),\n );\n const labelEntry = LABEL_KEYS.map((key) => byLowerKey.get(key)).find(\n (entry) => entry?.value,\n );\n const label = labelEntry?.value ?? recordID;\n const excluded = new Set([\n \"_id\",\n \"id\",\n \"guid\",\n labelEntry?.key.toLowerCase() ?? \"\",\n ]);\n const fields = Object.fromEntries(\n entries\n .filter(\n ([key, value]) => value !== \"\" && !excluded.has(key.toLowerCase()),\n )\n .slice(0, 3),\n );\n\n return {\n id: entityContextItemID(surface.key, recordID),\n type: surface.key,\n label,\n ...(Object.keys(fields).length ? { fields } : {}),\n payload: {\n surfaceKey: surface.key,\n surfaceTitle: surface.title,\n entity: surface.entity,\n id: recordID,\n record,\n },\n };\n}\n"],"names":["clickyNodeText","getClickyRowId"],"mappings":";;;AAKA,MAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,oBAAoB,YAAoB,UAAkB;AACxE,SAAO,UAAU,UAAU,IAAI,QAAQ;AACzC;AAEO,SAAS,gBAAgB,KAAwC;AACtE,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,IAAI,KAAK,EACrB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAKA,cAAAA,eAAe,KAAK,EAAE,KAAA,CAAM,CAAU,EAClE,OAAO,CAAC,CAAA,EAAG,KAAK,MAAM,UAAU,EAAE;AAAA,EAAA;AAEzC;AAEO,SAAS,yBACd,SACA,KACA,QAC6B;AAC7B,QAAM,WAAWC,cAAAA,eAAe,GAAG;AACnC,MAAI,CAAC,SAAU,QAAO;AAEtB,QAAM,YAAY,gBAAgB,GAAG;AACrC,QAAM,UAAU,OAAO,QAAQ,SAAS;AACxC,QAAM,aAAa,IAAI;AAAA,IACrB,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,KAAK,MAAA,CAAO,CAAC;AAAA,EAAA;AAEnE,QAAM,aAAa,WAAW,IAAI,CAAC,QAAQ,WAAW,IAAI,GAAG,CAAC,EAAE;AAAA,IAC9D,CAAC,UAAU,+BAAO;AAAA,EAAA;AAEpB,QAAM,SAAQ,yCAAY,UAAS;AACnC,QAAM,+BAAe,IAAI;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,KACA,yCAAY,IAAI,kBAAiB;AAAA,EAAA,CAClC;AACD,QAAM,SAAS,OAAO;AAAA,IACpB,QACG;AAAA,MACC,CAAC,CAAC,KAAK,KAAK,MAAM,UAAU,MAAM,CAAC,SAAS,IAAI,IAAI,YAAA,CAAa;AAAA,IAAA,EAElE,MAAM,GAAG,CAAC;AAAA,EAAA;AAGf,SAAO;AAAA,IACL,IAAI,oBAAoB,QAAQ,KAAK,QAAQ;AAAA,IAC7C,MAAM,QAAQ;AAAA,IACd;AAAA,IACA,GAAI,OAAO,KAAK,MAAM,EAAE,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,IAC9C,SAAS;AAAA,MACP,YAAY,QAAQ;AAAA,MACpB,cAAc,QAAQ;AAAA,MACtB,QAAQ,QAAQ;AAAA,MAChB,IAAI;AAAA,MACJ;AAAA,IAAA;AAAA,EACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ClickyRow } from '../data/Clicky';
|
|
2
|
+
import { ChatContextItem } from '../data/ai/context';
|
|
3
|
+
import { ClickySurface } from './types';
|
|
4
|
+
export declare function entityContextItemID(surfaceKey: string, recordID: string): string;
|
|
5
|
+
export declare function clickyRowRecord(row: ClickyRow): Record<string, string>;
|
|
6
|
+
export declare function contextItemFromEntityRow(surface: ClickySurface, row: ClickyRow, record: unknown): ChatContextItem | undefined;
|
|
7
|
+
//# sourceMappingURL=OperationEntityContextPicker.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationEntityContextPicker.model.d.ts","sourceRoot":"","sources":["../../src/rpc/OperationEntityContextPicker.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAEvE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtE;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,OAAO,GACd,eAAe,GAAG,SAAS,CAwC7B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { clickyNodeText, getClickyRowId } from "./rowNavigation.js";
|
|
2
|
+
const LABEL_KEYS = [
|
|
3
|
+
"name",
|
|
4
|
+
"title",
|
|
5
|
+
"ref",
|
|
6
|
+
"rule",
|
|
7
|
+
"type",
|
|
8
|
+
"reference"
|
|
9
|
+
];
|
|
10
|
+
function entityContextItemID(surfaceKey, recordID) {
|
|
11
|
+
return `entity:${surfaceKey}:${recordID}`;
|
|
12
|
+
}
|
|
13
|
+
function clickyRowRecord(row) {
|
|
14
|
+
return Object.fromEntries(
|
|
15
|
+
Object.entries(row.cells).map(([key, value]) => [key, clickyNodeText(value).trim()]).filter(([, value]) => value !== "")
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
function contextItemFromEntityRow(surface, row, record) {
|
|
19
|
+
const recordID = getClickyRowId(row);
|
|
20
|
+
if (!recordID) return void 0;
|
|
21
|
+
const rowRecord = clickyRowRecord(row);
|
|
22
|
+
const entries = Object.entries(rowRecord);
|
|
23
|
+
const byLowerKey = new Map(
|
|
24
|
+
entries.map(([key, value]) => [key.toLowerCase(), { key, value }])
|
|
25
|
+
);
|
|
26
|
+
const labelEntry = LABEL_KEYS.map((key) => byLowerKey.get(key)).find(
|
|
27
|
+
(entry) => entry == null ? void 0 : entry.value
|
|
28
|
+
);
|
|
29
|
+
const label = (labelEntry == null ? void 0 : labelEntry.value) ?? recordID;
|
|
30
|
+
const excluded = /* @__PURE__ */ new Set([
|
|
31
|
+
"_id",
|
|
32
|
+
"id",
|
|
33
|
+
"guid",
|
|
34
|
+
(labelEntry == null ? void 0 : labelEntry.key.toLowerCase()) ?? ""
|
|
35
|
+
]);
|
|
36
|
+
const fields = Object.fromEntries(
|
|
37
|
+
entries.filter(
|
|
38
|
+
([key, value]) => value !== "" && !excluded.has(key.toLowerCase())
|
|
39
|
+
).slice(0, 3)
|
|
40
|
+
);
|
|
41
|
+
return {
|
|
42
|
+
id: entityContextItemID(surface.key, recordID),
|
|
43
|
+
type: surface.key,
|
|
44
|
+
label,
|
|
45
|
+
...Object.keys(fields).length ? { fields } : {},
|
|
46
|
+
payload: {
|
|
47
|
+
surfaceKey: surface.key,
|
|
48
|
+
surfaceTitle: surface.title,
|
|
49
|
+
entity: surface.entity,
|
|
50
|
+
id: recordID,
|
|
51
|
+
record
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
clickyRowRecord,
|
|
57
|
+
contextItemFromEntityRow,
|
|
58
|
+
entityContextItemID
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=OperationEntityContextPicker.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationEntityContextPicker.model.js","sources":["../../src/rpc/OperationEntityContextPicker.model.ts"],"sourcesContent":["import type { ClickyRow } from \"../data/Clicky\";\nimport type { ChatContextItem } from \"../data/ai/context\";\nimport type { ClickySurface } from \"./types\";\nimport { clickyNodeText, getClickyRowId } from \"./rowNavigation\";\n\nconst LABEL_KEYS = [\n \"name\",\n \"title\",\n \"ref\",\n \"rule\",\n \"type\",\n \"reference\",\n] as const;\n\nexport function entityContextItemID(surfaceKey: string, recordID: string) {\n return `entity:${surfaceKey}:${recordID}`;\n}\n\nexport function clickyRowRecord(row: ClickyRow): Record<string, string> {\n return Object.fromEntries(\n Object.entries(row.cells)\n .map(([key, value]) => [key, clickyNodeText(value).trim()] as const)\n .filter(([, value]) => value !== \"\"),\n );\n}\n\nexport function contextItemFromEntityRow(\n surface: ClickySurface,\n row: ClickyRow,\n record: unknown,\n): ChatContextItem | undefined {\n const recordID = getClickyRowId(row);\n if (!recordID) return undefined;\n\n const rowRecord = clickyRowRecord(row);\n const entries = Object.entries(rowRecord);\n const byLowerKey = new Map(\n entries.map(([key, value]) => [key.toLowerCase(), { key, value }]),\n );\n const labelEntry = LABEL_KEYS.map((key) => byLowerKey.get(key)).find(\n (entry) => entry?.value,\n );\n const label = labelEntry?.value ?? recordID;\n const excluded = new Set([\n \"_id\",\n \"id\",\n \"guid\",\n labelEntry?.key.toLowerCase() ?? \"\",\n ]);\n const fields = Object.fromEntries(\n entries\n .filter(\n ([key, value]) => value !== \"\" && !excluded.has(key.toLowerCase()),\n )\n .slice(0, 3),\n );\n\n return {\n id: entityContextItemID(surface.key, recordID),\n type: surface.key,\n label,\n ...(Object.keys(fields).length ? { fields } : {}),\n payload: {\n surfaceKey: surface.key,\n surfaceTitle: surface.title,\n entity: surface.entity,\n id: recordID,\n record,\n },\n };\n}\n"],"names":[],"mappings":";AAKA,MAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,oBAAoB,YAAoB,UAAkB;AACxE,SAAO,UAAU,UAAU,IAAI,QAAQ;AACzC;AAEO,SAAS,gBAAgB,KAAwC;AACtE,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,IAAI,KAAK,EACrB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,eAAe,KAAK,EAAE,KAAA,CAAM,CAAU,EAClE,OAAO,CAAC,CAAA,EAAG,KAAK,MAAM,UAAU,EAAE;AAAA,EAAA;AAEzC;AAEO,SAAS,yBACd,SACA,KACA,QAC6B;AAC7B,QAAM,WAAW,eAAe,GAAG;AACnC,MAAI,CAAC,SAAU,QAAO;AAEtB,QAAM,YAAY,gBAAgB,GAAG;AACrC,QAAM,UAAU,OAAO,QAAQ,SAAS;AACxC,QAAM,aAAa,IAAI;AAAA,IACrB,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,KAAK,MAAA,CAAO,CAAC;AAAA,EAAA;AAEnE,QAAM,aAAa,WAAW,IAAI,CAAC,QAAQ,WAAW,IAAI,GAAG,CAAC,EAAE;AAAA,IAC9D,CAAC,UAAU,+BAAO;AAAA,EAAA;AAEpB,QAAM,SAAQ,yCAAY,UAAS;AACnC,QAAM,+BAAe,IAAI;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,KACA,yCAAY,IAAI,kBAAiB;AAAA,EAAA,CAClC;AACD,QAAM,SAAS,OAAO;AAAA,IACpB,QACG;AAAA,MACC,CAAC,CAAC,KAAK,KAAK,MAAM,UAAU,MAAM,CAAC,SAAS,IAAI,IAAI,YAAA,CAAa;AAAA,IAAA,EAElE,MAAM,GAAG,CAAC;AAAA,EAAA;AAGf,SAAO;AAAA,IACL,IAAI,oBAAoB,QAAQ,KAAK,QAAQ;AAAA,IAC7C,MAAM,QAAQ;AAAA,IACd;AAAA,IACA,GAAI,OAAO,KAAK,MAAM,EAAE,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,IAC9C,SAAS;AAAA,MACP,YAAY,QAAQ;AAAA,MACpB,cAAc,QAAQ;AAAA,MACtB,QAAQ,QAAQ;AAAA,MAChB,IAAI;AAAA,MACJ;AAAA,IAAA;AAAA,EACF;AAEJ;"}
|
|
@@ -6,6 +6,7 @@ const reactQuery = require("@tanstack/react-query");
|
|
|
6
6
|
const MethodBadge = require("../data/MethodBadge.cjs");
|
|
7
7
|
const classify = require("./classify.cjs");
|
|
8
8
|
const clickyMetadata = require("./clickyMetadata.cjs");
|
|
9
|
+
const surfaceIconMap = require("./surfaceIconMap.cjs");
|
|
9
10
|
const ExecutionResult = require("./ExecutionResult.cjs");
|
|
10
11
|
const OperationActionBar = require("./OperationActionBar.cjs");
|
|
11
12
|
const useOperations = require("./useOperations.cjs");
|
|
@@ -33,7 +34,10 @@ function OperationEntityPage({
|
|
|
33
34
|
commandRuntime,
|
|
34
35
|
formPre,
|
|
35
36
|
formPost,
|
|
36
|
-
formActions
|
|
37
|
+
formActions,
|
|
38
|
+
actionLabels,
|
|
39
|
+
entityDetailBodyRenderer,
|
|
40
|
+
entityDetailHeaderRenderer
|
|
37
41
|
}) {
|
|
38
42
|
const { operations, isLoading } = useOperations.useOperations(client);
|
|
39
43
|
const surfaceOps = react.useMemo(
|
|
@@ -120,6 +124,34 @@ function OperationEntityPage({
|
|
|
120
124
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: "Unknown entity detail route." })
|
|
121
125
|
] });
|
|
122
126
|
}
|
|
127
|
+
const defaultDetailBody = /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border bg-card p-4", children: [
|
|
128
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-medium", children: "Entity detail" }),
|
|
129
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
130
|
+
ExecutionResult.ExecutionResult,
|
|
131
|
+
{
|
|
132
|
+
response: detailQuery.data ?? null,
|
|
133
|
+
...commandRuntime ? { commandRuntime } : {}
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
] });
|
|
137
|
+
const defaultHeader = /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsxs("h1", { className: "text-2xl font-semibold tracking-tight", children: [
|
|
139
|
+
definition.title,
|
|
140
|
+
": ",
|
|
141
|
+
id
|
|
142
|
+
] }),
|
|
143
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 max-w-3xl text-sm text-muted-foreground", children: definition.description })
|
|
144
|
+
] });
|
|
145
|
+
const SurfaceIcon = surfaceIconMap.resolveSurfaceIcon(definition.icon);
|
|
146
|
+
const surfaceIcon = SurfaceIcon ? /* @__PURE__ */ jsxRuntime.jsx(SurfaceIcon, { className: "h-6 w-6 shrink-0" }) : void 0;
|
|
147
|
+
const entityHeader = (entityDetailHeaderRenderer == null ? void 0 : entityDetailHeaderRenderer({
|
|
148
|
+
id,
|
|
149
|
+
...surfaceKey ? { surfaceKey } : {},
|
|
150
|
+
title: definition.title,
|
|
151
|
+
...definition.description ? { description: definition.description } : {},
|
|
152
|
+
...surfaceIcon ? { icon: surfaceIcon } : {},
|
|
153
|
+
defaultHeader
|
|
154
|
+
})) ?? defaultHeader;
|
|
123
155
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
124
156
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-start justify-between gap-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-2", children: [
|
|
125
157
|
backLink,
|
|
@@ -127,43 +159,36 @@ function OperationEntityPage({
|
|
|
127
159
|
/* @__PURE__ */ jsxRuntime.jsx(MethodBadge.MethodBadge, { method: resolvedDetailEndpoint.method }),
|
|
128
160
|
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "rounded-md bg-muted px-2 py-1 text-sm", children: resolvedDetailEndpoint.path })
|
|
129
161
|
] }),
|
|
130
|
-
|
|
131
|
-
/* @__PURE__ */ jsxRuntime.jsxs("h1", { className: "text-2xl font-semibold tracking-tight", children: [
|
|
132
|
-
definition.title,
|
|
133
|
-
": ",
|
|
134
|
-
id
|
|
135
|
-
] }),
|
|
136
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 max-w-3xl text-sm text-muted-foreground", children: definition.description })
|
|
137
|
-
] })
|
|
162
|
+
entityHeader
|
|
138
163
|
] }) }),
|
|
139
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
164
|
+
!rawDetailQuery.isLoading && /* @__PURE__ */ jsxRuntime.jsx(
|
|
140
165
|
OperationActionBar.OperationActionBar,
|
|
141
166
|
{
|
|
142
167
|
actions: actionOps,
|
|
143
168
|
client,
|
|
144
169
|
getLockedValues: () => ({ [idParameterName]: id }),
|
|
145
|
-
onExecuted: () =>
|
|
170
|
+
onExecuted: async () => {
|
|
171
|
+
await Promise.all([detailQuery.refetch(), rawDetailQuery.refetch()]);
|
|
172
|
+
},
|
|
146
173
|
hideLockedInForm: true,
|
|
147
174
|
...editInitialValue ? { initialValue: editInitialValue } : {},
|
|
148
175
|
...commandRuntime ? { commandRuntime } : {},
|
|
149
176
|
...formPre ? { formPre } : {},
|
|
150
177
|
...formPost ? { formPost } : {},
|
|
151
|
-
...formActions ? { formActions } : {}
|
|
178
|
+
...formActions ? { formActions } : {},
|
|
179
|
+
...actionLabels ? { actionLabels } : {}
|
|
152
180
|
}
|
|
153
181
|
),
|
|
154
182
|
detailQuery.isLoading ? /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border bg-card p-4", children: [
|
|
155
183
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-medium", children: "Entity detail" }),
|
|
156
184
|
/* @__PURE__ */ jsxRuntime.jsx(ExecutionResult.ExecutionResult, { loading: true, loadingMessage: "Loading entity detail…" })
|
|
157
|
-
] }) : detailQuery.isError ? renderError(detailQuery.error, `Failed to load ${resolvedDetailEndpoint.path}`) :
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
)
|
|
166
|
-
] })
|
|
185
|
+
] }) : detailQuery.isError ? renderError(detailQuery.error, `Failed to load ${resolvedDetailEndpoint.path}`) : (entityDetailBodyRenderer == null ? void 0 : entityDetailBodyRenderer({
|
|
186
|
+
id,
|
|
187
|
+
...surfaceKey ? { surfaceKey } : {},
|
|
188
|
+
...editInitialValue ? { entity: editInitialValue } : {},
|
|
189
|
+
response: detailQuery.data ?? null,
|
|
190
|
+
defaultView: defaultDetailBody
|
|
191
|
+
})) ?? defaultDetailBody
|
|
167
192
|
] });
|
|
168
193
|
}
|
|
169
194
|
exports.OperationEntityPage = OperationEntityPage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationEntityPage.cjs","sources":["../../src/rpc/OperationEntityPage.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport type { ClickyCommandRuntime } from \"../data/Clicky\";\nimport { MethodBadge } from \"../data/MethodBadge\";\nimport { filterOperationsByDomain, findDetailEndpointForList, findListEndpoint } from \"./classify\";\nimport {\n filterOperationsBySurface,\n findSurfaceDetailOperation,\n findSurfaceEntityActions,\n findSurfaceListOperation,\n} from \"./clickyMetadata\";\nimport { ExecutionResult } from \"./ExecutionResult\";\nimport { OperationActionBar } from \"./OperationActionBar\";\nimport { type FormActionsRenderer } from \"./SchemaActionForm\";\nimport type { RenderLink } from \"./EndpointList\";\nimport type { PreExtension, PostExtension } from \"../components/json-schema-form-types\";\nimport type { DomainDefinition } from \"./types\";\nimport { useOperations, type OperationsApiClient } from \"./useOperations\";\n\nexport type OperationEntityPageProps = {\n id?: string;\n definition: DomainDefinition;\n entities: string[];\n client: OperationsApiClient;\n renderLink?: RenderLink;\n allOperations?: boolean;\n operationIdPrefix?: string;\n listOperationId?: string;\n detailOperationId?: string;\n surfaceKey?: string;\n backHref?: string;\n backLabel?: string;\n renderError?: (err: unknown, title: string) => ReactNode;\n commandRuntime?: ClickyCommandRuntime;\n // Custom JsonSchemaForm field extensions forwarded to the edit form.\n formPre?: PreExtension[];\n formPost?: PostExtension[];\n // Optional extra footer actions for the edit form (e.g. a connection \"Test\"\n // button).\n formActions?: FormActionsRenderer;\n};\n\nfunction defaultRenderError(err: unknown, title: string) {\n const message = err instanceof Error ? err.message : String(err ?? \"\");\n return (\n <div className=\"rounded-xl border border-destructive/40 bg-destructive/5 p-4 text-sm text-destructive\">\n <div className=\"font-medium\">{title}</div>\n {message && <div className=\"mt-1 whitespace-pre-wrap text-xs opacity-80\">{message}</div>}\n </div>\n );\n}\n\nexport function OperationEntityPage({\n id,\n definition,\n entities,\n client,\n renderLink,\n allOperations = false,\n operationIdPrefix,\n listOperationId,\n detailOperationId,\n surfaceKey,\n backHref,\n backLabel = \"Back\",\n renderError = defaultRenderError,\n commandRuntime,\n formPre,\n formPost,\n formActions,\n}: OperationEntityPageProps) {\n const { operations, isLoading } = useOperations(client);\n const surfaceOps = useMemo(\n () => filterOperationsBySurface(operations, surfaceKey),\n [operations, surfaceKey],\n );\n const useSurfaceMetadata = surfaceOps.length > 0;\n\n const domainOps = useMemo(() => {\n if (useSurfaceMetadata) {\n return surfaceOps;\n }\n\n return (allOperations ? operations : filterOperationsByDomain(operations, entities)).filter(\n (op) =>\n operationIdPrefix ? (op.operation.operationId ?? \"\").startsWith(operationIdPrefix) : true,\n );\n }, [allOperations, entities, operationIdPrefix, operations, surfaceOps, useSurfaceMetadata]);\n\n const listEndpoint = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceListOperation(domainOps, surfaceKey);\n }\n\n const explicitList = listOperationId\n ? domainOps.find((op) => op.method === \"get\" && op.operation.operationId === listOperationId)\n : undefined;\n return explicitList ?? findListEndpoint(domainOps, entities);\n }, [domainOps, entities, listOperationId, surfaceKey, useSurfaceMetadata]);\n\n const resolvedDetailEndpoint = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceDetailOperation(domainOps, surfaceKey);\n }\n\n return detailOperationId\n ? domainOps.find(\n (op) => op.method === \"get\" && op.operation.operationId === detailOperationId,\n )\n : findDetailEndpointForList(domainOps, listEndpoint);\n }, [detailOperationId, domainOps, listEndpoint, surfaceKey, useSurfaceMetadata]);\n\n const idParameterName = useMemo(\n () =>\n resolvedDetailEndpoint?.operation.parameters?.find((param) => param.in === \"path\")?.name ??\n \"id\",\n [resolvedDetailEndpoint],\n );\n const detailValues = useMemo(() => (id ? { [idParameterName]: id } : {}), [id, idParameterName]);\n const actionOps = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceEntityActions(domainOps, surfaceKey);\n }\n\n return resolvedDetailEndpoint == null\n ? []\n : domainOps.filter(\n (op) => op.method !== \"get\" && op.path.startsWith(`${resolvedDetailEndpoint.path}/`),\n );\n }, [domainOps, resolvedDetailEndpoint, surfaceKey, useSurfaceMetadata]);\n\n const detailQuery = useQuery({\n queryKey: [\"entity-detail\", definition.key, id, resolvedDetailEndpoint?.path],\n queryFn: async () =>\n client.executeCommand(\n resolvedDetailEndpoint!.path,\n resolvedDetailEndpoint!.method,\n detailValues,\n { Accept: \"application/json+clicky\" },\n ),\n enabled: !!resolvedDetailEndpoint && !!id,\n staleTime: 30_000,\n retry: 0,\n });\n\n // Raw (non-clicky) detail used to pre-fill the schema-driven edit form. Only\n // resources whose detail endpoint returns a plain object (e.g. connections)\n // prefill; others (e.g. a profile detail that returns rows) start blank.\n const rawDetailQuery = useQuery({\n queryKey: [\"entity-detail-raw\", definition.key, id, resolvedDetailEndpoint?.path],\n queryFn: async () =>\n client.executeCommand(resolvedDetailEndpoint!.path, resolvedDetailEndpoint!.method, detailValues, {\n Accept: \"application/json\",\n }),\n enabled: !!resolvedDetailEndpoint && !!id,\n staleTime: 30_000,\n retry: 0,\n });\n const editInitialValue = useMemo(() => {\n const parsed = rawDetailQuery.data?.parsed;\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n }, [rawDetailQuery.data]);\n\n const backLink =\n backHref == null ? null : renderLink ? (\n renderLink({\n to: backHref,\n className: \"text-sm text-primary underline-offset-4 hover:underline\",\n children: backLabel,\n })\n ) : (\n <a href={backHref} className=\"text-sm text-primary underline-offset-4 hover:underline\">\n {backLabel}\n </a>\n );\n\n if (isLoading) {\n return <div className=\"text-sm text-muted-foreground\">Loading entity…</div>;\n }\n\n if (!resolvedDetailEndpoint || !id) {\n return (\n <div className=\"space-y-4\">\n {backLink}\n <div className=\"text-sm text-muted-foreground\">Unknown entity detail route.</div>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 space-y-2\">\n {backLink}\n <div className=\"flex items-center gap-3\">\n <MethodBadge method={resolvedDetailEndpoint.method} />\n <code className=\"rounded-md bg-muted px-2 py-1 text-sm\">\n {resolvedDetailEndpoint.path}\n </code>\n </div>\n <div>\n <h1 className=\"text-2xl font-semibold tracking-tight\">\n {definition.title}: {id}\n </h1>\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">{definition.description}</p>\n </div>\n </div>\n </div>\n\n <OperationActionBar\n actions={actionOps}\n client={client}\n getLockedValues={() => ({ [idParameterName]: id })}\n onExecuted={() => void detailQuery.refetch()}\n hideLockedInForm\n {...(editInitialValue ? { initialValue: editInitialValue } : {})}\n {...(commandRuntime ? { commandRuntime } : {})}\n {...(formPre ? { formPre } : {})}\n {...(formPost ? { formPost } : {})}\n {...(formActions ? { formActions } : {})}\n />\n\n {detailQuery.isLoading ? (\n <section className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-lg font-medium\">Entity detail</h2>\n <ExecutionResult loading loadingMessage=\"Loading entity detail…\" />\n </section>\n ) : detailQuery.isError ? (\n renderError(detailQuery.error, `Failed to load ${resolvedDetailEndpoint.path}`)\n ) : (\n <section className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-lg font-medium\">Entity detail</h2>\n <ExecutionResult\n response={detailQuery.data ?? null}\n {...(commandRuntime ? { commandRuntime } : {})}\n />\n </section>\n )}\n </div>\n );\n}\n"],"names":["jsxs","jsx","useOperations","useMemo","filterOperationsBySurface","filterOperationsByDomain","findSurfaceListOperation","findListEndpoint","findSurfaceDetailOperation","findDetailEndpointForList","findSurfaceEntityActions","useQuery","MethodBadge","OperationActionBar","ExecutionResult"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OperationEntityPage.cjs","sources":["../../src/rpc/OperationEntityPage.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport type { ClickyCommandRuntime } from \"../data/Clicky\";\nimport { MethodBadge } from \"../data/MethodBadge\";\nimport { filterOperationsByDomain, findDetailEndpointForList, findListEndpoint } from \"./classify\";\nimport {\n filterOperationsBySurface,\n findSurfaceDetailOperation,\n findSurfaceEntityActions,\n findSurfaceListOperation,\n} from \"./clickyMetadata\";\nimport { resolveSurfaceIcon } from \"./surfaceIconMap\";\nimport { ExecutionResult } from \"./ExecutionResult\";\nimport { OperationActionBar } from \"./OperationActionBar\";\nimport { type FormActionsRenderer } from \"./SchemaActionForm\";\nimport type { RenderLink } from \"./EndpointList\";\nimport type { PreExtension, PostExtension } from \"../components/json-schema-form-types\";\nimport type { DomainDefinition } from \"./types\";\nimport type { ExecutionResponse } from \"./types\";\nimport { useOperations, type OperationsApiClient } from \"./useOperations\";\n\nexport type EntityDetailBodyRenderContext = {\n id: string;\n surfaceKey?: string;\n entity?: Record<string, unknown>;\n response: ExecutionResponse | null;\n defaultView: ReactNode;\n};\n\nexport type EntityDetailBodyRenderer = (context: EntityDetailBodyRenderContext) => ReactNode;\n\nexport type EntityDetailHeaderRenderContext = {\n id: string;\n surfaceKey?: string;\n title: string;\n description?: string;\n icon?: ReactNode;\n defaultHeader: ReactNode;\n};\n\nexport type EntityDetailHeaderRenderer = (context: EntityDetailHeaderRenderContext) => ReactNode;\n\nexport type OperationEntityPageProps = {\n id?: string;\n definition: DomainDefinition;\n entities: string[];\n client: OperationsApiClient;\n renderLink?: RenderLink;\n allOperations?: boolean;\n operationIdPrefix?: string;\n listOperationId?: string;\n detailOperationId?: string;\n surfaceKey?: string;\n backHref?: string;\n backLabel?: string;\n renderError?: (err: unknown, title: string) => ReactNode;\n commandRuntime?: ClickyCommandRuntime;\n // Custom JsonSchemaForm field extensions forwarded to the edit form.\n formPre?: PreExtension[];\n formPost?: PostExtension[];\n // Optional extra footer actions for the edit form (e.g. a connection \"Test\"\n // button).\n formActions?: FormActionsRenderer;\n actionLabels?: Record<string, string>;\n /**\n * Replaces the detail body after the entity has loaded while leaving the\n * explorer-owned heading and entity actions in place. Hosts can use this for\n * connection browsers and other entity-specific workspaces.\n */\n entityDetailBodyRenderer?: EntityDetailBodyRenderer;\n /**\n * Replaces the explorer-owned \"{title}: {id}\" heading while leaving the back\n * link, method badge, and entity actions in place. Hosts use this for compact\n * entity summaries (e.g. a connection's name, endpoint, and server version).\n */\n entityDetailHeaderRenderer?: EntityDetailHeaderRenderer;\n};\n\nfunction defaultRenderError(err: unknown, title: string) {\n const message = err instanceof Error ? err.message : String(err ?? \"\");\n return (\n <div className=\"rounded-xl border border-destructive/40 bg-destructive/5 p-4 text-sm text-destructive\">\n <div className=\"font-medium\">{title}</div>\n {message && <div className=\"mt-1 whitespace-pre-wrap text-xs opacity-80\">{message}</div>}\n </div>\n );\n}\n\nexport function OperationEntityPage({\n id,\n definition,\n entities,\n client,\n renderLink,\n allOperations = false,\n operationIdPrefix,\n listOperationId,\n detailOperationId,\n surfaceKey,\n backHref,\n backLabel = \"Back\",\n renderError = defaultRenderError,\n commandRuntime,\n formPre,\n formPost,\n formActions,\n actionLabels,\n entityDetailBodyRenderer,\n entityDetailHeaderRenderer,\n}: OperationEntityPageProps) {\n const { operations, isLoading } = useOperations(client);\n const surfaceOps = useMemo(\n () => filterOperationsBySurface(operations, surfaceKey),\n [operations, surfaceKey],\n );\n const useSurfaceMetadata = surfaceOps.length > 0;\n\n const domainOps = useMemo(() => {\n if (useSurfaceMetadata) {\n return surfaceOps;\n }\n\n return (allOperations ? operations : filterOperationsByDomain(operations, entities)).filter(\n (op) =>\n operationIdPrefix ? (op.operation.operationId ?? \"\").startsWith(operationIdPrefix) : true,\n );\n }, [allOperations, entities, operationIdPrefix, operations, surfaceOps, useSurfaceMetadata]);\n\n const listEndpoint = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceListOperation(domainOps, surfaceKey);\n }\n\n const explicitList = listOperationId\n ? domainOps.find((op) => op.method === \"get\" && op.operation.operationId === listOperationId)\n : undefined;\n return explicitList ?? findListEndpoint(domainOps, entities);\n }, [domainOps, entities, listOperationId, surfaceKey, useSurfaceMetadata]);\n\n const resolvedDetailEndpoint = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceDetailOperation(domainOps, surfaceKey);\n }\n\n return detailOperationId\n ? domainOps.find(\n (op) => op.method === \"get\" && op.operation.operationId === detailOperationId,\n )\n : findDetailEndpointForList(domainOps, listEndpoint);\n }, [detailOperationId, domainOps, listEndpoint, surfaceKey, useSurfaceMetadata]);\n\n const idParameterName = useMemo(\n () =>\n resolvedDetailEndpoint?.operation.parameters?.find((param) => param.in === \"path\")?.name ??\n \"id\",\n [resolvedDetailEndpoint],\n );\n const detailValues = useMemo(() => (id ? { [idParameterName]: id } : {}), [id, idParameterName]);\n const actionOps = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceEntityActions(domainOps, surfaceKey);\n }\n\n return resolvedDetailEndpoint == null\n ? []\n : domainOps.filter(\n (op) => op.method !== \"get\" && op.path.startsWith(`${resolvedDetailEndpoint.path}/`),\n );\n }, [domainOps, resolvedDetailEndpoint, surfaceKey, useSurfaceMetadata]);\n\n const detailQuery = useQuery({\n queryKey: [\"entity-detail\", definition.key, id, resolvedDetailEndpoint?.path],\n queryFn: async () =>\n client.executeCommand(\n resolvedDetailEndpoint!.path,\n resolvedDetailEndpoint!.method,\n detailValues,\n { Accept: \"application/json+clicky\" },\n ),\n enabled: !!resolvedDetailEndpoint && !!id,\n staleTime: 30_000,\n retry: 0,\n });\n\n // Raw (non-clicky) detail used to pre-fill the schema-driven edit form. Only\n // resources whose detail endpoint returns a plain object (e.g. connections)\n // prefill; others (e.g. a profile detail that returns rows) start blank.\n const rawDetailQuery = useQuery({\n queryKey: [\"entity-detail-raw\", definition.key, id, resolvedDetailEndpoint?.path],\n queryFn: async () =>\n client.executeCommand(resolvedDetailEndpoint!.path, resolvedDetailEndpoint!.method, detailValues, {\n Accept: \"application/json\",\n }),\n enabled: !!resolvedDetailEndpoint && !!id,\n staleTime: 30_000,\n retry: 0,\n });\n const editInitialValue = useMemo(() => {\n const parsed = rawDetailQuery.data?.parsed;\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n }, [rawDetailQuery.data]);\n\n const backLink =\n backHref == null ? null : renderLink ? (\n renderLink({\n to: backHref,\n className: \"text-sm text-primary underline-offset-4 hover:underline\",\n children: backLabel,\n })\n ) : (\n <a href={backHref} className=\"text-sm text-primary underline-offset-4 hover:underline\">\n {backLabel}\n </a>\n );\n\n if (isLoading) {\n return <div className=\"text-sm text-muted-foreground\">Loading entity…</div>;\n }\n\n if (!resolvedDetailEndpoint || !id) {\n return (\n <div className=\"space-y-4\">\n {backLink}\n <div className=\"text-sm text-muted-foreground\">Unknown entity detail route.</div>\n </div>\n );\n }\n\n const defaultDetailBody = (\n <section className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-lg font-medium\">Entity detail</h2>\n <ExecutionResult\n response={detailQuery.data ?? null}\n {...(commandRuntime ? { commandRuntime } : {})}\n />\n </section>\n );\n\n const defaultHeader = (\n <div>\n <h1 className=\"text-2xl font-semibold tracking-tight\">\n {definition.title}: {id}\n </h1>\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">{definition.description}</p>\n </div>\n );\n const SurfaceIcon = resolveSurfaceIcon(definition.icon);\n const surfaceIcon = SurfaceIcon ? <SurfaceIcon className=\"h-6 w-6 shrink-0\" /> : undefined;\n const entityHeader =\n entityDetailHeaderRenderer?.({\n id,\n ...(surfaceKey ? { surfaceKey } : {}),\n title: definition.title,\n ...(definition.description ? { description: definition.description } : {}),\n ...(surfaceIcon ? { icon: surfaceIcon } : {}),\n defaultHeader,\n }) ?? defaultHeader;\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 space-y-2\">\n {backLink}\n <div className=\"flex items-center gap-3\">\n <MethodBadge method={resolvedDetailEndpoint.method} />\n <code className=\"rounded-md bg-muted px-2 py-1 text-sm\">\n {resolvedDetailEndpoint.path}\n </code>\n </div>\n {entityHeader}\n </div>\n </div>\n\n {!rawDetailQuery.isLoading && (\n <OperationActionBar\n actions={actionOps}\n client={client}\n getLockedValues={() => ({ [idParameterName]: id })}\n onExecuted={async () => {\n await Promise.all([detailQuery.refetch(), rawDetailQuery.refetch()]);\n }}\n hideLockedInForm\n {...(editInitialValue ? { initialValue: editInitialValue } : {})}\n {...(commandRuntime ? { commandRuntime } : {})}\n {...(formPre ? { formPre } : {})}\n {...(formPost ? { formPost } : {})}\n {...(formActions ? { formActions } : {})}\n {...(actionLabels ? { actionLabels } : {})}\n />\n )}\n\n {detailQuery.isLoading ? (\n <section className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-lg font-medium\">Entity detail</h2>\n <ExecutionResult loading loadingMessage=\"Loading entity detail…\" />\n </section>\n ) : detailQuery.isError ? (\n renderError(detailQuery.error, `Failed to load ${resolvedDetailEndpoint.path}`)\n ) : (\n entityDetailBodyRenderer?.({\n id,\n ...(surfaceKey ? { surfaceKey } : {}),\n ...(editInitialValue ? { entity: editInitialValue } : {}),\n response: detailQuery.data ?? null,\n defaultView: defaultDetailBody,\n }) ?? defaultDetailBody\n )}\n </div>\n );\n}\n"],"names":["jsxs","jsx","useOperations","useMemo","filterOperationsBySurface","filterOperationsByDomain","findSurfaceListOperation","findListEndpoint","findSurfaceDetailOperation","findDetailEndpointForList","findSurfaceEntityActions","useQuery","ExecutionResult","resolveSurfaceIcon","MethodBadge","OperationActionBar"],"mappings":"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"}
|
|
@@ -3,8 +3,25 @@ import { ClickyCommandRuntime } from '../data/Clicky';
|
|
|
3
3
|
import { FormActionsRenderer } from './SchemaActionForm';
|
|
4
4
|
import { RenderLink } from './EndpointList';
|
|
5
5
|
import { PreExtension, PostExtension } from '../components/json-schema-form-types';
|
|
6
|
-
import { DomainDefinition } from './types';
|
|
6
|
+
import { DomainDefinition, ExecutionResponse } from './types';
|
|
7
7
|
import { OperationsApiClient } from './useOperations';
|
|
8
|
+
export type EntityDetailBodyRenderContext = {
|
|
9
|
+
id: string;
|
|
10
|
+
surfaceKey?: string;
|
|
11
|
+
entity?: Record<string, unknown>;
|
|
12
|
+
response: ExecutionResponse | null;
|
|
13
|
+
defaultView: ReactNode;
|
|
14
|
+
};
|
|
15
|
+
export type EntityDetailBodyRenderer = (context: EntityDetailBodyRenderContext) => ReactNode;
|
|
16
|
+
export type EntityDetailHeaderRenderContext = {
|
|
17
|
+
id: string;
|
|
18
|
+
surfaceKey?: string;
|
|
19
|
+
title: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
icon?: ReactNode;
|
|
22
|
+
defaultHeader: ReactNode;
|
|
23
|
+
};
|
|
24
|
+
export type EntityDetailHeaderRenderer = (context: EntityDetailHeaderRenderContext) => ReactNode;
|
|
8
25
|
export type OperationEntityPageProps = {
|
|
9
26
|
id?: string;
|
|
10
27
|
definition: DomainDefinition;
|
|
@@ -23,6 +40,19 @@ export type OperationEntityPageProps = {
|
|
|
23
40
|
formPre?: PreExtension[];
|
|
24
41
|
formPost?: PostExtension[];
|
|
25
42
|
formActions?: FormActionsRenderer;
|
|
43
|
+
actionLabels?: Record<string, string>;
|
|
44
|
+
/**
|
|
45
|
+
* Replaces the detail body after the entity has loaded while leaving the
|
|
46
|
+
* explorer-owned heading and entity actions in place. Hosts can use this for
|
|
47
|
+
* connection browsers and other entity-specific workspaces.
|
|
48
|
+
*/
|
|
49
|
+
entityDetailBodyRenderer?: EntityDetailBodyRenderer;
|
|
50
|
+
/**
|
|
51
|
+
* Replaces the explorer-owned "{title}: {id}" heading while leaving the back
|
|
52
|
+
* link, method badge, and entity actions in place. Hosts use this for compact
|
|
53
|
+
* entity summaries (e.g. a connection's name, endpoint, and server version).
|
|
54
|
+
*/
|
|
55
|
+
entityDetailHeaderRenderer?: EntityDetailHeaderRenderer;
|
|
26
56
|
};
|
|
27
|
-
export declare function OperationEntityPage({ id, definition, entities, client, renderLink, allOperations, operationIdPrefix, listOperationId, detailOperationId, surfaceKey, backHref, backLabel, renderError, commandRuntime, formPre, formPost, formActions, }: OperationEntityPageProps): import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
export declare function OperationEntityPage({ id, definition, entities, client, renderLink, allOperations, operationIdPrefix, listOperationId, detailOperationId, surfaceKey, backHref, backLabel, renderError, commandRuntime, formPre, formPost, formActions, actionLabels, entityDetailBodyRenderer, entityDetailHeaderRenderer, }: OperationEntityPageProps): import("react/jsx-runtime").JSX.Element;
|
|
28
58
|
//# sourceMappingURL=OperationEntityPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationEntityPage.d.ts","sourceRoot":"","sources":["../../src/rpc/OperationEntityPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"OperationEntityPage.d.ts","sourceRoot":"","sources":["../../src/rpc/OperationEntityPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAY3D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,6BAA6B,KAAK,SAAS,CAAC;AAE7F,MAAM,MAAM,+BAA+B,GAAG;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,+BAA+B,KAAK,SAAS,CAAC;AAEjG,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACzD,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAG3B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;CACzD,CAAC;AAYF,wBAAgB,mBAAmB,CAAC,EAClC,EAAE,EACF,UAAU,EACV,QAAQ,EACR,MAAM,EACN,UAAU,EACV,aAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,SAAkB,EAClB,WAAgC,EAChC,cAAc,EACd,OAAO,EACP,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,wBAAwB,EACxB,0BAA0B,GAC3B,EAAE,wBAAwB,2CA0M1B"}
|
|
@@ -4,6 +4,7 @@ import { useQuery } from "@tanstack/react-query";
|
|
|
4
4
|
import { MethodBadge } from "../data/MethodBadge.js";
|
|
5
5
|
import { filterOperationsByDomain, findListEndpoint, findDetailEndpointForList } from "./classify.js";
|
|
6
6
|
import { filterOperationsBySurface, findSurfaceListOperation, findSurfaceDetailOperation, findSurfaceEntityActions } from "./clickyMetadata.js";
|
|
7
|
+
import { resolveSurfaceIcon } from "./surfaceIconMap.js";
|
|
7
8
|
import { ExecutionResult } from "./ExecutionResult.js";
|
|
8
9
|
import { OperationActionBar } from "./OperationActionBar.js";
|
|
9
10
|
import { useOperations } from "./useOperations.js";
|
|
@@ -31,7 +32,10 @@ function OperationEntityPage({
|
|
|
31
32
|
commandRuntime,
|
|
32
33
|
formPre,
|
|
33
34
|
formPost,
|
|
34
|
-
formActions
|
|
35
|
+
formActions,
|
|
36
|
+
actionLabels,
|
|
37
|
+
entityDetailBodyRenderer,
|
|
38
|
+
entityDetailHeaderRenderer
|
|
35
39
|
}) {
|
|
36
40
|
const { operations, isLoading } = useOperations(client);
|
|
37
41
|
const surfaceOps = useMemo(
|
|
@@ -118,6 +122,34 @@ function OperationEntityPage({
|
|
|
118
122
|
/* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: "Unknown entity detail route." })
|
|
119
123
|
] });
|
|
120
124
|
}
|
|
125
|
+
const defaultDetailBody = /* @__PURE__ */ jsxs("section", { className: "rounded-xl border bg-card p-4", children: [
|
|
126
|
+
/* @__PURE__ */ jsx("h2", { className: "text-lg font-medium", children: "Entity detail" }),
|
|
127
|
+
/* @__PURE__ */ jsx(
|
|
128
|
+
ExecutionResult,
|
|
129
|
+
{
|
|
130
|
+
response: detailQuery.data ?? null,
|
|
131
|
+
...commandRuntime ? { commandRuntime } : {}
|
|
132
|
+
}
|
|
133
|
+
)
|
|
134
|
+
] });
|
|
135
|
+
const defaultHeader = /* @__PURE__ */ jsxs("div", { children: [
|
|
136
|
+
/* @__PURE__ */ jsxs("h1", { className: "text-2xl font-semibold tracking-tight", children: [
|
|
137
|
+
definition.title,
|
|
138
|
+
": ",
|
|
139
|
+
id
|
|
140
|
+
] }),
|
|
141
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 max-w-3xl text-sm text-muted-foreground", children: definition.description })
|
|
142
|
+
] });
|
|
143
|
+
const SurfaceIcon = resolveSurfaceIcon(definition.icon);
|
|
144
|
+
const surfaceIcon = SurfaceIcon ? /* @__PURE__ */ jsx(SurfaceIcon, { className: "h-6 w-6 shrink-0" }) : void 0;
|
|
145
|
+
const entityHeader = (entityDetailHeaderRenderer == null ? void 0 : entityDetailHeaderRenderer({
|
|
146
|
+
id,
|
|
147
|
+
...surfaceKey ? { surfaceKey } : {},
|
|
148
|
+
title: definition.title,
|
|
149
|
+
...definition.description ? { description: definition.description } : {},
|
|
150
|
+
...surfaceIcon ? { icon: surfaceIcon } : {},
|
|
151
|
+
defaultHeader
|
|
152
|
+
})) ?? defaultHeader;
|
|
121
153
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
|
|
122
154
|
/* @__PURE__ */ jsx("div", { className: "flex items-start justify-between gap-4", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-2", children: [
|
|
123
155
|
backLink,
|
|
@@ -125,43 +157,36 @@ function OperationEntityPage({
|
|
|
125
157
|
/* @__PURE__ */ jsx(MethodBadge, { method: resolvedDetailEndpoint.method }),
|
|
126
158
|
/* @__PURE__ */ jsx("code", { className: "rounded-md bg-muted px-2 py-1 text-sm", children: resolvedDetailEndpoint.path })
|
|
127
159
|
] }),
|
|
128
|
-
|
|
129
|
-
/* @__PURE__ */ jsxs("h1", { className: "text-2xl font-semibold tracking-tight", children: [
|
|
130
|
-
definition.title,
|
|
131
|
-
": ",
|
|
132
|
-
id
|
|
133
|
-
] }),
|
|
134
|
-
/* @__PURE__ */ jsx("p", { className: "mt-1 max-w-3xl text-sm text-muted-foreground", children: definition.description })
|
|
135
|
-
] })
|
|
160
|
+
entityHeader
|
|
136
161
|
] }) }),
|
|
137
|
-
/* @__PURE__ */ jsx(
|
|
162
|
+
!rawDetailQuery.isLoading && /* @__PURE__ */ jsx(
|
|
138
163
|
OperationActionBar,
|
|
139
164
|
{
|
|
140
165
|
actions: actionOps,
|
|
141
166
|
client,
|
|
142
167
|
getLockedValues: () => ({ [idParameterName]: id }),
|
|
143
|
-
onExecuted: () =>
|
|
168
|
+
onExecuted: async () => {
|
|
169
|
+
await Promise.all([detailQuery.refetch(), rawDetailQuery.refetch()]);
|
|
170
|
+
},
|
|
144
171
|
hideLockedInForm: true,
|
|
145
172
|
...editInitialValue ? { initialValue: editInitialValue } : {},
|
|
146
173
|
...commandRuntime ? { commandRuntime } : {},
|
|
147
174
|
...formPre ? { formPre } : {},
|
|
148
175
|
...formPost ? { formPost } : {},
|
|
149
|
-
...formActions ? { formActions } : {}
|
|
176
|
+
...formActions ? { formActions } : {},
|
|
177
|
+
...actionLabels ? { actionLabels } : {}
|
|
150
178
|
}
|
|
151
179
|
),
|
|
152
180
|
detailQuery.isLoading ? /* @__PURE__ */ jsxs("section", { className: "rounded-xl border bg-card p-4", children: [
|
|
153
181
|
/* @__PURE__ */ jsx("h2", { className: "text-lg font-medium", children: "Entity detail" }),
|
|
154
182
|
/* @__PURE__ */ jsx(ExecutionResult, { loading: true, loadingMessage: "Loading entity detail…" })
|
|
155
|
-
] }) : detailQuery.isError ? renderError(detailQuery.error, `Failed to load ${resolvedDetailEndpoint.path}`) :
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
)
|
|
164
|
-
] })
|
|
183
|
+
] }) : detailQuery.isError ? renderError(detailQuery.error, `Failed to load ${resolvedDetailEndpoint.path}`) : (entityDetailBodyRenderer == null ? void 0 : entityDetailBodyRenderer({
|
|
184
|
+
id,
|
|
185
|
+
...surfaceKey ? { surfaceKey } : {},
|
|
186
|
+
...editInitialValue ? { entity: editInitialValue } : {},
|
|
187
|
+
response: detailQuery.data ?? null,
|
|
188
|
+
defaultView: defaultDetailBody
|
|
189
|
+
})) ?? defaultDetailBody
|
|
165
190
|
] });
|
|
166
191
|
}
|
|
167
192
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationEntityPage.js","sources":["../../src/rpc/OperationEntityPage.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport type { ClickyCommandRuntime } from \"../data/Clicky\";\nimport { MethodBadge } from \"../data/MethodBadge\";\nimport { filterOperationsByDomain, findDetailEndpointForList, findListEndpoint } from \"./classify\";\nimport {\n filterOperationsBySurface,\n findSurfaceDetailOperation,\n findSurfaceEntityActions,\n findSurfaceListOperation,\n} from \"./clickyMetadata\";\nimport { ExecutionResult } from \"./ExecutionResult\";\nimport { OperationActionBar } from \"./OperationActionBar\";\nimport { type FormActionsRenderer } from \"./SchemaActionForm\";\nimport type { RenderLink } from \"./EndpointList\";\nimport type { PreExtension, PostExtension } from \"../components/json-schema-form-types\";\nimport type { DomainDefinition } from \"./types\";\nimport { useOperations, type OperationsApiClient } from \"./useOperations\";\n\nexport type OperationEntityPageProps = {\n id?: string;\n definition: DomainDefinition;\n entities: string[];\n client: OperationsApiClient;\n renderLink?: RenderLink;\n allOperations?: boolean;\n operationIdPrefix?: string;\n listOperationId?: string;\n detailOperationId?: string;\n surfaceKey?: string;\n backHref?: string;\n backLabel?: string;\n renderError?: (err: unknown, title: string) => ReactNode;\n commandRuntime?: ClickyCommandRuntime;\n // Custom JsonSchemaForm field extensions forwarded to the edit form.\n formPre?: PreExtension[];\n formPost?: PostExtension[];\n // Optional extra footer actions for the edit form (e.g. a connection \"Test\"\n // button).\n formActions?: FormActionsRenderer;\n};\n\nfunction defaultRenderError(err: unknown, title: string) {\n const message = err instanceof Error ? err.message : String(err ?? \"\");\n return (\n <div className=\"rounded-xl border border-destructive/40 bg-destructive/5 p-4 text-sm text-destructive\">\n <div className=\"font-medium\">{title}</div>\n {message && <div className=\"mt-1 whitespace-pre-wrap text-xs opacity-80\">{message}</div>}\n </div>\n );\n}\n\nexport function OperationEntityPage({\n id,\n definition,\n entities,\n client,\n renderLink,\n allOperations = false,\n operationIdPrefix,\n listOperationId,\n detailOperationId,\n surfaceKey,\n backHref,\n backLabel = \"Back\",\n renderError = defaultRenderError,\n commandRuntime,\n formPre,\n formPost,\n formActions,\n}: OperationEntityPageProps) {\n const { operations, isLoading } = useOperations(client);\n const surfaceOps = useMemo(\n () => filterOperationsBySurface(operations, surfaceKey),\n [operations, surfaceKey],\n );\n const useSurfaceMetadata = surfaceOps.length > 0;\n\n const domainOps = useMemo(() => {\n if (useSurfaceMetadata) {\n return surfaceOps;\n }\n\n return (allOperations ? operations : filterOperationsByDomain(operations, entities)).filter(\n (op) =>\n operationIdPrefix ? (op.operation.operationId ?? \"\").startsWith(operationIdPrefix) : true,\n );\n }, [allOperations, entities, operationIdPrefix, operations, surfaceOps, useSurfaceMetadata]);\n\n const listEndpoint = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceListOperation(domainOps, surfaceKey);\n }\n\n const explicitList = listOperationId\n ? domainOps.find((op) => op.method === \"get\" && op.operation.operationId === listOperationId)\n : undefined;\n return explicitList ?? findListEndpoint(domainOps, entities);\n }, [domainOps, entities, listOperationId, surfaceKey, useSurfaceMetadata]);\n\n const resolvedDetailEndpoint = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceDetailOperation(domainOps, surfaceKey);\n }\n\n return detailOperationId\n ? domainOps.find(\n (op) => op.method === \"get\" && op.operation.operationId === detailOperationId,\n )\n : findDetailEndpointForList(domainOps, listEndpoint);\n }, [detailOperationId, domainOps, listEndpoint, surfaceKey, useSurfaceMetadata]);\n\n const idParameterName = useMemo(\n () =>\n resolvedDetailEndpoint?.operation.parameters?.find((param) => param.in === \"path\")?.name ??\n \"id\",\n [resolvedDetailEndpoint],\n );\n const detailValues = useMemo(() => (id ? { [idParameterName]: id } : {}), [id, idParameterName]);\n const actionOps = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceEntityActions(domainOps, surfaceKey);\n }\n\n return resolvedDetailEndpoint == null\n ? []\n : domainOps.filter(\n (op) => op.method !== \"get\" && op.path.startsWith(`${resolvedDetailEndpoint.path}/`),\n );\n }, [domainOps, resolvedDetailEndpoint, surfaceKey, useSurfaceMetadata]);\n\n const detailQuery = useQuery({\n queryKey: [\"entity-detail\", definition.key, id, resolvedDetailEndpoint?.path],\n queryFn: async () =>\n client.executeCommand(\n resolvedDetailEndpoint!.path,\n resolvedDetailEndpoint!.method,\n detailValues,\n { Accept: \"application/json+clicky\" },\n ),\n enabled: !!resolvedDetailEndpoint && !!id,\n staleTime: 30_000,\n retry: 0,\n });\n\n // Raw (non-clicky) detail used to pre-fill the schema-driven edit form. Only\n // resources whose detail endpoint returns a plain object (e.g. connections)\n // prefill; others (e.g. a profile detail that returns rows) start blank.\n const rawDetailQuery = useQuery({\n queryKey: [\"entity-detail-raw\", definition.key, id, resolvedDetailEndpoint?.path],\n queryFn: async () =>\n client.executeCommand(resolvedDetailEndpoint!.path, resolvedDetailEndpoint!.method, detailValues, {\n Accept: \"application/json\",\n }),\n enabled: !!resolvedDetailEndpoint && !!id,\n staleTime: 30_000,\n retry: 0,\n });\n const editInitialValue = useMemo(() => {\n const parsed = rawDetailQuery.data?.parsed;\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n }, [rawDetailQuery.data]);\n\n const backLink =\n backHref == null ? null : renderLink ? (\n renderLink({\n to: backHref,\n className: \"text-sm text-primary underline-offset-4 hover:underline\",\n children: backLabel,\n })\n ) : (\n <a href={backHref} className=\"text-sm text-primary underline-offset-4 hover:underline\">\n {backLabel}\n </a>\n );\n\n if (isLoading) {\n return <div className=\"text-sm text-muted-foreground\">Loading entity…</div>;\n }\n\n if (!resolvedDetailEndpoint || !id) {\n return (\n <div className=\"space-y-4\">\n {backLink}\n <div className=\"text-sm text-muted-foreground\">Unknown entity detail route.</div>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 space-y-2\">\n {backLink}\n <div className=\"flex items-center gap-3\">\n <MethodBadge method={resolvedDetailEndpoint.method} />\n <code className=\"rounded-md bg-muted px-2 py-1 text-sm\">\n {resolvedDetailEndpoint.path}\n </code>\n </div>\n <div>\n <h1 className=\"text-2xl font-semibold tracking-tight\">\n {definition.title}: {id}\n </h1>\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">{definition.description}</p>\n </div>\n </div>\n </div>\n\n <OperationActionBar\n actions={actionOps}\n client={client}\n getLockedValues={() => ({ [idParameterName]: id })}\n onExecuted={() => void detailQuery.refetch()}\n hideLockedInForm\n {...(editInitialValue ? { initialValue: editInitialValue } : {})}\n {...(commandRuntime ? { commandRuntime } : {})}\n {...(formPre ? { formPre } : {})}\n {...(formPost ? { formPost } : {})}\n {...(formActions ? { formActions } : {})}\n />\n\n {detailQuery.isLoading ? (\n <section className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-lg font-medium\">Entity detail</h2>\n <ExecutionResult loading loadingMessage=\"Loading entity detail…\" />\n </section>\n ) : detailQuery.isError ? (\n renderError(detailQuery.error, `Failed to load ${resolvedDetailEndpoint.path}`)\n ) : (\n <section className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-lg font-medium\">Entity detail</h2>\n <ExecutionResult\n response={detailQuery.data ?? null}\n {...(commandRuntime ? { commandRuntime } : {})}\n />\n </section>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OperationEntityPage.js","sources":["../../src/rpc/OperationEntityPage.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport type { ClickyCommandRuntime } from \"../data/Clicky\";\nimport { MethodBadge } from \"../data/MethodBadge\";\nimport { filterOperationsByDomain, findDetailEndpointForList, findListEndpoint } from \"./classify\";\nimport {\n filterOperationsBySurface,\n findSurfaceDetailOperation,\n findSurfaceEntityActions,\n findSurfaceListOperation,\n} from \"./clickyMetadata\";\nimport { resolveSurfaceIcon } from \"./surfaceIconMap\";\nimport { ExecutionResult } from \"./ExecutionResult\";\nimport { OperationActionBar } from \"./OperationActionBar\";\nimport { type FormActionsRenderer } from \"./SchemaActionForm\";\nimport type { RenderLink } from \"./EndpointList\";\nimport type { PreExtension, PostExtension } from \"../components/json-schema-form-types\";\nimport type { DomainDefinition } from \"./types\";\nimport type { ExecutionResponse } from \"./types\";\nimport { useOperations, type OperationsApiClient } from \"./useOperations\";\n\nexport type EntityDetailBodyRenderContext = {\n id: string;\n surfaceKey?: string;\n entity?: Record<string, unknown>;\n response: ExecutionResponse | null;\n defaultView: ReactNode;\n};\n\nexport type EntityDetailBodyRenderer = (context: EntityDetailBodyRenderContext) => ReactNode;\n\nexport type EntityDetailHeaderRenderContext = {\n id: string;\n surfaceKey?: string;\n title: string;\n description?: string;\n icon?: ReactNode;\n defaultHeader: ReactNode;\n};\n\nexport type EntityDetailHeaderRenderer = (context: EntityDetailHeaderRenderContext) => ReactNode;\n\nexport type OperationEntityPageProps = {\n id?: string;\n definition: DomainDefinition;\n entities: string[];\n client: OperationsApiClient;\n renderLink?: RenderLink;\n allOperations?: boolean;\n operationIdPrefix?: string;\n listOperationId?: string;\n detailOperationId?: string;\n surfaceKey?: string;\n backHref?: string;\n backLabel?: string;\n renderError?: (err: unknown, title: string) => ReactNode;\n commandRuntime?: ClickyCommandRuntime;\n // Custom JsonSchemaForm field extensions forwarded to the edit form.\n formPre?: PreExtension[];\n formPost?: PostExtension[];\n // Optional extra footer actions for the edit form (e.g. a connection \"Test\"\n // button).\n formActions?: FormActionsRenderer;\n actionLabels?: Record<string, string>;\n /**\n * Replaces the detail body after the entity has loaded while leaving the\n * explorer-owned heading and entity actions in place. Hosts can use this for\n * connection browsers and other entity-specific workspaces.\n */\n entityDetailBodyRenderer?: EntityDetailBodyRenderer;\n /**\n * Replaces the explorer-owned \"{title}: {id}\" heading while leaving the back\n * link, method badge, and entity actions in place. Hosts use this for compact\n * entity summaries (e.g. a connection's name, endpoint, and server version).\n */\n entityDetailHeaderRenderer?: EntityDetailHeaderRenderer;\n};\n\nfunction defaultRenderError(err: unknown, title: string) {\n const message = err instanceof Error ? err.message : String(err ?? \"\");\n return (\n <div className=\"rounded-xl border border-destructive/40 bg-destructive/5 p-4 text-sm text-destructive\">\n <div className=\"font-medium\">{title}</div>\n {message && <div className=\"mt-1 whitespace-pre-wrap text-xs opacity-80\">{message}</div>}\n </div>\n );\n}\n\nexport function OperationEntityPage({\n id,\n definition,\n entities,\n client,\n renderLink,\n allOperations = false,\n operationIdPrefix,\n listOperationId,\n detailOperationId,\n surfaceKey,\n backHref,\n backLabel = \"Back\",\n renderError = defaultRenderError,\n commandRuntime,\n formPre,\n formPost,\n formActions,\n actionLabels,\n entityDetailBodyRenderer,\n entityDetailHeaderRenderer,\n}: OperationEntityPageProps) {\n const { operations, isLoading } = useOperations(client);\n const surfaceOps = useMemo(\n () => filterOperationsBySurface(operations, surfaceKey),\n [operations, surfaceKey],\n );\n const useSurfaceMetadata = surfaceOps.length > 0;\n\n const domainOps = useMemo(() => {\n if (useSurfaceMetadata) {\n return surfaceOps;\n }\n\n return (allOperations ? operations : filterOperationsByDomain(operations, entities)).filter(\n (op) =>\n operationIdPrefix ? (op.operation.operationId ?? \"\").startsWith(operationIdPrefix) : true,\n );\n }, [allOperations, entities, operationIdPrefix, operations, surfaceOps, useSurfaceMetadata]);\n\n const listEndpoint = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceListOperation(domainOps, surfaceKey);\n }\n\n const explicitList = listOperationId\n ? domainOps.find((op) => op.method === \"get\" && op.operation.operationId === listOperationId)\n : undefined;\n return explicitList ?? findListEndpoint(domainOps, entities);\n }, [domainOps, entities, listOperationId, surfaceKey, useSurfaceMetadata]);\n\n const resolvedDetailEndpoint = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceDetailOperation(domainOps, surfaceKey);\n }\n\n return detailOperationId\n ? domainOps.find(\n (op) => op.method === \"get\" && op.operation.operationId === detailOperationId,\n )\n : findDetailEndpointForList(domainOps, listEndpoint);\n }, [detailOperationId, domainOps, listEndpoint, surfaceKey, useSurfaceMetadata]);\n\n const idParameterName = useMemo(\n () =>\n resolvedDetailEndpoint?.operation.parameters?.find((param) => param.in === \"path\")?.name ??\n \"id\",\n [resolvedDetailEndpoint],\n );\n const detailValues = useMemo(() => (id ? { [idParameterName]: id } : {}), [id, idParameterName]);\n const actionOps = useMemo(() => {\n if (useSurfaceMetadata) {\n return findSurfaceEntityActions(domainOps, surfaceKey);\n }\n\n return resolvedDetailEndpoint == null\n ? []\n : domainOps.filter(\n (op) => op.method !== \"get\" && op.path.startsWith(`${resolvedDetailEndpoint.path}/`),\n );\n }, [domainOps, resolvedDetailEndpoint, surfaceKey, useSurfaceMetadata]);\n\n const detailQuery = useQuery({\n queryKey: [\"entity-detail\", definition.key, id, resolvedDetailEndpoint?.path],\n queryFn: async () =>\n client.executeCommand(\n resolvedDetailEndpoint!.path,\n resolvedDetailEndpoint!.method,\n detailValues,\n { Accept: \"application/json+clicky\" },\n ),\n enabled: !!resolvedDetailEndpoint && !!id,\n staleTime: 30_000,\n retry: 0,\n });\n\n // Raw (non-clicky) detail used to pre-fill the schema-driven edit form. Only\n // resources whose detail endpoint returns a plain object (e.g. connections)\n // prefill; others (e.g. a profile detail that returns rows) start blank.\n const rawDetailQuery = useQuery({\n queryKey: [\"entity-detail-raw\", definition.key, id, resolvedDetailEndpoint?.path],\n queryFn: async () =>\n client.executeCommand(resolvedDetailEndpoint!.path, resolvedDetailEndpoint!.method, detailValues, {\n Accept: \"application/json\",\n }),\n enabled: !!resolvedDetailEndpoint && !!id,\n staleTime: 30_000,\n retry: 0,\n });\n const editInitialValue = useMemo(() => {\n const parsed = rawDetailQuery.data?.parsed;\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n }, [rawDetailQuery.data]);\n\n const backLink =\n backHref == null ? null : renderLink ? (\n renderLink({\n to: backHref,\n className: \"text-sm text-primary underline-offset-4 hover:underline\",\n children: backLabel,\n })\n ) : (\n <a href={backHref} className=\"text-sm text-primary underline-offset-4 hover:underline\">\n {backLabel}\n </a>\n );\n\n if (isLoading) {\n return <div className=\"text-sm text-muted-foreground\">Loading entity…</div>;\n }\n\n if (!resolvedDetailEndpoint || !id) {\n return (\n <div className=\"space-y-4\">\n {backLink}\n <div className=\"text-sm text-muted-foreground\">Unknown entity detail route.</div>\n </div>\n );\n }\n\n const defaultDetailBody = (\n <section className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-lg font-medium\">Entity detail</h2>\n <ExecutionResult\n response={detailQuery.data ?? null}\n {...(commandRuntime ? { commandRuntime } : {})}\n />\n </section>\n );\n\n const defaultHeader = (\n <div>\n <h1 className=\"text-2xl font-semibold tracking-tight\">\n {definition.title}: {id}\n </h1>\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">{definition.description}</p>\n </div>\n );\n const SurfaceIcon = resolveSurfaceIcon(definition.icon);\n const surfaceIcon = SurfaceIcon ? <SurfaceIcon className=\"h-6 w-6 shrink-0\" /> : undefined;\n const entityHeader =\n entityDetailHeaderRenderer?.({\n id,\n ...(surfaceKey ? { surfaceKey } : {}),\n title: definition.title,\n ...(definition.description ? { description: definition.description } : {}),\n ...(surfaceIcon ? { icon: surfaceIcon } : {}),\n defaultHeader,\n }) ?? defaultHeader;\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 space-y-2\">\n {backLink}\n <div className=\"flex items-center gap-3\">\n <MethodBadge method={resolvedDetailEndpoint.method} />\n <code className=\"rounded-md bg-muted px-2 py-1 text-sm\">\n {resolvedDetailEndpoint.path}\n </code>\n </div>\n {entityHeader}\n </div>\n </div>\n\n {!rawDetailQuery.isLoading && (\n <OperationActionBar\n actions={actionOps}\n client={client}\n getLockedValues={() => ({ [idParameterName]: id })}\n onExecuted={async () => {\n await Promise.all([detailQuery.refetch(), rawDetailQuery.refetch()]);\n }}\n hideLockedInForm\n {...(editInitialValue ? { initialValue: editInitialValue } : {})}\n {...(commandRuntime ? { commandRuntime } : {})}\n {...(formPre ? { formPre } : {})}\n {...(formPost ? { formPost } : {})}\n {...(formActions ? { formActions } : {})}\n {...(actionLabels ? { actionLabels } : {})}\n />\n )}\n\n {detailQuery.isLoading ? (\n <section className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-lg font-medium\">Entity detail</h2>\n <ExecutionResult loading loadingMessage=\"Loading entity detail…\" />\n </section>\n ) : detailQuery.isError ? (\n renderError(detailQuery.error, `Failed to load ${resolvedDetailEndpoint.path}`)\n ) : (\n entityDetailBodyRenderer?.({\n id,\n ...(surfaceKey ? { surfaceKey } : {}),\n ...(editInitialValue ? { entity: editInitialValue } : {}),\n response: detailQuery.data ?? null,\n defaultView: defaultDetailBody,\n }) ?? defaultDetailBody\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,8 @@ function OperationResultView({
|
|
|
13
13
|
commandRuntime,
|
|
14
14
|
detailOperation,
|
|
15
15
|
filterConfig,
|
|
16
|
-
pagination
|
|
16
|
+
pagination,
|
|
17
|
+
download
|
|
17
18
|
}) {
|
|
18
19
|
const rowNav = rowNavigation.useRowDetailNavigation(detailOperation);
|
|
19
20
|
const filters = filterConfig == null ? void 0 : filterConfig.filters;
|
|
@@ -35,7 +36,8 @@ function OperationResultView({
|
|
|
35
36
|
...filters && filters.length > 0 ? { externalFilters: filters } : {},
|
|
36
37
|
...(filterConfig == null ? void 0 : filterConfig.search) ? { search: filterConfig.search } : {},
|
|
37
38
|
...(filterConfig == null ? void 0 : filterConfig.timeRange) ? { timeRange: filterConfig.timeRange } : {},
|
|
38
|
-
...pagination ? { pagination } : {}
|
|
39
|
+
...pagination ? { pagination } : {},
|
|
40
|
+
...download ? { download } : {}
|
|
39
41
|
}
|
|
40
42
|
);
|
|
41
43
|
}
|