@flanksource/clicky-ui 0.3.21 → 0.3.23
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 +14 -0
- package/README.md +8 -1
- package/dist/ai.cjs +10 -0
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +10 -0
- package/dist/ai.js.map +1 -1
- package/dist/comments/MentionTextarea.cjs +1 -1
- package/dist/comments/MentionTextarea.cjs.map +1 -1
- package/dist/comments/MentionTextarea.js +1 -1
- package/dist/comments/MentionTextarea.js.map +1 -1
- package/dist/components/AccordionList.cjs +320 -0
- package/dist/components/AccordionList.cjs.map +1 -0
- package/dist/components/AccordionList.d.ts +93 -0
- package/dist/components/AccordionList.d.ts.map +1 -0
- package/dist/components/AccordionList.js +320 -0
- package/dist/components/AccordionList.js.map +1 -0
- package/dist/components/Combobox.cjs +41 -3
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +42 -4
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxControl.cjs +6 -0
- package/dist/components/ComboboxControl.cjs.map +1 -1
- package/dist/components/ComboboxControl.d.ts +7 -3
- package/dist/components/ComboboxControl.d.ts.map +1 -1
- package/dist/components/ComboboxControl.js +6 -0
- package/dist/components/ComboboxControl.js.map +1 -1
- package/dist/components/ComboboxMenu.cjs +2 -1
- package/dist/components/ComboboxMenu.cjs.map +1 -1
- package/dist/components/ComboboxMenu.d.ts +3 -1
- package/dist/components/ComboboxMenu.d.ts.map +1 -1
- package/dist/components/ComboboxMenu.js +2 -1
- package/dist/components/ComboboxMenu.js.map +1 -1
- package/dist/components/ComboboxTags.cjs +42 -11
- package/dist/components/ComboboxTags.cjs.map +1 -1
- package/dist/components/ComboboxTags.d.ts +5 -2
- package/dist/components/ComboboxTags.d.ts.map +1 -1
- package/dist/components/ComboboxTags.js +42 -11
- package/dist/components/ComboboxTags.js.map +1 -1
- package/dist/components/ConnectionLoggingPolicy.cjs +268 -0
- package/dist/components/ConnectionLoggingPolicy.cjs.map +1 -0
- package/dist/components/ConnectionLoggingPolicy.d.ts +3 -0
- package/dist/components/ConnectionLoggingPolicy.d.ts.map +1 -0
- package/dist/components/ConnectionLoggingPolicy.js +268 -0
- package/dist/components/ConnectionLoggingPolicy.js.map +1 -0
- package/dist/components/ConnectionLoggingPolicy.model.cjs +52 -0
- package/dist/components/ConnectionLoggingPolicy.model.cjs.map +1 -0
- package/dist/components/ConnectionLoggingPolicy.model.d.ts +35 -0
- package/dist/components/ConnectionLoggingPolicy.model.d.ts.map +1 -0
- package/dist/components/ConnectionLoggingPolicy.model.js +52 -0
- package/dist/components/ConnectionLoggingPolicy.model.js.map +1 -0
- package/dist/components/CountryFlag.cjs +55 -0
- package/dist/components/CountryFlag.cjs.map +1 -0
- package/dist/components/CountryFlag.d.ts +8 -0
- package/dist/components/CountryFlag.d.ts.map +1 -0
- package/dist/components/CountryFlag.js +38 -0
- package/dist/components/CountryFlag.js.map +1 -0
- package/dist/components/CountryPicker.cjs +35 -0
- package/dist/components/CountryPicker.cjs.map +1 -0
- package/dist/components/CountryPicker.d.ts +4 -0
- package/dist/components/CountryPicker.d.ts.map +1 -0
- package/dist/components/CountryPicker.js +35 -0
- package/dist/components/CountryPicker.js.map +1 -0
- package/dist/components/DaemonSetIcon.cjs +20 -0
- package/dist/components/DaemonSetIcon.cjs.map +1 -0
- package/dist/components/DaemonSetIcon.d.ts +8 -0
- package/dist/components/DaemonSetIcon.d.ts.map +1 -0
- package/dist/components/DaemonSetIcon.js +20 -0
- package/dist/components/DaemonSetIcon.js.map +1 -0
- package/dist/components/DateField.cjs.map +1 -1
- package/dist/components/DateField.d.ts +11 -3
- package/dist/components/DateField.d.ts.map +1 -1
- package/dist/components/DateField.js.map +1 -1
- package/dist/components/DatePicker.cjs +6 -1
- package/dist/components/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker.d.ts +11 -3
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker.js +6 -1
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/EndpointSelector.cjs +29 -8
- package/dist/components/EndpointSelector.cjs.map +1 -1
- package/dist/components/EndpointSelector.d.ts +1 -1
- package/dist/components/EndpointSelector.d.ts.map +1 -1
- package/dist/components/EndpointSelector.js +29 -8
- package/dist/components/EndpointSelector.js.map +1 -1
- package/dist/components/EndpointSelector.model.cjs.map +1 -1
- package/dist/components/EndpointSelector.model.d.ts +5 -0
- package/dist/components/EndpointSelector.model.d.ts.map +1 -1
- package/dist/components/EndpointSelector.model.js.map +1 -1
- package/dist/components/FilterBar.cjs +43 -19
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +21 -1
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +41 -17
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/InputField.cjs +14 -2
- package/dist/components/InputField.cjs.map +1 -1
- package/dist/components/InputField.d.ts +6 -0
- package/dist/components/InputField.d.ts.map +1 -1
- package/dist/components/InputField.js +14 -2
- package/dist/components/InputField.js.map +1 -1
- package/dist/components/ItemActions.cjs +87 -0
- package/dist/components/ItemActions.cjs.map +1 -0
- package/dist/components/ItemActions.d.ts +33 -0
- package/dist/components/ItemActions.d.ts.map +1 -0
- package/dist/components/ItemActions.js +87 -0
- package/dist/components/ItemActions.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +1 -1
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.js +1 -1
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MdxEditorCallout.cjs +108 -0
- package/dist/components/MdxEditorCallout.cjs.map +1 -0
- package/dist/components/MdxEditorCallout.d.ts +27 -0
- package/dist/components/MdxEditorCallout.d.ts.map +1 -0
- package/dist/components/MdxEditorCallout.js +108 -0
- package/dist/components/MdxEditorCallout.js.map +1 -0
- 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 +10 -2
- package/dist/components/MdxEditorToolbar.cjs.map +1 -1
- package/dist/components/MdxEditorToolbar.d.ts.map +1 -1
- package/dist/components/MdxEditorToolbar.js +10 -2
- package/dist/components/MdxEditorToolbar.js.map +1 -1
- package/dist/components/MultiSelect.cjs +3 -1
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +3 -1
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/NamespacePicker.cjs +1 -0
- package/dist/components/NamespacePicker.cjs.map +1 -1
- package/dist/components/NamespacePicker.d.ts.map +1 -1
- package/dist/components/NamespacePicker.js +1 -0
- package/dist/components/NamespacePicker.js.map +1 -1
- package/dist/components/SplitButton.cjs +3 -2
- package/dist/components/SplitButton.cjs.map +1 -1
- package/dist/components/SplitButton.d.ts +6 -1
- package/dist/components/SplitButton.d.ts.map +1 -1
- package/dist/components/SplitButton.js +3 -2
- package/dist/components/SplitButton.js.map +1 -1
- package/dist/components/WorkloadPicker.cjs +117 -31
- package/dist/components/WorkloadPicker.cjs.map +1 -1
- package/dist/components/WorkloadPicker.d.ts +29 -5
- package/dist/components/WorkloadPicker.d.ts.map +1 -1
- package/dist/components/WorkloadPicker.js +119 -33
- package/dist/components/WorkloadPicker.js.map +1 -1
- package/dist/components/button-variants.d.ts +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/combobox-types.d.ts +13 -0
- package/dist/components/combobox-types.d.ts.map +1 -1
- package/dist/components/combobox-utils.cjs +16 -0
- package/dist/components/combobox-utils.cjs.map +1 -1
- package/dist/components/combobox-utils.d.ts +1 -0
- package/dist/components/combobox-utils.d.ts.map +1 -1
- package/dist/components/combobox-utils.js +16 -0
- package/dist/components/combobox-utils.js.map +1 -1
- package/dist/components/country-options.cjs +34 -0
- package/dist/components/country-options.cjs.map +1 -0
- package/dist/components/country-options.d.ts +8 -0
- package/dist/components/country-options.d.ts.map +1 -0
- package/dist/components/country-options.js +34 -0
- package/dist/components/country-options.js.map +1 -0
- package/dist/components/filter-bar-multi.cjs +1 -1
- package/dist/components/filter-bar-multi.cjs.map +1 -1
- package/dist/components/filter-bar-multi.js +1 -1
- package/dist/components/filter-bar-multi.js.map +1 -1
- package/dist/components/filter-bar-utils.cjs +14 -2
- package/dist/components/filter-bar-utils.cjs.map +1 -1
- package/dist/components/filter-bar-utils.d.ts +2 -1
- package/dist/components/filter-bar-utils.d.ts.map +1 -1
- package/dist/components/filter-bar-utils.js +14 -2
- package/dist/components/filter-bar-utils.js.map +1 -1
- package/dist/components/jotai-bindings-core.cjs +11 -0
- package/dist/components/jotai-bindings-core.cjs.map +1 -1
- package/dist/components/jotai-bindings-core.d.ts +3 -2
- package/dist/components/jotai-bindings-core.d.ts.map +1 -1
- package/dist/components/jotai-bindings-core.js +11 -0
- package/dist/components/jotai-bindings-core.js.map +1 -1
- package/dist/components/json-schema-form-accordion-array.cjs +54 -190
- package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
- package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-accordion-array.js +59 -195
- package/dist/components/json-schema-form-accordion-array.js.map +1 -1
- package/dist/components/json-schema-form-array.cjs +46 -146
- 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 +47 -147
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-cards-array.cjs +9 -7
- package/dist/components/json-schema-form-cards-array.cjs.map +1 -1
- package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-cards-array.js +11 -9
- package/dist/components/json-schema-form-cards-array.js.map +1 -1
- package/dist/components/json-schema-form-error-display.js +1 -1
- package/dist/components/json-schema-form-errors.cjs +17 -4
- package/dist/components/json-schema-form-errors.cjs.map +1 -1
- package/dist/components/json-schema-form-errors.d.ts +1 -0
- package/dist/components/json-schema-form-errors.d.ts.map +1 -1
- package/dist/components/json-schema-form-errors.js +16 -3
- package/dist/components/json-schema-form-errors.js.map +1 -1
- package/dist/components/json-schema-form-fields.cjs +18 -2
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +18 -2
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-item-row.cjs +17 -46
- package/dist/components/json-schema-form-item-row.cjs.map +1 -1
- package/dist/components/json-schema-form-item-row.d.ts +3 -10
- package/dist/components/json-schema-form-item-row.d.ts.map +1 -1
- package/dist/components/json-schema-form-item-row.js +18 -47
- package/dist/components/json-schema-form-item-row.js.map +1 -1
- package/dist/components/json-schema-form-item-summary.cjs +18 -4
- package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
- package/dist/components/json-schema-form-item-summary.d.ts +2 -1
- package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
- package/dist/components/json-schema-form-item-summary.js +15 -1
- package/dist/components/json-schema-form-item-summary.js.map +1 -1
- package/dist/components/json-schema-form-lookup-tree.cjs +2 -5
- package/dist/components/json-schema-form-lookup-tree.cjs.map +1 -1
- package/dist/components/json-schema-form-lookup-tree.d.ts.map +1 -1
- package/dist/components/json-schema-form-lookup-tree.js +2 -5
- package/dist/components/json-schema-form-lookup-tree.js.map +1 -1
- package/dist/components/json-schema-form-object.cjs +3 -2
- 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 +2 -1
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +4 -1
- 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 +5 -2
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +21 -13
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +2 -2
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +16 -8
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-table-array.cjs +4 -3
- package/dist/components/json-schema-form-table-array.cjs.map +1 -1
- package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-table-array.js +2 -1
- package/dist/components/json-schema-form-table-array.js.map +1 -1
- package/dist/components/json-schema-form-tags-combobox.cjs +55 -0
- package/dist/components/json-schema-form-tags-combobox.cjs.map +1 -0
- package/dist/components/json-schema-form-tags-combobox.d.ts +17 -0
- package/dist/components/json-schema-form-tags-combobox.d.ts.map +1 -0
- package/dist/components/json-schema-form-tags-combobox.js +55 -0
- package/dist/components/json-schema-form-tags-combobox.js.map +1 -0
- package/dist/components/json-schema-form-types.d.ts +8 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +5 -28
- package/dist/components/json-schema-form-utils.cjs.map +1 -1
- package/dist/components/json-schema-form-utils.d.ts +1 -5
- package/dist/components/json-schema-form-utils.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.js +5 -28
- package/dist/components/json-schema-form-utils.js.map +1 -1
- package/dist/components/jsonPathTree.cjs +10 -3
- package/dist/components/jsonPathTree.cjs.map +1 -1
- package/dist/components/jsonPathTree.d.ts +17 -0
- package/dist/components/jsonPathTree.d.ts.map +1 -1
- package/dist/components/jsonPathTree.js +10 -3
- package/dist/components/jsonPathTree.js.map +1 -1
- package/dist/components/mdx-editor-callout-model.cjs +26 -0
- package/dist/components/mdx-editor-callout-model.cjs.map +1 -0
- package/dist/components/mdx-editor-callout-model.d.ts +14 -0
- package/dist/components/mdx-editor-callout-model.d.ts.map +1 -0
- package/dist/components/mdx-editor-callout-model.js +26 -0
- package/dist/components/mdx-editor-callout-model.js.map +1 -0
- package/dist/components/mdx-editor-callout.cjs +39 -0
- package/dist/components/mdx-editor-callout.cjs.map +1 -0
- package/dist/components/mdx-editor-callout.d.ts +27 -0
- package/dist/components/mdx-editor-callout.d.ts.map +1 -0
- package/dist/components/mdx-editor-callout.js +39 -0
- package/dist/components/mdx-editor-callout.js.map +1 -0
- package/dist/components/mdx-editor-field-plugins.cjs +14 -0
- 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 +14 -0
- package/dist/components/mdx-editor-field-plugins.js.map +1 -1
- package/dist/components/mdx-editor-jsx-attributes.cjs +23 -0
- package/dist/components/mdx-editor-jsx-attributes.cjs.map +1 -0
- package/dist/components/mdx-editor-jsx-attributes.d.ts +29 -0
- package/dist/components/mdx-editor-jsx-attributes.d.ts.map +1 -0
- package/dist/components/mdx-editor-jsx-attributes.js +23 -0
- package/dist/components/mdx-editor-jsx-attributes.js.map +1 -0
- package/dist/components/mdx-editor-options.d.ts +79 -0
- package/dist/components/mdx-editor-options.d.ts.map +1 -1
- package/dist/components/workload-picker-utils.cjs +17 -4
- package/dist/components/workload-picker-utils.cjs.map +1 -1
- package/dist/components/workload-picker-utils.d.ts +3 -1
- package/dist/components/workload-picker-utils.d.ts.map +1 -1
- package/dist/components/workload-picker-utils.js +18 -5
- package/dist/components/workload-picker-utils.js.map +1 -1
- package/dist/components.cjs +24 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +12 -3
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +24 -0
- package/dist/components.js.map +1 -1
- package/dist/data/Callout.cjs +48 -0
- package/dist/data/Callout.cjs.map +1 -0
- package/dist/data/Callout.d.ts +58 -0
- package/dist/data/Callout.d.ts.map +1 -0
- package/dist/data/Callout.js +48 -0
- package/dist/data/Callout.js.map +1 -0
- package/dist/data/Clicky.cjs +311 -249
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts +37 -2
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +314 -252
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/CodeDiff.cjs +3 -18
- package/dist/data/CodeDiff.cjs.map +1 -1
- package/dist/data/CodeDiff.d.ts.map +1 -1
- package/dist/data/CodeDiff.js +3 -18
- package/dist/data/CodeDiff.js.map +1 -1
- package/dist/data/DataTable.cjs +420 -172
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +57 -4
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.grouping.cjs +26 -0
- package/dist/data/DataTable.grouping.cjs.map +1 -1
- package/dist/data/DataTable.grouping.d.ts +49 -1
- package/dist/data/DataTable.grouping.d.ts.map +1 -1
- package/dist/data/DataTable.grouping.js +26 -0
- package/dist/data/DataTable.grouping.js.map +1 -1
- package/dist/data/DataTable.js +423 -175
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/DataTableGroupingControls.cjs +84 -0
- package/dist/data/DataTableGroupingControls.cjs.map +1 -0
- package/dist/data/DataTableGroupingControls.d.ts +17 -0
- package/dist/data/DataTableGroupingControls.d.ts.map +1 -0
- package/dist/data/DataTableGroupingControls.js +84 -0
- package/dist/data/DataTableGroupingControls.js.map +1 -0
- package/dist/data/HighlightedTokens.cjs +21 -0
- package/dist/data/HighlightedTokens.cjs.map +1 -0
- package/dist/data/HighlightedTokens.d.ts +6 -0
- package/dist/data/HighlightedTokens.d.ts.map +1 -0
- package/dist/data/HighlightedTokens.js +21 -0
- package/dist/data/HighlightedTokens.js.map +1 -0
- package/dist/data/Markdown.cjs +31 -2
- package/dist/data/Markdown.cjs.map +1 -1
- package/dist/data/Markdown.d.ts +10 -1
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js +31 -2
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/MarkdownEditor.cjs +1 -1
- package/dist/data/MarkdownEditor.cjs.map +1 -1
- package/dist/data/MarkdownEditor.js +1 -1
- package/dist/data/MarkdownEditor.js.map +1 -1
- package/dist/data/ObjectGraph.cjs +108 -23
- package/dist/data/ObjectGraph.cjs.map +1 -1
- package/dist/data/ObjectGraph.d.ts +28 -22
- package/dist/data/ObjectGraph.d.ts.map +1 -1
- package/dist/data/ObjectGraph.js +109 -24
- package/dist/data/ObjectGraph.js.map +1 -1
- package/dist/data/PromptBanner.cjs +1 -1
- package/dist/data/PromptBanner.cjs.map +1 -1
- package/dist/data/PromptBanner.js +1 -1
- package/dist/data/PromptBanner.js.map +1 -1
- package/dist/data/Tree.cjs +39 -35
- package/dist/data/Tree.cjs.map +1 -1
- package/dist/data/Tree.d.ts +7 -1
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +39 -35
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/ai/ChatButton.cjs +26 -0
- package/dist/data/ai/ChatButton.cjs.map +1 -0
- package/dist/data/ai/ChatButton.d.ts +5 -0
- package/dist/data/ai/ChatButton.d.ts.map +1 -0
- package/dist/data/ai/ChatButton.js +26 -0
- package/dist/data/ai/ChatButton.js.map +1 -0
- package/dist/data/ai/ChatFab.cjs +11 -6
- package/dist/data/ai/ChatFab.cjs.map +1 -1
- package/dist/data/ai/ChatFab.d.ts +5 -3
- package/dist/data/ai/ChatFab.d.ts.map +1 -1
- package/dist/data/ai/ChatFab.js +11 -6
- package/dist/data/ai/ChatFab.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +16 -4
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +7 -2
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +16 -4
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/SandboxConnectionsSection.cjs +71 -0
- package/dist/data/ai/SandboxConnectionsSection.cjs.map +1 -0
- package/dist/data/ai/SandboxConnectionsSection.d.ts +8 -0
- package/dist/data/ai/SandboxConnectionsSection.d.ts.map +1 -0
- package/dist/data/ai/SandboxConnectionsSection.js +71 -0
- package/dist/data/ai/SandboxConnectionsSection.js.map +1 -0
- package/dist/data/ai/SandboxCreateWizard.cjs +288 -0
- package/dist/data/ai/SandboxCreateWizard.cjs.map +1 -0
- package/dist/data/ai/SandboxCreateWizard.d.ts +11 -0
- package/dist/data/ai/SandboxCreateWizard.d.ts.map +1 -0
- package/dist/data/ai/SandboxCreateWizard.js +288 -0
- package/dist/data/ai/SandboxCreateWizard.js.map +1 -0
- package/dist/data/ai/SandboxCreateWizard.model.cjs +77 -0
- package/dist/data/ai/SandboxCreateWizard.model.cjs.map +1 -0
- package/dist/data/ai/SandboxCreateWizard.model.d.ts +32 -0
- package/dist/data/ai/SandboxCreateWizard.model.d.ts.map +1 -0
- package/dist/data/ai/SandboxCreateWizard.model.js +77 -0
- package/dist/data/ai/SandboxCreateWizard.model.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +6 -6
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +6 -6
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +11 -8
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +11 -8
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs +247 -0
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js +247 -0
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.cjs +31 -22
- package/dist/data/ai/SpecRuntimeEditor/fields.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +6 -4
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/fields.js +32 -23
- package/dist/data/ai/SpecRuntimeEditor/fields.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +15 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +8 -3
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js +15 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/types.cjs +11 -0
- package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts +53 -1
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/types.js +11 -0
- package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +23 -0
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +23 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +23 -0
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +28 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +35 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +28 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/index.d.ts +6 -2
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/sandbox-kind-meta.cjs +16 -0
- package/dist/data/ai/sandbox-kind-meta.cjs.map +1 -0
- package/dist/data/ai/sandbox-kind-meta.d.ts +8 -0
- package/dist/data/ai/sandbox-kind-meta.d.ts.map +1 -0
- package/dist/data/ai/sandbox-kind-meta.js +16 -0
- package/dist/data/ai/sandbox-kind-meta.js.map +1 -0
- package/dist/data/badge-variants.d.ts +1 -1
- package/dist/data/cache-browser/CacheTree.cjs +1 -1
- package/dist/data/cache-browser/CacheTree.cjs.map +1 -1
- package/dist/data/cache-browser/CacheTree.js +1 -1
- package/dist/data/cache-browser/CacheTree.js.map +1 -1
- package/dist/data/callout-tones.cjs +95 -0
- package/dist/data/callout-tones.cjs.map +1 -0
- package/dist/data/callout-tones.d.ts +32 -0
- package/dist/data/callout-tones.d.ts.map +1 -0
- package/dist/data/callout-tones.js +95 -0
- package/dist/data/callout-tones.js.map +1 -0
- package/dist/data/chat/PromptInput.cjs +1 -1
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.js +1 -1
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/clicky-export/ClickyExportDialog.cjs +145 -0
- package/dist/data/clicky-export/ClickyExportDialog.cjs.map +1 -0
- package/dist/data/clicky-export/ClickyExportDialog.d.ts +43 -0
- package/dist/data/clicky-export/ClickyExportDialog.d.ts.map +1 -0
- package/dist/data/clicky-export/ClickyExportDialog.js +145 -0
- package/dist/data/clicky-export/ClickyExportDialog.js.map +1 -0
- package/dist/data/clicky-export/index.d.ts +3 -0
- package/dist/data/clicky-export/index.d.ts.map +1 -0
- package/dist/data/clicky-export/useClickyExport.cjs +44 -0
- package/dist/data/clicky-export/useClickyExport.cjs.map +1 -0
- package/dist/data/clicky-export/useClickyExport.d.ts +30 -0
- package/dist/data/clicky-export/useClickyExport.d.ts.map +1 -0
- package/dist/data/clicky-export/useClickyExport.js +44 -0
- package/dist/data/clicky-export/useClickyExport.js.map +1 -0
- package/dist/data/code-highlight.cjs +0 -6
- package/dist/data/code-highlight.cjs.map +1 -1
- package/dist/data/code-highlight.d.ts +4 -3
- package/dist/data/code-highlight.d.ts.map +1 -1
- package/dist/data/code-highlight.js +1 -7
- package/dist/data/code-highlight.js.map +1 -1
- package/dist/data/data-table-server-filters.cjs +15 -2
- package/dist/data/data-table-server-filters.cjs.map +1 -1
- package/dist/data/data-table-server-filters.d.ts +12 -1
- package/dist/data/data-table-server-filters.d.ts.map +1 -1
- package/dist/data/data-table-server-filters.js +15 -2
- package/dist/data/data-table-server-filters.js.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +6 -2
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +8 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js +6 -2
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.cjs +58 -12
- package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.d.ts +5 -2
- package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.js +58 -12
- package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.cjs +54 -24
- package/dist/data/diagnostics/FrameSourceWindow.cjs.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.d.ts +2 -1
- package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.js +54 -24
- package/dist/data/diagnostics/FrameSourceWindow.js.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.utils.cjs.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.utils.d.ts +3 -0
- package/dist/data/diagnostics/FrameSourceWindow.utils.d.ts.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.utils.js.map +1 -1
- package/dist/data/diagnostics/JvmStackTrace.cjs +14 -30
- package/dist/data/diagnostics/JvmStackTrace.cjs.map +1 -1
- package/dist/data/diagnostics/JvmStackTrace.d.ts +6 -9
- package/dist/data/diagnostics/JvmStackTrace.d.ts.map +1 -1
- package/dist/data/diagnostics/JvmStackTrace.js +15 -31
- package/dist/data/diagnostics/JvmStackTrace.js.map +1 -1
- package/dist/data/diagnostics/RenderedStackTrace.cjs +14 -144
- package/dist/data/diagnostics/RenderedStackTrace.cjs.map +1 -1
- package/dist/data/diagnostics/RenderedStackTrace.d.ts +6 -6
- package/dist/data/diagnostics/RenderedStackTrace.d.ts.map +1 -1
- package/dist/data/diagnostics/RenderedStackTrace.js +15 -145
- package/dist/data/diagnostics/RenderedStackTrace.js.map +1 -1
- package/dist/data/diagnostics/StackFrameRow.cjs +65 -0
- package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -0
- package/dist/data/diagnostics/StackFrameRow.d.ts +13 -0
- package/dist/data/diagnostics/StackFrameRow.d.ts.map +1 -0
- package/dist/data/diagnostics/StackFrameRow.js +65 -0
- package/dist/data/diagnostics/StackFrameRow.js.map +1 -0
- package/dist/data/diagnostics/ThreadCard.cjs +9 -2
- package/dist/data/diagnostics/ThreadCard.cjs.map +1 -1
- package/dist/data/diagnostics/ThreadCard.d.ts +3 -1
- package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
- package/dist/data/diagnostics/ThreadCard.js +9 -2
- package/dist/data/diagnostics/ThreadCard.js.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.cjs +17 -2
- package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.d.ts +5 -0
- package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.js +17 -2
- package/dist/data/diagnostics/error-diagnostics.js.map +1 -1
- package/dist/data/diagnostics/frame-heuristics.cjs +26 -0
- package/dist/data/diagnostics/frame-heuristics.cjs.map +1 -0
- package/dist/data/diagnostics/frame-heuristics.d.ts +5 -0
- package/dist/data/diagnostics/frame-heuristics.d.ts.map +1 -0
- package/dist/data/diagnostics/frame-heuristics.js +26 -0
- package/dist/data/diagnostics/frame-heuristics.js.map +1 -0
- package/dist/data/diagnostics/jvm-stacktrace.cjs +5 -7
- package/dist/data/diagnostics/jvm-stacktrace.cjs.map +1 -1
- package/dist/data/diagnostics/jvm-stacktrace.d.ts.map +1 -1
- package/dist/data/diagnostics/jvm-stacktrace.js +5 -7
- package/dist/data/diagnostics/jvm-stacktrace.js.map +1 -1
- package/dist/data/diagnostics/stacktrace-parse.cjs +4 -9
- package/dist/data/diagnostics/stacktrace-parse.cjs.map +1 -1
- package/dist/data/diagnostics/stacktrace-parse.d.ts.map +1 -1
- package/dist/data/diagnostics/stacktrace-parse.js +4 -9
- package/dist/data/diagnostics/stacktrace-parse.js.map +1 -1
- package/dist/data/logs-normalize.cjs +18 -3
- package/dist/data/logs-normalize.cjs.map +1 -1
- package/dist/data/logs-normalize.d.ts +17 -0
- package/dist/data/logs-normalize.d.ts.map +1 -1
- package/dist/data/logs-normalize.js +18 -3
- package/dist/data/logs-normalize.js.map +1 -1
- package/dist/data/object-graph-nodes.cjs +24 -0
- package/dist/data/object-graph-nodes.cjs.map +1 -0
- package/dist/data/object-graph-nodes.d.ts +34 -0
- package/dist/data/object-graph-nodes.d.ts.map +1 -0
- package/dist/data/object-graph-nodes.js +24 -0
- package/dist/data/object-graph-nodes.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.cjs +52 -32
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.d.ts +1 -1
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.js +53 -33
- package/dist/data/query-browser/QueryBrowser.js.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.d.ts +12 -0
- package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.js.map +1 -1
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs +58 -10
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js +58 -10
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js.map +1 -1
- package/dist/data/query-browser/QueryBrowserResults.cjs +4 -4
- package/dist/data/query-browser/QueryBrowserResults.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowserResults.d.ts +4 -2
- package/dist/data/query-browser/QueryBrowserResults.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowserResults.js +4 -4
- package/dist/data/query-browser/QueryBrowserResults.js.map +1 -1
- package/dist/data/query-info/QueryInfoDialog.cjs +106 -0
- package/dist/data/query-info/QueryInfoDialog.cjs.map +1 -0
- package/dist/data/query-info/QueryInfoDialog.d.ts +16 -0
- package/dist/data/query-info/QueryInfoDialog.d.ts.map +1 -0
- package/dist/data/query-info/QueryInfoDialog.js +106 -0
- package/dist/data/query-info/QueryInfoDialog.js.map +1 -0
- package/dist/data/query-info/index.d.ts +4 -0
- package/dist/data/query-info/index.d.ts.map +1 -0
- package/dist/data/query-info/queryInfo.cjs +42 -0
- package/dist/data/query-info/queryInfo.cjs.map +1 -0
- package/dist/data/query-info/queryInfo.d.ts +45 -0
- package/dist/data/query-info/queryInfo.d.ts.map +1 -0
- package/dist/data/query-info/queryInfo.js +42 -0
- package/dist/data/query-info/queryInfo.js.map +1 -0
- package/dist/data/query-info/useQueryInfo.cjs +48 -0
- package/dist/data/query-info/useQueryInfo.cjs.map +1 -0
- package/dist/data/query-info/useQueryInfo.d.ts +26 -0
- package/dist/data/query-info/useQueryInfo.d.ts.map +1 -0
- package/dist/data/query-info/useQueryInfo.js +48 -0
- package/dist/data/query-info/useQueryInfo.js.map +1 -0
- package/dist/data/use-infinite-rows.cjs +20 -0
- package/dist/data/use-infinite-rows.cjs.map +1 -0
- package/dist/data/use-infinite-rows.d.ts +20 -0
- package/dist/data/use-infinite-rows.d.ts.map +1 -0
- package/dist/data/use-infinite-rows.js +20 -0
- package/dist/data/use-infinite-rows.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +51 -1
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +11 -4
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +52 -2
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-log-tail.cjs +213 -0
- package/dist/hooks/use-log-tail.cjs.map +1 -0
- package/dist/hooks/use-log-tail.d.ts +112 -0
- package/dist/hooks/use-log-tail.d.ts.map +1 -0
- package/dist/hooks/use-log-tail.js +213 -0
- package/dist/hooks/use-log-tail.js.map +1 -0
- package/dist/hooks.cjs +10 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +10 -0
- package/dist/hooks.js.map +1 -1
- package/dist/icons/components/UiArrowsCounterClockwise.cjs +15 -0
- package/dist/icons/components/UiArrowsCounterClockwise.cjs.map +1 -0
- package/dist/icons/components/UiArrowsCounterClockwise.d.ts +15 -0
- package/dist/icons/components/UiArrowsCounterClockwise.d.ts.map +1 -0
- package/dist/icons/components/UiArrowsCounterClockwise.js +15 -0
- package/dist/icons/components/UiArrowsCounterClockwise.js.map +1 -0
- package/dist/icons/components/UiClipboardText.cjs +15 -0
- package/dist/icons/components/UiClipboardText.cjs.map +1 -0
- package/dist/icons/components/UiClipboardText.d.ts +15 -0
- package/dist/icons/components/UiClipboardText.d.ts.map +1 -0
- package/dist/icons/components/UiClipboardText.js +15 -0
- package/dist/icons/components/UiClipboardText.js.map +1 -0
- package/dist/icons/components/UiIdentificationCard.cjs +15 -0
- package/dist/icons/components/UiIdentificationCard.cjs.map +1 -0
- package/dist/icons/components/UiIdentificationCard.d.ts +15 -0
- package/dist/icons/components/UiIdentificationCard.d.ts.map +1 -0
- package/dist/icons/components/UiIdentificationCard.js +15 -0
- package/dist/icons/components/UiIdentificationCard.js.map +1 -0
- package/dist/icons/components/UiLockKey.cjs +15 -0
- package/dist/icons/components/UiLockKey.cjs.map +1 -0
- package/dist/icons/components/UiLockKey.d.ts +15 -0
- package/dist/icons/components/UiLockKey.d.ts.map +1 -0
- package/dist/icons/components/UiLockKey.js +15 -0
- package/dist/icons/components/UiLockKey.js.map +1 -0
- package/dist/icons/components/UiSteps.cjs +15 -0
- package/dist/icons/components/UiSteps.cjs.map +1 -0
- package/dist/icons/components/UiSteps.d.ts +15 -0
- package/dist/icons/components/UiSteps.d.ts.map +1 -0
- package/dist/icons/components/UiSteps.js +15 -0
- package/dist/icons/components/UiSteps.js.map +1 -0
- package/dist/icons/components/UiUserGear.cjs +15 -0
- package/dist/icons/components/UiUserGear.cjs.map +1 -0
- package/dist/icons/components/UiUserGear.d.ts +15 -0
- package/dist/icons/components/UiUserGear.d.ts.map +1 -0
- package/dist/icons/components/UiUserGear.js +15 -0
- package/dist/icons/components/UiUserGear.js.map +1 -0
- package/dist/icons/components/UiUsersFour.cjs +15 -0
- package/dist/icons/components/UiUsersFour.cjs.map +1 -0
- package/dist/icons/components/UiUsersFour.d.ts +15 -0
- package/dist/icons/components/UiUsersFour.d.ts.map +1 -0
- package/dist/icons/components/UiUsersFour.js +15 -0
- package/dist/icons/components/UiUsersFour.js.map +1 -0
- package/dist/icons/index.d.ts +14 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/registry.cjs +15 -1
- package/dist/icons/registry.cjs.map +1 -1
- package/dist/icons/registry.d.ts.map +1 -1
- package/dist/icons/registry.js +15 -1
- package/dist/icons/registry.js.map +1 -1
- package/dist/icons.cjs +21 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +21 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +93 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +94 -2
- package/dist/index.js.map +1 -1
- package/dist/jotai.d.ts +1 -1
- package/dist/jotai.d.ts.map +1 -1
- package/dist/lib/collections.cjs +31 -0
- package/dist/lib/collections.cjs.map +1 -0
- package/dist/lib/collections.d.ts +6 -0
- package/dist/lib/collections.d.ts.map +1 -0
- package/dist/lib/collections.js +31 -0
- package/dist/lib/collections.js.map +1 -0
- package/dist/mdx-editor.cjs +12 -0
- package/dist/mdx-editor.cjs.map +1 -1
- package/dist/mdx-editor.css +1 -1
- package/dist/mdx-editor.d.ts +4 -1
- package/dist/mdx-editor.d.ts.map +1 -1
- package/dist/mdx-editor.js +13 -1
- package/dist/mdx-editor.js.map +1 -1
- package/dist/overlay/CommandPalette.cjs +1 -1
- package/dist/overlay/CommandPalette.cjs.map +1 -1
- package/dist/overlay/CommandPalette.js +1 -1
- package/dist/overlay/CommandPalette.js.map +1 -1
- package/dist/profiles/cel/celEditor.cjs +395 -0
- package/dist/profiles/cel/celEditor.cjs.map +1 -0
- package/dist/profiles/cel/celEditor.d.ts +51 -0
- package/dist/profiles/cel/celEditor.d.ts.map +1 -0
- package/dist/profiles/cel/celEditor.js +395 -0
- package/dist/profiles/cel/celEditor.js.map +1 -0
- package/dist/profiles/cel/celEditorExtension.cjs +15 -0
- package/dist/profiles/cel/celEditorExtension.cjs.map +1 -0
- package/dist/profiles/cel/celEditorExtension.d.ts +5 -0
- package/dist/profiles/cel/celEditorExtension.d.ts.map +1 -0
- package/dist/profiles/cel/celEditorExtension.js +15 -0
- package/dist/profiles/cel/celEditorExtension.js.map +1 -0
- package/dist/profiles/cel/celExpression.cjs +174 -0
- package/dist/profiles/cel/celExpression.cjs.map +1 -0
- package/dist/profiles/cel/celExpression.d.ts +138 -0
- package/dist/profiles/cel/celExpression.d.ts.map +1 -0
- package/dist/profiles/cel/celExpression.js +174 -0
- package/dist/profiles/cel/celExpression.js.map +1 -0
- package/dist/profiles/cel/celPath.cjs +47 -0
- package/dist/profiles/cel/celPath.cjs.map +1 -0
- package/dist/profiles/cel/celPath.d.ts +31 -0
- package/dist/profiles/cel/celPath.d.ts.map +1 -0
- package/dist/profiles/cel/celPath.js +47 -0
- package/dist/profiles/cel/celPath.js.map +1 -0
- package/dist/profiles/cel/index.d.ts +5 -0
- package/dist/profiles/cel/index.d.ts.map +1 -0
- package/dist/profiles/connections/catalogTree.cjs +133 -0
- package/dist/profiles/connections/catalogTree.cjs.map +1 -0
- package/dist/profiles/connections/catalogTree.d.ts.map +1 -0
- package/dist/profiles/connections/catalogTree.js +133 -0
- package/dist/profiles/connections/catalogTree.js.map +1 -0
- package/dist/profiles/connections/connectionBrowserModel.cjs +191 -0
- package/dist/profiles/connections/connectionBrowserModel.cjs.map +1 -0
- package/dist/profiles/connections/connectionBrowserModel.d.ts +177 -0
- package/dist/profiles/connections/connectionBrowserModel.d.ts.map +1 -0
- package/dist/profiles/connections/connectionBrowserModel.js +191 -0
- package/dist/profiles/connections/connectionBrowserModel.js.map +1 -0
- package/dist/profiles/connections/connectionQueryWorkspace.cjs +196 -0
- package/dist/profiles/connections/connectionQueryWorkspace.cjs.map +1 -0
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts +63 -0
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts.map +1 -0
- package/dist/profiles/connections/connectionQueryWorkspace.js +196 -0
- package/dist/profiles/connections/connectionQueryWorkspace.js.map +1 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs +28 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs.map +1 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts +38 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts.map +1 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.js +28 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.js.map +1 -0
- package/dist/profiles/connections/index.d.ts +5 -0
- package/dist/profiles/connections/index.d.ts.map +1 -0
- package/dist/profiles/editor/index.d.ts +12 -0
- package/dist/profiles/editor/index.d.ts.map +1 -0
- package/dist/profiles/editor/profileBuilder.cjs +65 -0
- package/dist/profiles/editor/profileBuilder.cjs.map +1 -0
- package/dist/profiles/editor/profileBuilder.d.ts.map +1 -0
- package/dist/profiles/editor/profileBuilder.js +65 -0
- package/dist/profiles/editor/profileBuilder.js.map +1 -0
- package/dist/profiles/editor/profileBuilderExtension.cjs.map +1 -0
- package/dist/profiles/editor/profileBuilderExtension.d.ts +5 -0
- package/dist/profiles/editor/profileBuilderExtension.d.ts.map +1 -0
- package/dist/profiles/editor/profileBuilderExtension.js.map +1 -0
- package/dist/profiles/editor/profileBuilderModel.cjs +44 -0
- package/dist/profiles/editor/profileBuilderModel.cjs.map +1 -0
- package/dist/profiles/editor/profileBuilderModel.d.ts +4 -0
- package/dist/profiles/editor/profileBuilderModel.d.ts.map +1 -0
- package/dist/profiles/editor/profileBuilderModel.js +44 -0
- package/dist/profiles/editor/profileBuilderModel.js.map +1 -0
- package/dist/profiles/editor/profileBuilderWorkspace.cjs +333 -0
- package/dist/profiles/editor/profileBuilderWorkspace.cjs.map +1 -0
- package/dist/profiles/editor/profileBuilderWorkspace.d.ts +21 -0
- package/dist/profiles/editor/profileBuilderWorkspace.d.ts.map +1 -0
- package/dist/profiles/editor/profileBuilderWorkspace.js +333 -0
- package/dist/profiles/editor/profileBuilderWorkspace.js.map +1 -0
- package/dist/profiles/editor/profileEditor.cjs +471 -0
- package/dist/profiles/editor/profileEditor.cjs.map +1 -0
- package/dist/profiles/editor/profileEditor.d.ts +20 -0
- package/dist/profiles/editor/profileEditor.d.ts.map +1 -0
- package/dist/profiles/editor/profileEditor.js +471 -0
- package/dist/profiles/editor/profileEditor.js.map +1 -0
- package/dist/profiles/editor/profileEditorModel.cjs +206 -0
- package/dist/profiles/editor/profileEditorModel.cjs.map +1 -0
- package/dist/profiles/editor/profileEditorModel.d.ts +76 -0
- package/dist/profiles/editor/profileEditorModel.d.ts.map +1 -0
- package/dist/profiles/editor/profileEditorModel.js +206 -0
- package/dist/profiles/editor/profileEditorModel.js.map +1 -0
- package/dist/profiles/editor/profileEditorPreview.cjs.map +1 -0
- package/dist/profiles/editor/profileEditorPreview.d.ts +12 -0
- package/dist/profiles/editor/profileEditorPreview.d.ts.map +1 -0
- package/dist/profiles/editor/profileEditorPreview.js.map +1 -0
- package/dist/profiles/editor/profileEditorRail.cjs.map +1 -0
- package/dist/profiles/editor/profileEditorRail.d.ts.map +1 -0
- package/dist/profiles/editor/profileEditorRail.js.map +1 -0
- package/dist/profiles/editor/profileEditorRaw.cjs +118 -0
- package/dist/profiles/editor/profileEditorRaw.cjs.map +1 -0
- package/dist/profiles/editor/profileEditorRaw.d.ts +7 -0
- package/dist/profiles/editor/profileEditorRaw.d.ts.map +1 -0
- package/dist/profiles/editor/profileEditorRaw.js +118 -0
- package/dist/profiles/editor/profileEditorRaw.js.map +1 -0
- package/dist/profiles/editor/profileEditorRoutes.cjs.map +1 -0
- package/dist/profiles/editor/profileEditorRoutes.d.ts.map +1 -0
- package/dist/profiles/editor/profileEditorRoutes.js.map +1 -0
- package/dist/profiles/editor/profileEditorSections.cjs +247 -0
- package/dist/profiles/editor/profileEditorSections.cjs.map +1 -0
- package/dist/profiles/editor/profileEditorSections.d.ts +26 -0
- package/dist/profiles/editor/profileEditorSections.d.ts.map +1 -0
- package/dist/profiles/editor/profileEditorSections.js +247 -0
- package/dist/profiles/editor/profileEditorSections.js.map +1 -0
- package/dist/profiles/editor/profileYaml.cjs +19 -0
- package/dist/profiles/editor/profileYaml.cjs.map +1 -0
- package/dist/profiles/editor/profileYaml.d.ts +4 -0
- package/dist/profiles/editor/profileYaml.d.ts.map +1 -0
- package/dist/profiles/editor/profileYaml.js +19 -0
- package/dist/profiles/editor/profileYaml.js.map +1 -0
- package/dist/profiles/editor/testSchema.d.ts +3 -0
- package/dist/profiles/editor/testSchema.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esFieldValues.cjs +57 -0
- package/dist/profiles/elasticsearch/esFieldValues.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esFieldValues.d.ts +45 -0
- package/dist/profiles/elasticsearch/esFieldValues.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esFieldValues.js +57 -0
- package/dist/profiles/elasticsearch/esFieldValues.js.map +1 -0
- package/dist/profiles/elasticsearch/esParamMappingModel.cjs +301 -0
- package/dist/profiles/elasticsearch/esParamMappingModel.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esParamMappingModel.d.ts +37 -0
- package/dist/profiles/elasticsearch/esParamMappingModel.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esParamMappingModel.js +301 -0
- package/dist/profiles/elasticsearch/esParamMappingModel.js.map +1 -0
- package/dist/profiles/elasticsearch/esParamMappingPill.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esParamMappingPill.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esParamMappingPill.js.map +1 -0
- package/dist/profiles/elasticsearch/esParamOperandExtension.cjs +75 -0
- package/dist/profiles/elasticsearch/esParamOperandExtension.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +11 -0
- package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esParamOperandExtension.js +75 -0
- package/dist/profiles/elasticsearch/esParamOperandExtension.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilder.cjs +249 -0
- package/dist/profiles/elasticsearch/esQueryBuilder.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +35 -0
- package/dist/profiles/elasticsearch/esQueryBuilder.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilder.js +249 -0
- package/dist/profiles/elasticsearch/esQueryBuilder.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderExtension.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderExtension.d.ts +5 -0
- package/dist/profiles/elasticsearch/esQueryBuilderExtension.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderExtension.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderForm.cjs +59 -0
- package/dist/profiles/elasticsearch/esQueryBuilderForm.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderForm.d.ts +25 -0
- package/dist/profiles/elasticsearch/esQueryBuilderForm.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderForm.js +59 -0
- package/dist/profiles/elasticsearch/esQueryBuilderForm.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderModel.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderModel.d.ts +110 -0
- package/dist/profiles/elasticsearch/esQueryBuilderModel.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryBuilderModel.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryClauseGroup.cjs +144 -0
- package/dist/profiles/elasticsearch/esQueryClauseGroup.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryClauseGroup.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryClauseGroup.js +144 -0
- package/dist/profiles/elasticsearch/esQueryClauseGroup.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryCompile.cjs +48 -0
- package/dist/profiles/elasticsearch/esQueryCompile.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryCompile.d.ts +40 -0
- package/dist/profiles/elasticsearch/esQueryCompile.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryCompile.js +48 -0
- package/dist/profiles/elasticsearch/esQueryCompile.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryConditionRow.cjs +168 -0
- package/dist/profiles/elasticsearch/esQueryConditionRow.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryConditionRow.d.ts +37 -0
- package/dist/profiles/elasticsearch/esQueryConditionRow.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryConditionRow.js +168 -0
- package/dist/profiles/elasticsearch/esQueryConditionRow.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryGroupModel.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryGroupModel.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryGroupModel.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOccur.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOccur.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOccur.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperandEditors.cjs +279 -0
- package/dist/profiles/elasticsearch/esQueryOperandEditors.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperandEditors.d.ts +24 -0
- package/dist/profiles/elasticsearch/esQueryOperandEditors.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperandEditors.js +279 -0
- package/dist/profiles/elasticsearch/esQueryOperandEditors.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperandModel.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperandModel.d.ts +17 -0
- package/dist/profiles/elasticsearch/esQueryOperandModel.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperandModel.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperators.cjs +166 -0
- package/dist/profiles/elasticsearch/esQueryOperators.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperators.d.ts +84 -0
- package/dist/profiles/elasticsearch/esQueryOperators.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOperators.js +166 -0
- package/dist/profiles/elasticsearch/esQueryOperators.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOutputEditor.cjs +138 -0
- package/dist/profiles/elasticsearch/esQueryOutputEditor.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOutputEditor.d.ts +7 -0
- package/dist/profiles/elasticsearch/esQueryOutputEditor.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOutputEditor.js +138 -0
- package/dist/profiles/elasticsearch/esQueryOutputEditor.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOutputModel.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOutputModel.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryOutputModel.js.map +1 -0
- package/dist/profiles/elasticsearch/esQueryPreview.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQueryPreview.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQueryPreview.js.map +1 -0
- package/dist/profiles/elasticsearch/esQuerySortEditor.cjs +143 -0
- package/dist/profiles/elasticsearch/esQuerySortEditor.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQuerySortEditor.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQuerySortEditor.js +143 -0
- package/dist/profiles/elasticsearch/esQuerySortEditor.js.map +1 -0
- package/dist/profiles/elasticsearch/esQuerySortModel.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esQuerySortModel.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esQuerySortModel.js.map +1 -0
- package/dist/profiles/elasticsearch/esValueCombobox.cjs +86 -0
- package/dist/profiles/elasticsearch/esValueCombobox.cjs.map +1 -0
- package/dist/profiles/elasticsearch/esValueCombobox.d.ts.map +1 -0
- package/dist/profiles/elasticsearch/esValueCombobox.js +86 -0
- package/dist/profiles/elasticsearch/esValueCombobox.js.map +1 -0
- package/dist/profiles/elasticsearch/index.d.ts +23 -0
- package/dist/profiles/elasticsearch/index.d.ts.map +1 -0
- package/dist/profiles/fields/index.d.ts +9 -0
- package/dist/profiles/fields/index.d.ts.map +1 -0
- package/dist/profiles/fields/profileColumnModel.cjs.map +1 -0
- package/dist/profiles/fields/profileColumnModel.d.ts +8 -0
- package/dist/profiles/fields/profileColumnModel.d.ts.map +1 -0
- package/dist/profiles/fields/profileColumnModel.js.map +1 -0
- package/dist/profiles/fields/profileColumnPicker.cjs +68 -0
- package/dist/profiles/fields/profileColumnPicker.cjs.map +1 -0
- package/dist/profiles/fields/profileColumnPicker.d.ts +11 -0
- package/dist/profiles/fields/profileColumnPicker.d.ts.map +1 -0
- package/dist/profiles/fields/profileColumnPicker.js +68 -0
- package/dist/profiles/fields/profileColumnPicker.js.map +1 -0
- package/dist/profiles/fields/profileFieldControls.cjs +50 -0
- package/dist/profiles/fields/profileFieldControls.cjs.map +1 -0
- package/dist/profiles/fields/profileFieldControls.d.ts +37 -0
- package/dist/profiles/fields/profileFieldControls.d.ts.map +1 -0
- package/dist/profiles/fields/profileFieldControls.js +50 -0
- package/dist/profiles/fields/profileFieldControls.js.map +1 -0
- package/dist/profiles/fields/profileFieldEditor.cjs +198 -0
- package/dist/profiles/fields/profileFieldEditor.cjs.map +1 -0
- package/dist/profiles/fields/profileFieldEditor.d.ts +34 -0
- package/dist/profiles/fields/profileFieldEditor.d.ts.map +1 -0
- package/dist/profiles/fields/profileFieldEditor.js +198 -0
- package/dist/profiles/fields/profileFieldEditor.js.map +1 -0
- package/dist/profiles/fields/profileFieldFilterEditor.cjs +122 -0
- package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -0
- package/dist/profiles/fields/profileFieldFilterEditor.d.ts +16 -0
- package/dist/profiles/fields/profileFieldFilterEditor.d.ts.map +1 -0
- package/dist/profiles/fields/profileFieldFilterEditor.js +122 -0
- package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -0
- package/dist/profiles/fields/profileFieldIcons.cjs +102 -0
- package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -0
- package/dist/profiles/fields/profileFieldIcons.d.ts +10 -0
- package/dist/profiles/fields/profileFieldIcons.d.ts.map +1 -0
- package/dist/profiles/fields/profileFieldIcons.js +102 -0
- package/dist/profiles/fields/profileFieldIcons.js.map +1 -0
- package/dist/profiles/fields/profileFieldList.cjs +215 -0
- package/dist/profiles/fields/profileFieldList.cjs.map +1 -0
- package/dist/profiles/fields/profileFieldList.d.ts +24 -0
- package/dist/profiles/fields/profileFieldList.d.ts.map +1 -0
- package/dist/profiles/fields/profileFieldList.js +215 -0
- package/dist/profiles/fields/profileFieldList.js.map +1 -0
- package/dist/profiles/fields/profileFieldManager.cjs +103 -0
- package/dist/profiles/fields/profileFieldManager.cjs.map +1 -0
- package/dist/profiles/fields/profileFieldManager.d.ts.map +1 -0
- package/dist/profiles/fields/profileFieldManager.js +103 -0
- package/dist/profiles/fields/profileFieldManager.js.map +1 -0
- package/dist/profiles/fields/profileFieldState.cjs +136 -0
- package/dist/profiles/fields/profileFieldState.cjs.map +1 -0
- package/dist/profiles/fields/profileFieldState.d.ts +41 -0
- package/dist/profiles/fields/profileFieldState.d.ts.map +1 -0
- package/dist/profiles/fields/profileFieldState.js +136 -0
- package/dist/profiles/fields/profileFieldState.js.map +1 -0
- package/dist/profiles/fields/profileFieldTypes.cjs.map +1 -0
- package/dist/profiles/fields/profileFieldTypes.d.ts +8 -0
- package/dist/profiles/fields/profileFieldTypes.d.ts.map +1 -0
- package/dist/profiles/fields/profileFieldTypes.js.map +1 -0
- package/dist/profiles/fields/profileParamModel.cjs.map +1 -0
- package/dist/profiles/fields/profileParamModel.d.ts +3 -0
- package/dist/profiles/fields/profileParamModel.d.ts.map +1 -0
- package/dist/profiles/fields/profileParamModel.js.map +1 -0
- package/dist/profiles/processor/index.d.ts +6 -0
- package/dist/profiles/processor/index.d.ts.map +1 -0
- package/dist/profiles/processor/processorConfig.cjs +185 -0
- package/dist/profiles/processor/processorConfig.cjs.map +1 -0
- package/dist/profiles/processor/processorConfig.d.ts +34 -0
- package/dist/profiles/processor/processorConfig.d.ts.map +1 -0
- package/dist/profiles/processor/processorConfig.js +185 -0
- package/dist/profiles/processor/processorConfig.js.map +1 -0
- package/dist/profiles/processor/processorPipeline.cjs +300 -0
- package/dist/profiles/processor/processorPipeline.cjs.map +1 -0
- package/dist/profiles/processor/processorPipeline.d.ts +11 -0
- package/dist/profiles/processor/processorPipeline.d.ts.map +1 -0
- package/dist/profiles/processor/processorPipeline.js +300 -0
- package/dist/profiles/processor/processorPipeline.js.map +1 -0
- package/dist/profiles/processor/processorPipelineEditor.cjs +330 -0
- package/dist/profiles/processor/processorPipelineEditor.cjs.map +1 -0
- package/dist/profiles/processor/processorPipelineEditor.d.ts +16 -0
- package/dist/profiles/processor/processorPipelineEditor.d.ts.map +1 -0
- package/dist/profiles/processor/processorPipelineEditor.js +330 -0
- package/dist/profiles/processor/processorPipelineEditor.js.map +1 -0
- package/dist/profiles/processor/processorPipelineExtension.cjs +28 -0
- package/dist/profiles/processor/processorPipelineExtension.cjs.map +1 -0
- package/dist/profiles/processor/processorPipelineExtension.d.ts +5 -0
- package/dist/profiles/processor/processorPipelineExtension.d.ts.map +1 -0
- package/dist/profiles/processor/processorPipelineExtension.js +28 -0
- package/dist/profiles/processor/processorPipelineExtension.js.map +1 -0
- package/dist/profiles/processor/processorPreview.cjs +55 -0
- package/dist/profiles/processor/processorPreview.cjs.map +1 -0
- package/dist/profiles/processor/processorPreview.d.ts +20 -0
- package/dist/profiles/processor/processorPreview.d.ts.map +1 -0
- package/dist/profiles/processor/processorPreview.js +55 -0
- package/dist/profiles/processor/processorPreview.js.map +1 -0
- package/dist/profiles/processor/processorPreviewTable.cjs +103 -0
- package/dist/profiles/processor/processorPreviewTable.cjs.map +1 -0
- package/dist/profiles/processor/processorPreviewTable.d.ts +6 -0
- package/dist/profiles/processor/processorPreviewTable.d.ts.map +1 -0
- package/dist/profiles/processor/processorPreviewTable.js +103 -0
- package/dist/profiles/processor/processorPreviewTable.js.map +1 -0
- package/dist/profiles/processor/processorSampleParams.cjs +38 -0
- package/dist/profiles/processor/processorSampleParams.cjs.map +1 -0
- package/dist/profiles/processor/processorSampleParams.d.ts +6 -0
- package/dist/profiles/processor/processorSampleParams.d.ts.map +1 -0
- package/dist/profiles/processor/processorSampleParams.js +38 -0
- package/dist/profiles/processor/processorSampleParams.js.map +1 -0
- package/dist/profiles/profileApi.cjs +16 -0
- package/dist/profiles/profileApi.cjs.map +1 -1
- package/dist/profiles/profileApi.d.ts +36 -3
- package/dist/profiles/profileApi.d.ts.map +1 -1
- package/dist/profiles/profileApi.js +16 -0
- package/dist/profiles/profileApi.js.map +1 -1
- package/dist/profiles/query/index.d.ts +9 -0
- package/dist/profiles/query/index.d.ts.map +1 -0
- package/dist/profiles/query/jsonPathSample.cjs +75 -0
- package/dist/profiles/query/jsonPathSample.cjs.map +1 -0
- package/dist/profiles/query/jsonPathSample.d.ts +27 -0
- package/dist/profiles/query/jsonPathSample.d.ts.map +1 -0
- package/dist/profiles/query/jsonPathSample.js +75 -0
- package/dist/profiles/query/jsonPathSample.js.map +1 -0
- package/dist/profiles/query/jsonPathSampleRow.cjs.map +1 -0
- package/dist/profiles/query/jsonPathSampleRow.d.ts.map +1 -0
- package/dist/profiles/query/jsonPathSampleRow.js.map +1 -0
- package/dist/profiles/query/kubernetesWorkloadTarget.cjs +43 -0
- package/dist/profiles/query/kubernetesWorkloadTarget.cjs.map +1 -0
- package/dist/profiles/query/kubernetesWorkloadTarget.d.ts +3 -0
- package/dist/profiles/query/kubernetesWorkloadTarget.d.ts.map +1 -0
- package/dist/profiles/query/kubernetesWorkloadTarget.js +43 -0
- package/dist/profiles/query/kubernetesWorkloadTarget.js.map +1 -0
- package/dist/profiles/query/kubernetesWorkloadTargetPicker.cjs +53 -0
- package/dist/profiles/query/kubernetesWorkloadTargetPicker.cjs.map +1 -0
- package/dist/profiles/query/kubernetesWorkloadTargetPicker.d.ts +12 -0
- package/dist/profiles/query/kubernetesWorkloadTargetPicker.d.ts.map +1 -0
- package/dist/profiles/query/kubernetesWorkloadTargetPicker.js +53 -0
- package/dist/profiles/query/kubernetesWorkloadTargetPicker.js.map +1 -0
- package/dist/profiles/query/profileSamplePayload.cjs.map +1 -0
- package/dist/profiles/query/profileSamplePayload.d.ts +13 -0
- package/dist/profiles/query/profileSamplePayload.d.ts.map +1 -0
- package/dist/profiles/query/profileSamplePayload.js.map +1 -0
- package/dist/profiles/query/prometheusResults.cjs +60 -0
- package/dist/profiles/query/prometheusResults.cjs.map +1 -0
- package/dist/profiles/query/prometheusResults.d.ts +7 -0
- package/dist/profiles/query/prometheusResults.d.ts.map +1 -0
- package/dist/profiles/query/prometheusResults.js +60 -0
- package/dist/profiles/query/prometheusResults.js.map +1 -0
- package/dist/profiles/query/queryRowLimits.cjs +82 -0
- package/dist/profiles/query/queryRowLimits.cjs.map +1 -0
- package/dist/profiles/query/queryRowLimits.d.ts +9 -0
- package/dist/profiles/query/queryRowLimits.d.ts.map +1 -0
- package/dist/profiles/query/queryRowLimits.js +82 -0
- package/dist/profiles/query/queryRowLimits.js.map +1 -0
- package/dist/profiles/query/queryRowLimitsModel.cjs.map +1 -0
- package/dist/profiles/query/queryRowLimitsModel.d.ts +9 -0
- package/dist/profiles/query/queryRowLimitsModel.d.ts.map +1 -0
- package/dist/profiles/query/queryRowLimitsModel.js.map +1 -0
- package/dist/profiles/query/queryTargetPicker.cjs +42 -0
- package/dist/profiles/query/queryTargetPicker.cjs.map +1 -0
- package/dist/profiles/query/queryTargetPicker.d.ts +8 -0
- package/dist/profiles/query/queryTargetPicker.d.ts.map +1 -0
- package/dist/profiles/query/queryTargetPicker.js +42 -0
- package/dist/profiles/query/queryTargetPicker.js.map +1 -0
- package/dist/profiles/wizard/index.d.ts +6 -0
- package/dist/profiles/wizard/index.d.ts.map +1 -0
- package/dist/profiles/wizard/profileWizard.cjs +257 -0
- package/dist/profiles/wizard/profileWizard.cjs.map +1 -0
- package/dist/profiles/wizard/profileWizard.d.ts +12 -0
- package/dist/profiles/wizard/profileWizard.d.ts.map +1 -0
- package/dist/profiles/wizard/profileWizard.js +257 -0
- package/dist/profiles/wizard/profileWizard.js.map +1 -0
- package/dist/profiles/wizard/profileWizardHelp.cjs.map +1 -0
- package/dist/profiles/wizard/profileWizardHelp.d.ts.map +1 -0
- package/dist/profiles/wizard/profileWizardHelp.js.map +1 -0
- package/dist/profiles/wizard/profileWizardModel.cjs +204 -0
- package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -0
- package/dist/profiles/wizard/profileWizardModel.d.ts +266 -0
- package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -0
- package/dist/profiles/wizard/profileWizardModel.js +204 -0
- package/dist/profiles/wizard/profileWizardModel.js.map +1 -0
- package/dist/profiles/wizard/profileWizardQueryStep.cjs +215 -0
- package/dist/profiles/wizard/profileWizardQueryStep.cjs.map +1 -0
- package/dist/profiles/wizard/profileWizardQueryStep.d.ts.map +1 -0
- package/dist/profiles/wizard/profileWizardQueryStep.js +215 -0
- package/dist/profiles/wizard/profileWizardQueryStep.js.map +1 -0
- package/dist/profiles/wizard/profileWizardSteps.cjs +214 -0
- package/dist/profiles/wizard/profileWizardSteps.cjs.map +1 -0
- package/dist/profiles/wizard/profileWizardSteps.d.ts.map +1 -0
- package/dist/profiles/wizard/profileWizardSteps.js +214 -0
- package/dist/profiles/wizard/profileWizardSteps.js.map +1 -0
- package/dist/profiles.cjs +237 -178
- package/dist/profiles.cjs.map +1 -1
- package/dist/profiles.d.ts +8 -55
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +117 -58
- package/dist/profiles.js.map +1 -1
- package/dist/rpc/ChatLayer.cjs +27 -0
- package/dist/rpc/ChatLayer.cjs.map +1 -0
- package/dist/rpc/ChatLayer.d.ts +11 -0
- package/dist/rpc/ChatLayer.d.ts.map +1 -0
- package/dist/rpc/ChatLayer.js +27 -0
- package/dist/rpc/ChatLayer.js.map +1 -0
- package/dist/rpc/CommandForm.cjs +9 -19
- package/dist/rpc/CommandForm.cjs.map +1 -1
- package/dist/rpc/CommandForm.d.ts +8 -2
- package/dist/rpc/CommandForm.d.ts.map +1 -1
- package/dist/rpc/CommandForm.js +10 -20
- package/dist/rpc/CommandForm.js.map +1 -1
- package/dist/rpc/CommandOutput.cjs +29 -4
- package/dist/rpc/CommandOutput.cjs.map +1 -1
- package/dist/rpc/CommandOutput.d.ts +6 -2
- package/dist/rpc/CommandOutput.d.ts.map +1 -1
- package/dist/rpc/CommandOutput.js +29 -4
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EndpointList.cjs +1 -1
- package/dist/rpc/EndpointList.cjs.map +1 -1
- package/dist/rpc/EndpointList.js +1 -1
- package/dist/rpc/EndpointList.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +4 -1
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts +3 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +4 -1
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +66 -80
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.d.ts.map +1 -1
- package/dist/rpc/FilterForm.js +68 -82
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/InlineError.cjs +19 -2
- package/dist/rpc/InlineError.cjs.map +1 -1
- package/dist/rpc/InlineError.d.ts +5 -1
- package/dist/rpc/InlineError.d.ts.map +1 -1
- package/dist/rpc/InlineError.js +19 -2
- package/dist/rpc/InlineError.js.map +1 -1
- package/dist/rpc/OperationActionDialog.cjs +3 -3
- package/dist/rpc/OperationActionDialog.cjs.map +1 -1
- package/dist/rpc/OperationActionDialog.js +3 -3
- package/dist/rpc/OperationActionDialog.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +96 -100
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +98 -102
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs +26 -14
- package/dist/rpc/OperationCommandPage.cjs.map +1 -1
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js +28 -16
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.cjs +25 -13
- package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.js +26 -14
- package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
- package/dist/rpc/OperationEntityPage.cjs +2 -8
- package/dist/rpc/OperationEntityPage.cjs.map +1 -1
- package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
- package/dist/rpc/OperationEntityPage.js +2 -8
- package/dist/rpc/OperationEntityPage.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +13 -2
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +34 -2
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +13 -2
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/apiClient.cjs +28 -4
- package/dist/rpc/apiClient.cjs.map +1 -1
- package/dist/rpc/apiClient.d.ts +19 -9
- package/dist/rpc/apiClient.d.ts.map +1 -1
- package/dist/rpc/apiClient.js +29 -5
- package/dist/rpc/apiClient.js.map +1 -1
- package/dist/rpc/cursorStale.cjs +35 -0
- package/dist/rpc/cursorStale.cjs.map +1 -0
- package/dist/rpc/cursorStale.d.ts +23 -0
- package/dist/rpc/cursorStale.d.ts.map +1 -0
- package/dist/rpc/cursorStale.js +35 -0
- package/dist/rpc/cursorStale.js.map +1 -0
- package/dist/rpc/executionPages.cjs +94 -0
- package/dist/rpc/executionPages.cjs.map +1 -0
- package/dist/rpc/executionPages.d.ts +18 -0
- package/dist/rpc/executionPages.d.ts.map +1 -0
- package/dist/rpc/executionPages.js +94 -0
- package/dist/rpc/executionPages.js.map +1 -0
- package/dist/rpc/filterShapes.cjs +17 -0
- package/dist/rpc/filterShapes.cjs.map +1 -0
- package/dist/rpc/filterShapes.d.ts +22 -0
- package/dist/rpc/filterShapes.d.ts.map +1 -0
- package/dist/rpc/filterShapes.js +17 -0
- package/dist/rpc/filterShapes.js.map +1 -0
- package/dist/rpc/formMetadata.cjs +228 -57
- package/dist/rpc/formMetadata.cjs.map +1 -1
- package/dist/rpc/formMetadata.d.ts +19 -2
- package/dist/rpc/formMetadata.d.ts.map +1 -1
- package/dist/rpc/formMetadata.js +230 -59
- package/dist/rpc/formMetadata.js.map +1 -1
- package/dist/rpc/operationErrorDiagnostics.cjs +100 -0
- package/dist/rpc/operationErrorDiagnostics.cjs.map +1 -0
- package/dist/rpc/operationErrorDiagnostics.d.ts +4 -0
- package/dist/rpc/operationErrorDiagnostics.d.ts.map +1 -0
- package/dist/rpc/operationErrorDiagnostics.js +100 -0
- package/dist/rpc/operationErrorDiagnostics.js.map +1 -0
- package/dist/rpc/operationFilterSearch.cjs +1 -1
- package/dist/rpc/operationFilterSearch.cjs.map +1 -1
- package/dist/rpc/operationFilterSearch.js +2 -2
- package/dist/rpc/operationFilterSearch.js.map +1 -1
- package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +55 -3
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/rpc/useOperationPages.cjs +111 -0
- package/dist/rpc/useOperationPages.cjs.map +1 -0
- package/dist/rpc/useOperationPages.d.ts +46 -0
- package/dist/rpc/useOperationPages.d.ts.map +1 -0
- package/dist/rpc/useOperationPages.js +111 -0
- package/dist/rpc/useOperationPages.js.map +1 -0
- package/dist/rpc/useOperations.cjs +7 -4
- package/dist/rpc/useOperations.cjs.map +1 -1
- package/dist/rpc/useOperations.d.ts +4 -4
- package/dist/rpc/useOperations.d.ts.map +1 -1
- package/dist/rpc/useOperations.js +7 -4
- package/dist/rpc/useOperations.js.map +1 -1
- package/dist/rpc.cjs +2 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +3 -2
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -0
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +2 -2
- package/dist/tailwind-preset.cjs +6 -3
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/tailwind-preset.d.ts.map +1 -1
- package/dist/tailwind-preset.js +6 -3
- package/dist/tailwind-preset.js.map +1 -1
- package/dist/utils.cjs +6 -0
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -0
- package/dist/utils.js.map +1 -1
- package/package.json +6 -5
- package/dist/profiles/catalogTree.cjs +0 -133
- package/dist/profiles/catalogTree.cjs.map +0 -1
- package/dist/profiles/catalogTree.d.ts.map +0 -1
- package/dist/profiles/catalogTree.js +0 -133
- package/dist/profiles/catalogTree.js.map +0 -1
- package/dist/profiles/connectionBrowserModel.cjs +0 -185
- package/dist/profiles/connectionBrowserModel.cjs.map +0 -1
- package/dist/profiles/connectionBrowserModel.d.ts +0 -169
- package/dist/profiles/connectionBrowserModel.d.ts.map +0 -1
- package/dist/profiles/connectionBrowserModel.js +0 -185
- package/dist/profiles/connectionBrowserModel.js.map +0 -1
- package/dist/profiles/connectionQueryWorkspace.cjs +0 -185
- package/dist/profiles/connectionQueryWorkspace.cjs.map +0 -1
- package/dist/profiles/connectionQueryWorkspace.d.ts +0 -63
- package/dist/profiles/connectionQueryWorkspace.d.ts.map +0 -1
- package/dist/profiles/connectionQueryWorkspace.js +0 -185
- package/dist/profiles/connectionQueryWorkspace.js.map +0 -1
- package/dist/profiles/connectionQueryWorkspaceModel.cjs +0 -28
- package/dist/profiles/connectionQueryWorkspaceModel.cjs.map +0 -1
- package/dist/profiles/connectionQueryWorkspaceModel.d.ts +0 -38
- package/dist/profiles/connectionQueryWorkspaceModel.d.ts.map +0 -1
- package/dist/profiles/connectionQueryWorkspaceModel.js +0 -28
- package/dist/profiles/connectionQueryWorkspaceModel.js.map +0 -1
- package/dist/profiles/esFieldValues.cjs +0 -64
- package/dist/profiles/esFieldValues.cjs.map +0 -1
- package/dist/profiles/esFieldValues.d.ts +0 -48
- package/dist/profiles/esFieldValues.d.ts.map +0 -1
- package/dist/profiles/esFieldValues.js +0 -64
- package/dist/profiles/esFieldValues.js.map +0 -1
- package/dist/profiles/esParamMappingModel.cjs +0 -301
- package/dist/profiles/esParamMappingModel.cjs.map +0 -1
- package/dist/profiles/esParamMappingModel.d.ts +0 -37
- package/dist/profiles/esParamMappingModel.d.ts.map +0 -1
- package/dist/profiles/esParamMappingModel.js +0 -301
- package/dist/profiles/esParamMappingModel.js.map +0 -1
- package/dist/profiles/esParamMappingPill.cjs.map +0 -1
- package/dist/profiles/esParamMappingPill.d.ts.map +0 -1
- package/dist/profiles/esParamMappingPill.js.map +0 -1
- package/dist/profiles/esParamOperandExtension.cjs +0 -75
- package/dist/profiles/esParamOperandExtension.cjs.map +0 -1
- package/dist/profiles/esParamOperandExtension.d.ts +0 -11
- package/dist/profiles/esParamOperandExtension.d.ts.map +0 -1
- package/dist/profiles/esParamOperandExtension.js +0 -75
- package/dist/profiles/esParamOperandExtension.js.map +0 -1
- package/dist/profiles/esQueryBuilder.cjs +0 -205
- package/dist/profiles/esQueryBuilder.cjs.map +0 -1
- package/dist/profiles/esQueryBuilder.d.ts +0 -35
- package/dist/profiles/esQueryBuilder.d.ts.map +0 -1
- package/dist/profiles/esQueryBuilder.js +0 -205
- package/dist/profiles/esQueryBuilder.js.map +0 -1
- package/dist/profiles/esQueryBuilderExtension.cjs.map +0 -1
- package/dist/profiles/esQueryBuilderExtension.d.ts +0 -5
- package/dist/profiles/esQueryBuilderExtension.d.ts.map +0 -1
- package/dist/profiles/esQueryBuilderExtension.js.map +0 -1
- package/dist/profiles/esQueryBuilderForm.cjs +0 -26
- package/dist/profiles/esQueryBuilderForm.cjs.map +0 -1
- package/dist/profiles/esQueryBuilderForm.d.ts +0 -18
- package/dist/profiles/esQueryBuilderForm.d.ts.map +0 -1
- package/dist/profiles/esQueryBuilderForm.js +0 -26
- package/dist/profiles/esQueryBuilderForm.js.map +0 -1
- package/dist/profiles/esQueryBuilderModel.cjs.map +0 -1
- package/dist/profiles/esQueryBuilderModel.d.ts +0 -108
- package/dist/profiles/esQueryBuilderModel.d.ts.map +0 -1
- package/dist/profiles/esQueryBuilderModel.js.map +0 -1
- package/dist/profiles/esQueryClauseGroup.cjs +0 -144
- package/dist/profiles/esQueryClauseGroup.cjs.map +0 -1
- package/dist/profiles/esQueryClauseGroup.d.ts.map +0 -1
- package/dist/profiles/esQueryClauseGroup.js +0 -144
- package/dist/profiles/esQueryClauseGroup.js.map +0 -1
- package/dist/profiles/esQueryCompile.cjs +0 -47
- package/dist/profiles/esQueryCompile.cjs.map +0 -1
- package/dist/profiles/esQueryCompile.d.ts +0 -39
- package/dist/profiles/esQueryCompile.d.ts.map +0 -1
- package/dist/profiles/esQueryCompile.js +0 -47
- package/dist/profiles/esQueryCompile.js.map +0 -1
- package/dist/profiles/esQueryConditionRow.cjs +0 -168
- package/dist/profiles/esQueryConditionRow.cjs.map +0 -1
- package/dist/profiles/esQueryConditionRow.d.ts +0 -37
- package/dist/profiles/esQueryConditionRow.d.ts.map +0 -1
- package/dist/profiles/esQueryConditionRow.js +0 -168
- package/dist/profiles/esQueryConditionRow.js.map +0 -1
- package/dist/profiles/esQueryGroupModel.cjs.map +0 -1
- package/dist/profiles/esQueryGroupModel.d.ts.map +0 -1
- package/dist/profiles/esQueryGroupModel.js.map +0 -1
- package/dist/profiles/esQueryOccur.cjs.map +0 -1
- package/dist/profiles/esQueryOccur.d.ts.map +0 -1
- package/dist/profiles/esQueryOccur.js.map +0 -1
- package/dist/profiles/esQueryOperandEditors.cjs +0 -279
- package/dist/profiles/esQueryOperandEditors.cjs.map +0 -1
- package/dist/profiles/esQueryOperandEditors.d.ts +0 -24
- package/dist/profiles/esQueryOperandEditors.d.ts.map +0 -1
- package/dist/profiles/esQueryOperandEditors.js +0 -279
- package/dist/profiles/esQueryOperandEditors.js.map +0 -1
- package/dist/profiles/esQueryOperandModel.cjs.map +0 -1
- package/dist/profiles/esQueryOperandModel.d.ts +0 -17
- package/dist/profiles/esQueryOperandModel.d.ts.map +0 -1
- package/dist/profiles/esQueryOperandModel.js.map +0 -1
- package/dist/profiles/esQueryOperators.cjs +0 -165
- package/dist/profiles/esQueryOperators.cjs.map +0 -1
- package/dist/profiles/esQueryOperators.d.ts +0 -83
- package/dist/profiles/esQueryOperators.d.ts.map +0 -1
- package/dist/profiles/esQueryOperators.js +0 -165
- package/dist/profiles/esQueryOperators.js.map +0 -1
- package/dist/profiles/esQueryOutputEditor.cjs +0 -138
- package/dist/profiles/esQueryOutputEditor.cjs.map +0 -1
- package/dist/profiles/esQueryOutputEditor.d.ts +0 -7
- package/dist/profiles/esQueryOutputEditor.d.ts.map +0 -1
- package/dist/profiles/esQueryOutputEditor.js +0 -138
- package/dist/profiles/esQueryOutputEditor.js.map +0 -1
- package/dist/profiles/esQueryOutputModel.cjs.map +0 -1
- package/dist/profiles/esQueryOutputModel.d.ts.map +0 -1
- package/dist/profiles/esQueryOutputModel.js.map +0 -1
- package/dist/profiles/esQueryPreview.cjs.map +0 -1
- package/dist/profiles/esQueryPreview.d.ts.map +0 -1
- package/dist/profiles/esQueryPreview.js.map +0 -1
- package/dist/profiles/esQuerySortEditor.cjs +0 -143
- package/dist/profiles/esQuerySortEditor.cjs.map +0 -1
- package/dist/profiles/esQuerySortEditor.d.ts.map +0 -1
- package/dist/profiles/esQuerySortEditor.js +0 -143
- package/dist/profiles/esQuerySortEditor.js.map +0 -1
- package/dist/profiles/esQuerySortModel.cjs.map +0 -1
- package/dist/profiles/esQuerySortModel.d.ts.map +0 -1
- package/dist/profiles/esQuerySortModel.js.map +0 -1
- package/dist/profiles/esValueCombobox.cjs +0 -86
- package/dist/profiles/esValueCombobox.cjs.map +0 -1
- package/dist/profiles/esValueCombobox.d.ts.map +0 -1
- package/dist/profiles/esValueCombobox.js +0 -86
- package/dist/profiles/esValueCombobox.js.map +0 -1
- package/dist/profiles/jsonPathSample.cjs +0 -75
- package/dist/profiles/jsonPathSample.cjs.map +0 -1
- package/dist/profiles/jsonPathSample.d.ts +0 -27
- package/dist/profiles/jsonPathSample.d.ts.map +0 -1
- package/dist/profiles/jsonPathSample.js +0 -75
- package/dist/profiles/jsonPathSample.js.map +0 -1
- package/dist/profiles/jsonPathSampleRow.cjs.map +0 -1
- package/dist/profiles/jsonPathSampleRow.d.ts.map +0 -1
- package/dist/profiles/jsonPathSampleRow.js.map +0 -1
- package/dist/profiles/profileBuilder.cjs +0 -65
- package/dist/profiles/profileBuilder.cjs.map +0 -1
- package/dist/profiles/profileBuilder.d.ts.map +0 -1
- package/dist/profiles/profileBuilder.js +0 -65
- package/dist/profiles/profileBuilder.js.map +0 -1
- package/dist/profiles/profileBuilderExtension.cjs.map +0 -1
- package/dist/profiles/profileBuilderExtension.d.ts +0 -5
- package/dist/profiles/profileBuilderExtension.d.ts.map +0 -1
- package/dist/profiles/profileBuilderExtension.js.map +0 -1
- package/dist/profiles/profileBuilderWorkspace.cjs +0 -368
- package/dist/profiles/profileBuilderWorkspace.cjs.map +0 -1
- package/dist/profiles/profileBuilderWorkspace.d.ts +0 -21
- package/dist/profiles/profileBuilderWorkspace.d.ts.map +0 -1
- package/dist/profiles/profileBuilderWorkspace.js +0 -368
- package/dist/profiles/profileBuilderWorkspace.js.map +0 -1
- package/dist/profiles/profileColumnModel.cjs.map +0 -1
- package/dist/profiles/profileColumnModel.d.ts +0 -8
- package/dist/profiles/profileColumnModel.d.ts.map +0 -1
- package/dist/profiles/profileColumnModel.js.map +0 -1
- package/dist/profiles/profileColumnPicker.cjs +0 -68
- package/dist/profiles/profileColumnPicker.cjs.map +0 -1
- package/dist/profiles/profileColumnPicker.d.ts +0 -11
- package/dist/profiles/profileColumnPicker.d.ts.map +0 -1
- package/dist/profiles/profileColumnPicker.js +0 -68
- package/dist/profiles/profileColumnPicker.js.map +0 -1
- package/dist/profiles/profileEditor.cjs +0 -386
- package/dist/profiles/profileEditor.cjs.map +0 -1
- package/dist/profiles/profileEditor.d.ts +0 -19
- package/dist/profiles/profileEditor.d.ts.map +0 -1
- package/dist/profiles/profileEditor.js +0 -386
- package/dist/profiles/profileEditor.js.map +0 -1
- package/dist/profiles/profileEditorModel.cjs +0 -181
- package/dist/profiles/profileEditorModel.cjs.map +0 -1
- package/dist/profiles/profileEditorModel.d.ts +0 -74
- package/dist/profiles/profileEditorModel.d.ts.map +0 -1
- package/dist/profiles/profileEditorModel.js +0 -181
- package/dist/profiles/profileEditorModel.js.map +0 -1
- package/dist/profiles/profileEditorPreview.cjs.map +0 -1
- package/dist/profiles/profileEditorPreview.d.ts +0 -12
- package/dist/profiles/profileEditorPreview.d.ts.map +0 -1
- package/dist/profiles/profileEditorPreview.js.map +0 -1
- package/dist/profiles/profileEditorRail.cjs.map +0 -1
- package/dist/profiles/profileEditorRail.d.ts.map +0 -1
- package/dist/profiles/profileEditorRail.js.map +0 -1
- package/dist/profiles/profileEditorRaw.cjs +0 -118
- package/dist/profiles/profileEditorRaw.cjs.map +0 -1
- package/dist/profiles/profileEditorRaw.d.ts +0 -7
- package/dist/profiles/profileEditorRaw.d.ts.map +0 -1
- package/dist/profiles/profileEditorRaw.js +0 -118
- package/dist/profiles/profileEditorRaw.js.map +0 -1
- package/dist/profiles/profileEditorRoutes.cjs.map +0 -1
- package/dist/profiles/profileEditorRoutes.d.ts.map +0 -1
- package/dist/profiles/profileEditorRoutes.js.map +0 -1
- package/dist/profiles/profileEditorSections.cjs +0 -213
- package/dist/profiles/profileEditorSections.cjs.map +0 -1
- package/dist/profiles/profileEditorSections.d.ts +0 -23
- package/dist/profiles/profileEditorSections.d.ts.map +0 -1
- package/dist/profiles/profileEditorSections.js +0 -213
- package/dist/profiles/profileEditorSections.js.map +0 -1
- package/dist/profiles/profileFieldEditor.cjs +0 -200
- package/dist/profiles/profileFieldEditor.cjs.map +0 -1
- package/dist/profiles/profileFieldEditor.d.ts +0 -34
- package/dist/profiles/profileFieldEditor.d.ts.map +0 -1
- package/dist/profiles/profileFieldEditor.js +0 -200
- package/dist/profiles/profileFieldEditor.js.map +0 -1
- package/dist/profiles/profileFieldGrid.cjs +0 -250
- package/dist/profiles/profileFieldGrid.cjs.map +0 -1
- package/dist/profiles/profileFieldGrid.d.ts +0 -20
- package/dist/profiles/profileFieldGrid.d.ts.map +0 -1
- package/dist/profiles/profileFieldGrid.js +0 -250
- package/dist/profiles/profileFieldGrid.js.map +0 -1
- package/dist/profiles/profileFieldManager.cjs +0 -103
- package/dist/profiles/profileFieldManager.cjs.map +0 -1
- package/dist/profiles/profileFieldManager.d.ts.map +0 -1
- package/dist/profiles/profileFieldManager.js +0 -103
- package/dist/profiles/profileFieldManager.js.map +0 -1
- package/dist/profiles/profileFieldState.cjs +0 -136
- package/dist/profiles/profileFieldState.cjs.map +0 -1
- package/dist/profiles/profileFieldState.d.ts +0 -41
- package/dist/profiles/profileFieldState.d.ts.map +0 -1
- package/dist/profiles/profileFieldState.js +0 -136
- package/dist/profiles/profileFieldState.js.map +0 -1
- package/dist/profiles/profileFieldTypes.cjs.map +0 -1
- package/dist/profiles/profileFieldTypes.d.ts +0 -8
- package/dist/profiles/profileFieldTypes.d.ts.map +0 -1
- package/dist/profiles/profileFieldTypes.js.map +0 -1
- package/dist/profiles/profileParamModel.cjs.map +0 -1
- package/dist/profiles/profileParamModel.d.ts +0 -3
- package/dist/profiles/profileParamModel.d.ts.map +0 -1
- package/dist/profiles/profileParamModel.js.map +0 -1
- package/dist/profiles/profileSamplePayload.cjs.map +0 -1
- package/dist/profiles/profileSamplePayload.d.ts +0 -13
- package/dist/profiles/profileSamplePayload.d.ts.map +0 -1
- package/dist/profiles/profileSamplePayload.js.map +0 -1
- package/dist/profiles/profileWizard.cjs +0 -257
- package/dist/profiles/profileWizard.cjs.map +0 -1
- package/dist/profiles/profileWizard.d.ts +0 -12
- package/dist/profiles/profileWizard.d.ts.map +0 -1
- package/dist/profiles/profileWizard.js +0 -257
- package/dist/profiles/profileWizard.js.map +0 -1
- package/dist/profiles/profileWizardHelp.cjs.map +0 -1
- package/dist/profiles/profileWizardHelp.d.ts.map +0 -1
- package/dist/profiles/profileWizardHelp.js.map +0 -1
- package/dist/profiles/profileWizardModel.cjs +0 -198
- package/dist/profiles/profileWizardModel.cjs.map +0 -1
- package/dist/profiles/profileWizardModel.d.ts +0 -255
- package/dist/profiles/profileWizardModel.d.ts.map +0 -1
- package/dist/profiles/profileWizardModel.js +0 -198
- package/dist/profiles/profileWizardModel.js.map +0 -1
- package/dist/profiles/profileWizardQueryStep.cjs +0 -215
- package/dist/profiles/profileWizardQueryStep.cjs.map +0 -1
- package/dist/profiles/profileWizardQueryStep.d.ts.map +0 -1
- package/dist/profiles/profileWizardQueryStep.js +0 -215
- package/dist/profiles/profileWizardQueryStep.js.map +0 -1
- package/dist/profiles/profileWizardSteps.cjs +0 -214
- package/dist/profiles/profileWizardSteps.cjs.map +0 -1
- package/dist/profiles/profileWizardSteps.d.ts.map +0 -1
- package/dist/profiles/profileWizardSteps.js +0 -214
- package/dist/profiles/profileWizardSteps.js.map +0 -1
- package/dist/profiles/profileYaml.cjs +0 -19
- package/dist/profiles/profileYaml.cjs.map +0 -1
- package/dist/profiles/profileYaml.d.ts +0 -4
- package/dist/profiles/profileYaml.d.ts.map +0 -1
- package/dist/profiles/profileYaml.js +0 -19
- package/dist/profiles/profileYaml.js.map +0 -1
- package/dist/profiles/prometheusResults.cjs +0 -60
- package/dist/profiles/prometheusResults.cjs.map +0 -1
- package/dist/profiles/prometheusResults.d.ts +0 -7
- package/dist/profiles/prometheusResults.d.ts.map +0 -1
- package/dist/profiles/prometheusResults.js +0 -60
- package/dist/profiles/prometheusResults.js.map +0 -1
- package/dist/profiles/queryRowLimits.cjs +0 -82
- package/dist/profiles/queryRowLimits.cjs.map +0 -1
- package/dist/profiles/queryRowLimits.d.ts +0 -9
- package/dist/profiles/queryRowLimits.d.ts.map +0 -1
- package/dist/profiles/queryRowLimits.js +0 -82
- package/dist/profiles/queryRowLimits.js.map +0 -1
- package/dist/profiles/queryRowLimitsModel.cjs.map +0 -1
- package/dist/profiles/queryRowLimitsModel.d.ts +0 -9
- package/dist/profiles/queryRowLimitsModel.d.ts.map +0 -1
- package/dist/profiles/queryRowLimitsModel.js.map +0 -1
- package/dist/profiles/queryTargetPicker.cjs +0 -42
- package/dist/profiles/queryTargetPicker.cjs.map +0 -1
- package/dist/profiles/queryTargetPicker.d.ts +0 -8
- package/dist/profiles/queryTargetPicker.d.ts.map +0 -1
- package/dist/profiles/queryTargetPicker.js +0 -42
- package/dist/profiles/queryTargetPicker.js.map +0 -1
- package/dist/profiles/testSchema.d.ts +0 -3
- package/dist/profiles/testSchema.d.ts.map +0 -1
- /package/dist/profiles/{catalogTree.d.ts → connections/catalogTree.d.ts} +0 -0
- /package/dist/profiles/{profileBuilder.d.ts → editor/profileBuilder.d.ts} +0 -0
- /package/dist/profiles/{profileBuilderExtension.cjs → editor/profileBuilderExtension.cjs} +0 -0
- /package/dist/profiles/{profileBuilderExtension.js → editor/profileBuilderExtension.js} +0 -0
- /package/dist/profiles/{profileEditorPreview.cjs → editor/profileEditorPreview.cjs} +0 -0
- /package/dist/profiles/{profileEditorPreview.js → editor/profileEditorPreview.js} +0 -0
- /package/dist/profiles/{profileEditorRail.cjs → editor/profileEditorRail.cjs} +0 -0
- /package/dist/profiles/{profileEditorRail.d.ts → editor/profileEditorRail.d.ts} +0 -0
- /package/dist/profiles/{profileEditorRail.js → editor/profileEditorRail.js} +0 -0
- /package/dist/profiles/{profileEditorRoutes.cjs → editor/profileEditorRoutes.cjs} +0 -0
- /package/dist/profiles/{profileEditorRoutes.d.ts → editor/profileEditorRoutes.d.ts} +0 -0
- /package/dist/profiles/{profileEditorRoutes.js → editor/profileEditorRoutes.js} +0 -0
- /package/dist/profiles/{esParamMappingPill.cjs → elasticsearch/esParamMappingPill.cjs} +0 -0
- /package/dist/profiles/{esParamMappingPill.d.ts → elasticsearch/esParamMappingPill.d.ts} +0 -0
- /package/dist/profiles/{esParamMappingPill.js → elasticsearch/esParamMappingPill.js} +0 -0
- /package/dist/profiles/{esQueryBuilderExtension.cjs → elasticsearch/esQueryBuilderExtension.cjs} +0 -0
- /package/dist/profiles/{esQueryBuilderExtension.js → elasticsearch/esQueryBuilderExtension.js} +0 -0
- /package/dist/profiles/{esQueryBuilderModel.cjs → elasticsearch/esQueryBuilderModel.cjs} +0 -0
- /package/dist/profiles/{esQueryBuilderModel.js → elasticsearch/esQueryBuilderModel.js} +0 -0
- /package/dist/profiles/{esQueryClauseGroup.d.ts → elasticsearch/esQueryClauseGroup.d.ts} +0 -0
- /package/dist/profiles/{esQueryGroupModel.cjs → elasticsearch/esQueryGroupModel.cjs} +0 -0
- /package/dist/profiles/{esQueryGroupModel.d.ts → elasticsearch/esQueryGroupModel.d.ts} +0 -0
- /package/dist/profiles/{esQueryGroupModel.js → elasticsearch/esQueryGroupModel.js} +0 -0
- /package/dist/profiles/{esQueryOccur.cjs → elasticsearch/esQueryOccur.cjs} +0 -0
- /package/dist/profiles/{esQueryOccur.d.ts → elasticsearch/esQueryOccur.d.ts} +0 -0
- /package/dist/profiles/{esQueryOccur.js → elasticsearch/esQueryOccur.js} +0 -0
- /package/dist/profiles/{esQueryOperandModel.cjs → elasticsearch/esQueryOperandModel.cjs} +0 -0
- /package/dist/profiles/{esQueryOperandModel.js → elasticsearch/esQueryOperandModel.js} +0 -0
- /package/dist/profiles/{esQueryOutputModel.cjs → elasticsearch/esQueryOutputModel.cjs} +0 -0
- /package/dist/profiles/{esQueryOutputModel.d.ts → elasticsearch/esQueryOutputModel.d.ts} +0 -0
- /package/dist/profiles/{esQueryOutputModel.js → elasticsearch/esQueryOutputModel.js} +0 -0
- /package/dist/profiles/{esQueryPreview.cjs → elasticsearch/esQueryPreview.cjs} +0 -0
- /package/dist/profiles/{esQueryPreview.d.ts → elasticsearch/esQueryPreview.d.ts} +0 -0
- /package/dist/profiles/{esQueryPreview.js → elasticsearch/esQueryPreview.js} +0 -0
- /package/dist/profiles/{esQuerySortEditor.d.ts → elasticsearch/esQuerySortEditor.d.ts} +0 -0
- /package/dist/profiles/{esQuerySortModel.cjs → elasticsearch/esQuerySortModel.cjs} +0 -0
- /package/dist/profiles/{esQuerySortModel.d.ts → elasticsearch/esQuerySortModel.d.ts} +0 -0
- /package/dist/profiles/{esQuerySortModel.js → elasticsearch/esQuerySortModel.js} +0 -0
- /package/dist/profiles/{esValueCombobox.d.ts → elasticsearch/esValueCombobox.d.ts} +0 -0
- /package/dist/profiles/{profileColumnModel.cjs → fields/profileColumnModel.cjs} +0 -0
- /package/dist/profiles/{profileColumnModel.js → fields/profileColumnModel.js} +0 -0
- /package/dist/profiles/{profileFieldManager.d.ts → fields/profileFieldManager.d.ts} +0 -0
- /package/dist/profiles/{profileFieldTypes.cjs → fields/profileFieldTypes.cjs} +0 -0
- /package/dist/profiles/{profileFieldTypes.js → fields/profileFieldTypes.js} +0 -0
- /package/dist/profiles/{profileParamModel.cjs → fields/profileParamModel.cjs} +0 -0
- /package/dist/profiles/{profileParamModel.js → fields/profileParamModel.js} +0 -0
- /package/dist/profiles/{jsonPathSampleRow.cjs → query/jsonPathSampleRow.cjs} +0 -0
- /package/dist/profiles/{jsonPathSampleRow.d.ts → query/jsonPathSampleRow.d.ts} +0 -0
- /package/dist/profiles/{jsonPathSampleRow.js → query/jsonPathSampleRow.js} +0 -0
- /package/dist/profiles/{profileSamplePayload.cjs → query/profileSamplePayload.cjs} +0 -0
- /package/dist/profiles/{profileSamplePayload.js → query/profileSamplePayload.js} +0 -0
- /package/dist/profiles/{queryRowLimitsModel.cjs → query/queryRowLimitsModel.cjs} +0 -0
- /package/dist/profiles/{queryRowLimitsModel.js → query/queryRowLimitsModel.js} +0 -0
- /package/dist/profiles/{profileWizardHelp.cjs → wizard/profileWizardHelp.cjs} +0 -0
- /package/dist/profiles/{profileWizardHelp.d.ts → wizard/profileWizardHelp.d.ts} +0 -0
- /package/dist/profiles/{profileWizardHelp.js → wizard/profileWizardHelp.js} +0 -0
- /package/dist/profiles/{profileWizardQueryStep.d.ts → wizard/profileWizardQueryStep.d.ts} +0 -0
- /package/dist/profiles/{profileWizardSteps.d.ts → wizard/profileWizardSteps.d.ts} +0 -0
package/dist/data/Clicky.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clicky.js","sources":["../../src/data/Clicky.tsx"],"sourcesContent":["import {\n QueryClient,\n QueryClientProvider,\n useQuery,\n} from \"@tanstack/react-query\";\nimport {\n createContext,\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentProps,\n type CSSProperties,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { FilterForm } from \"../rpc/FilterForm\";\nimport { parseJsonBody } from \"../rpc/classify\";\nimport {\n packParameterValues,\n pruneParameterValues,\n type ParameterValues,\n} from \"../rpc/formMetadata\";\nimport {\n type ExecutionResponse,\n isPositionalParam,\n type OpenAPIParameter,\n type ResolvedOperation,\n} from \"../rpc/types\";\nimport { type OperationsApiClient, useOperations } from \"../rpc/useOperations\";\nimport { cn } from \"../lib/utils\";\nimport {\n DataTable,\n type DataTableColumn,\n type DataTableMenuAction,\n type DataTablePagination,\n type DataTableRowSelection,\n} from \"./DataTable\";\nimport type {\n FilterBarFilter,\n FilterBarRangeProps,\n FilterBarSearchProps,\n} from \"../components/FilterBar\";\nimport type {\n CellFilterChange,\n CellFilterMode,\n} from \"./cells/CellFilterActions\";\nimport { Tree } from \"./Tree\";\nimport { ObjectGraph, type ObjectGraphNode } from \"./ObjectGraph\";\nimport { ExecutionTree, type ExecutionNode } from \"./ExecutionTree\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport {\n UiCheck,\n UiChevronDown,\n UiChevronUp,\n UiCloudDownload,\n UiComment,\n UiEllipsis,\n UiEye,\n UiFileCode,\n UiFileSpreadsheet,\n UiFileText,\n UiJson,\n UiMarkdown,\n UiTable,\n} from \"../icons\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { JsonView } from \"./JsonView\";\nimport { isBlockHtml, sanitizeHtml } from \"./html-utils\";\nimport { StackTrace } from \"./diagnostics/RenderedStackTrace\";\nimport type { ParsedStackFrame } from \"./diagnostics/stacktrace-parse\";\nimport { Badge, type BadgeShape } from \"./Badge\";\nimport { HoverCard } from \"../overlay/HoverCard\";\nimport { Modal } from \"../overlay/Modal\";\nimport { useEscapeLayer } from \"../overlay/modalStack\";\nimport { TagList } from \"./cells/TagList\";\nimport {\n normalizeTags,\n type NormalizedTag,\n type TagsValue,\n} from \"./cells/tag-utils\";\nimport { parseClickyData, type ParsedClicky } from \"./clicky-parse\";\n\nexport type ClickyStyle = {\n className?: string;\n color?: string;\n backgroundColor?: string;\n bold?: boolean;\n faint?: boolean;\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n textTransform?: string;\n maxWidth?: number;\n maxLines?: number;\n truncateMode?: \"suffix\" | \"prefix\" | \"headtail\";\n monospace?: boolean;\n};\n\nexport type ClickyField = {\n name: string;\n label?: string;\n value: ClickyNode;\n};\n\nexport type ClickyColumn = {\n name: string;\n label?: string;\n type?: string;\n format?: string;\n unit?: string;\n header?: ClickyNode;\n align?: \"left\" | \"right\" | \"center\";\n sortable?: boolean;\n filterable?: boolean;\n filterKey?: string;\n grow?: boolean;\n shrink?: boolean;\n kind?: \"timestamp\" | \"tags\" | \"status\";\n};\n\nexport type ClickyRow = {\n cells: Record<string, ClickyNode>;\n detail?: ClickyNode;\n};\n\nexport type ClickyTreeItem = {\n id: string;\n label: ClickyNode;\n children?: ClickyTreeItem[];\n};\n\nexport type ClickyNode = {\n kind:\n | \"text\"\n | \"link\"\n | \"link-command\"\n | \"icon\"\n | \"list\"\n | \"map\"\n | \"table\"\n | \"tree\"\n | \"code\"\n | \"heading\"\n | \"blockquote\"\n | \"admonition\"\n | \"footnote-ref\"\n | \"footnote\"\n | \"footnotes\"\n | \"collapsed\"\n | \"stacktrace\"\n | \"button\"\n | \"button-group\"\n | \"html\"\n | \"comment\"\n | \"badge\"\n | \"object-graph\"\n | \"execution-tree\";\n plain?: string;\n filterValue?: string | number | boolean;\n style?: ClickyStyle;\n text?: string;\n children?: ClickyNode[];\n tooltip?: ClickyNode;\n html?: string;\n inline?: boolean;\n ordered?: boolean;\n unstyled?: boolean;\n bullet?: ClickyNode;\n items?: ClickyNode[];\n fields?: ClickyField[];\n columns?: ClickyColumn[];\n rows?: ClickyRow[];\n autoFilter?: boolean;\n roots?: ClickyTreeItem[];\n label?: ClickyNode;\n content?: ClickyNode;\n level?: number;\n severity?: string;\n href?: string;\n target?: ClickyLinkTarget;\n command?: string;\n args?: string[];\n flags?: Record<string, string>;\n autoRun?: boolean;\n id?: string;\n payload?: string;\n variant?: string;\n iconify?: string;\n unicode?: string;\n language?: string;\n source?: string;\n highlightedHtml?: string;\n exceptionClass?: string;\n message?: string;\n causedBy?: string[];\n frames?: ParsedStackFrame[];\n // LabelBadge fields, set when kind === \"badge\".\n badgeLabel?: string;\n badgeValue?: string;\n badgeColor?: string;\n badgeText?: string;\n badgeShape?: string;\n badgeIcon?: string;\n // Set when kind === \"object-graph\" / \"execution-tree\": the roots handed to the\n // dedicated <ObjectGraph> / <ExecutionTree> inspectors.\n objects?: ObjectGraphNode[];\n executionRoots?: ExecutionNode[];\n};\n\nexport type ClickyDocument = {\n version: 1;\n node: ClickyNode;\n};\n\nexport type ClickyLinkTarget =\n | \"Dialog\"\n | \"Hover\"\n | \"Expand\"\n | \"_clicky\"\n | \"_self\"\n | \"_window\"\n | \"_tab\";\n\nexport type ClickyCommandRequest = {\n command: string;\n args?: string[];\n flags?: Record<string, string>;\n target?: ClickyLinkTarget;\n autoRun?: boolean;\n};\n\nexport type ClickyResolvedCommand = {\n request: ClickyCommandRequest;\n operation: ResolvedOperation | undefined;\n};\n\nexport type ClickyCommandRuntime = {\n client: OperationsApiClient;\n resolveCommand?: (\n request: ClickyCommandRequest,\n operations: ResolvedOperation[],\n ) => ResolvedOperation | undefined;\n hrefForCommand?: (resolved: ClickyResolvedCommand) => string | undefined;\n onNavigate?: (resolved: ClickyResolvedCommand) => void;\n};\n\nexport type ClickyTableRowClick = (row: ClickyRow) => void;\nexport type ClickyTableRowHref = (row: ClickyRow) => string | undefined;\nexport type ClickyTableRowPredicate = (row: ClickyRow) => boolean;\n\nconst CLICKY_PRIMARY_VIEW_FORMATS = [\"clicky\", \"json\"] as const;\nconst CLICKY_OVERFLOW_VIEW_FORMATS = [\n \"pdf\",\n \"html\",\n \"markdown\",\n \"yaml\",\n \"csv\",\n \"pretty\",\n \"excel\",\n \"slack\",\n] as const;\nconst CLICKY_DOWNLOAD_FORMATS = [\n \"yaml\",\n \"json\",\n \"csv\",\n \"pdf\",\n \"markdown\",\n] as const;\n\nexport type ClickyPrimaryViewFormat =\n (typeof CLICKY_PRIMARY_VIEW_FORMATS)[number];\nexport type ClickyOverflowViewFormat =\n (typeof CLICKY_OVERFLOW_VIEW_FORMATS)[number];\nexport type ClickyRemoteFormat =\n | ClickyPrimaryViewFormat\n | ClickyOverflowViewFormat\n | \"ndjson\";\n\nexport type ClickyViewOptions = Partial<Record<ClickyRemoteFormat, boolean>>;\n\nexport type ClickyViewConfig = ClickyViewOptions | ClickyRemoteFormat[];\n\nexport type ClickyDownloadOptions = {\n /** Show all advertised download formats in the overflow menu. */\n all?: boolean;\n /** Override the download menu label. */\n label?: string;\n /** Formats advertised by the endpoint. Defaults to Clicky's legacy set. */\n formats?: ClickyRemoteFormat[];\n /** Result ranges advertised by the endpoint. Legacy endpoints omit this. */\n scopes?: ClickyDownloadScope[];\n /** Whether all-row export streams or uses a compatibility buffer. */\n allRowsMode?: \"streaming\" | \"buffered\";\n /** Per-format server row caps, for example `{ pdf: 1000 }`. */\n formatMaxRows?: Partial<Record<ClickyRemoteFormat, number>>;\n};\n\nexport type ClickyDownloadScope = \"page\" | \"all\";\n\nexport type ClickyProps = {\n /** Clicky document, node, or JSON string to render. */\n data?: ClickyDocument | ClickyNode | string;\n /** Remote URL to fetch when `data` is not provided. */\n url?: string;\n /** Enabled remote view/download formats. */\n view?: ClickyViewConfig;\n /** Download menu configuration. */\n download?: ClickyDownloadOptions;\n /** Runtime used by link-command nodes. */\n commandRuntime?: ClickyCommandRuntime;\n /** Called when an embedded table row is clicked. */\n onTableRowClick?: ClickyTableRowClick;\n /** Optional href factory for embedded table rows. */\n getTableRowHref?: ClickyTableRowHref;\n /** Predicate controlling whether embedded table rows are clickable. */\n isTableRowClickable?: ClickyTableRowPredicate;\n /** Classes applied to the renderer root. */\n className?: string;\n // search, externalFilters and pagination flow through to the embedded\n // DataTable so operation pages can publish their query parameters as the\n // table's search box, native filter pills, and pagination footer without\n // re-implementing them per page.\n search?: FilterBarSearchProps;\n externalFilters?: FilterBarFilter[];\n cellFilters?: Record<string, Record<string, CellFilterMode>>;\n onCellFilterChange?: (change: CellFilterChange) => void;\n /** Time-range control published into the first embedded table's FilterBar. */\n timeRange?: FilterBarRangeProps;\n /** Pagination footer configuration for the first embedded table. */\n pagination?: DataTablePagination;\n /** Controlled multi-row selection for the first embedded table. */\n rowSelection?: ClickyTableRowSelection;\n};\n\nexport type ClickyNodeViewProps = {\n /** Node to render; null and undefined render nothing. */\n node: ClickyNode | null | undefined;\n};\n\nexport type ClickyTableProps = {\n /** Clicky table column definitions. */\n columns: ClickyColumn[];\n /** Clicky table rows. */\n rows: ClickyRow[];\n /** Enable generated filters for filterable columns. */\n autoFilter?: boolean | undefined;\n /** Called when a row is clicked. */\n onTableRowClick?: ClickyTableRowClick | undefined;\n /** Optional href factory for row links. */\n getTableRowHref?: ClickyTableRowHref | undefined;\n /** Predicate controlling whether a row is clickable. */\n isTableRowClickable?: ClickyTableRowPredicate | undefined;\n /** Dedicated search input rendered in the table's FilterBar. */\n search?: FilterBarSearchProps | undefined;\n /** Time-range control rendered in the table's FilterBar. */\n timeRange?: FilterBarRangeProps | undefined;\n /** Extra FilterBar controls rendered before generated filters. */\n externalFilters?: FilterBarFilter[] | undefined;\n cellFilters?: Record<string, Record<string, CellFilterMode>> | undefined;\n onCellFilterChange?: ((change: CellFilterChange) => void) | undefined;\n /** Pagination footer configuration. */\n pagination?: DataTablePagination | undefined;\n /** Controlled multi-row selection. */\n rowSelection?: ClickyTableRowSelection | undefined;\n /** Extra actions rendered in the table menu. */\n menuActions?: DataTableMenuAction[] | undefined;\n};\n\nexport type ClickyTableRowSelection = DataTableRowSelection<ClickyRow> & {\n /** Stable Clicky row id used by the controlled selection. */\n getRowId: (row: ClickyRow, index: number) => string;\n};\n\ntype ClickyRemoteResponse =\n | { kind: \"text\"; text: string; contentType: string }\n | { kind: \"blob\"; blob: Blob; contentType: string };\n\ntype JsonTreeNode = {\n id: string;\n key: string;\n value: unknown;\n preview: string;\n children?: JsonTreeNode[];\n};\n\ntype ClickyRuntimeContextValue = {\n commandRuntime?: ClickyCommandRuntime | undefined;\n onTableRowClick?: ClickyTableRowClick | undefined;\n getTableRowHref?: ClickyTableRowHref | undefined;\n isTableRowClickable?: ClickyTableRowPredicate | undefined;\n // tableSearch + tableExternalFilters + tablePagination flow caller-owned\n // widgets into the FIRST ClickyTable rendered inside this runtime. The wiring\n // sits on the context rather than being threaded through every node so\n // OperationCommand page-style callers don't need to know how deep the table\n // is rendered.\n tableSearch?: FilterBarSearchProps | undefined;\n tableTimeRange?: FilterBarRangeProps | undefined;\n tableExternalFilters?: FilterBarFilter[] | undefined;\n tableCellFilters?: Record<string, Record<string, CellFilterMode>> | undefined;\n onTableCellFilterChange?: ((change: CellFilterChange) => void) | undefined;\n tablePagination?: DataTablePagination | undefined;\n tableRowSelection?: ClickyTableRowSelection | undefined;\n tableMenuActions?: DataTableMenuAction[] | undefined;\n operations: ResolvedOperation[];\n operationsLoading: boolean;\n};\n\nconst clickyRuntimeContextDefault: ClickyRuntimeContextValue = {\n operations: [],\n operationsLoading: false,\n};\n\nconst ClickyRuntimeContext = createContext<ClickyRuntimeContextValue>(\n clickyRuntimeContextDefault,\n);\n\nexport function Clicky(props: ClickyProps) {\n const [queryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 30_000,\n retry: 1,\n },\n },\n }),\n );\n const tableMenuActions = useMemo(\n () => getDownloadMenuActions({ url: props.url, download: props.download }),\n [props.download, props.url],\n );\n\n const content = (\n <ClickyRuntimeProvider\n {...(props.commandRuntime\n ? { commandRuntime: props.commandRuntime }\n : {})}\n {...(props.onTableRowClick\n ? { onTableRowClick: props.onTableRowClick }\n : {})}\n {...(props.getTableRowHref\n ? { getTableRowHref: props.getTableRowHref }\n : {})}\n {...(props.isTableRowClickable\n ? { isTableRowClickable: props.isTableRowClickable }\n : {})}\n {...(props.search ? { tableSearch: props.search } : {})}\n {...(props.timeRange ? { tableTimeRange: props.timeRange } : {})}\n {...(props.externalFilters\n ? { tableExternalFilters: props.externalFilters }\n : {})}\n {...(props.cellFilters ? { tableCellFilters: props.cellFilters } : {})}\n {...(props.onCellFilterChange\n ? { onTableCellFilterChange: props.onCellFilterChange }\n : {})}\n {...(props.pagination ? { tablePagination: props.pagination } : {})}\n {...(props.rowSelection ? { tableRowSelection: props.rowSelection } : {})}\n {...(tableMenuActions.length > 0 ? { tableMenuActions } : {})}\n >\n {props.url ? (\n <ClickyRemoteRenderer {...props} url={props.url} />\n ) : (\n <ClickyContent\n data={props.data}\n {...(props.className ? { className: props.className } : {})}\n />\n )}\n </ClickyRuntimeProvider>\n );\n\n if (props.url || props.commandRuntime) {\n return (\n <QueryClientProvider client={queryClient}>{content}</QueryClientProvider>\n );\n }\n\n return content;\n}\n\nfunction ClickyRuntimeProvider({\n commandRuntime,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableRowSelection,\n tableMenuActions,\n children,\n}: {\n commandRuntime?: ClickyCommandRuntime | undefined;\n onTableRowClick?: ClickyTableRowClick | undefined;\n getTableRowHref?: ClickyTableRowHref | undefined;\n isTableRowClickable?: ClickyTableRowPredicate | undefined;\n tableSearch?: FilterBarSearchProps | undefined;\n tableTimeRange?: FilterBarRangeProps | undefined;\n tableExternalFilters?: FilterBarFilter[] | undefined;\n tableCellFilters?: Record<string, Record<string, CellFilterMode>> | undefined;\n onTableCellFilterChange?: ((change: CellFilterChange) => void) | undefined;\n tablePagination?: DataTablePagination | undefined;\n tableRowSelection?: ClickyTableRowSelection | undefined;\n tableMenuActions?: DataTableMenuAction[] | undefined;\n children: ReactNode;\n}) {\n if (!commandRuntime) {\n const hasOverrides =\n onTableRowClick ||\n getTableRowHref ||\n isTableRowClickable ||\n tableSearch ||\n tableTimeRange ||\n tableExternalFilters ||\n tableCellFilters ||\n onTableCellFilterChange ||\n tablePagination ||\n tableRowSelection ||\n tableMenuActions;\n return (\n <ClickyRuntimeContext.Provider\n value={\n hasOverrides\n ? {\n ...clickyRuntimeContextDefault,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableRowSelection,\n tableMenuActions,\n }\n : clickyRuntimeContextDefault\n }\n >\n {children}\n </ClickyRuntimeContext.Provider>\n );\n }\n\n return (\n <ClickyCommandRuntimeProvider\n commandRuntime={commandRuntime}\n {...(onTableRowClick ? { onTableRowClick } : {})}\n {...(getTableRowHref ? { getTableRowHref } : {})}\n {...(isTableRowClickable ? { isTableRowClickable } : {})}\n {...(tableSearch ? { tableSearch } : {})}\n {...(tableTimeRange ? { tableTimeRange } : {})}\n {...(tableExternalFilters ? { tableExternalFilters } : {})}\n {...(tableCellFilters ? { tableCellFilters } : {})}\n {...(onTableCellFilterChange ? { onTableCellFilterChange } : {})}\n {...(tablePagination ? { tablePagination } : {})}\n {...(tableRowSelection ? { tableRowSelection } : {})}\n {...(tableMenuActions ? { tableMenuActions } : {})}\n >\n {children}\n </ClickyCommandRuntimeProvider>\n );\n}\n\nfunction ClickyCommandRuntimeProvider({\n commandRuntime,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableRowSelection,\n tableMenuActions,\n children,\n}: {\n commandRuntime: ClickyCommandRuntime;\n onTableRowClick?: ClickyTableRowClick | undefined;\n getTableRowHref?: ClickyTableRowHref | undefined;\n isTableRowClickable?: ClickyTableRowPredicate | undefined;\n tableSearch?: FilterBarSearchProps | undefined;\n tableTimeRange?: FilterBarRangeProps | undefined;\n tableExternalFilters?: FilterBarFilter[] | undefined;\n tableCellFilters?: Record<string, Record<string, CellFilterMode>> | undefined;\n onTableCellFilterChange?: ((change: CellFilterChange) => void) | undefined;\n tablePagination?: DataTablePagination | undefined;\n tableRowSelection?: ClickyTableRowSelection | undefined;\n tableMenuActions?: DataTableMenuAction[] | undefined;\n children: ReactNode;\n}) {\n const { operations, isLoading } = useOperations(commandRuntime.client);\n const value = useMemo(\n () => ({\n commandRuntime,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableRowSelection,\n tableMenuActions,\n operations,\n operationsLoading: isLoading,\n }),\n [\n commandRuntime,\n getTableRowHref,\n isLoading,\n isTableRowClickable,\n onTableRowClick,\n operations,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableRowSelection,\n tableMenuActions,\n ],\n );\n\n return (\n <ClickyRuntimeContext.Provider value={value}>\n {children}\n </ClickyRuntimeContext.Provider>\n );\n}\n\nfunction ClickyContent({\n data,\n className,\n}: {\n data: ClickyProps[\"data\"];\n className?: string | undefined;\n}) {\n if (data === undefined) {\n return (\n <ClickyNotice\n className={className}\n title=\"No Clicky data\"\n message=\"Provide either a local data payload or a URL.\"\n />\n );\n }\n\n const parsed = parseClickyData(data);\n\n if (!parsed.ok) {\n return <ClickyInvalidPayload parsed={parsed} className={className} />;\n }\n\n return (\n <div className={className}>\n <ClickyNodeRenderer node={parsed.document.node} />\n </div>\n );\n}\n\nfunction ClickyRemoteRenderer({\n data,\n url,\n view,\n download,\n className,\n}: ClickyProps & { url: string }) {\n const availableViews = useMemo(\n () => getAvailableViews({ data, url, view }),\n [data, url, view],\n );\n const primaryViews = useMemo(\n () => availableViews.filter(isPrimaryViewFormat),\n [availableViews],\n );\n const overflowViews = useMemo(\n () => availableViews.filter(isOverflowViewFormat),\n [availableViews],\n );\n const downloadFormats = useMemo(\n () => getDownloadFormats({ url, download }),\n [download, url],\n );\n const [activeView, setActiveView] = useState<ClickyRemoteFormat>(\n () => availableViews[0] ?? \"clicky\",\n );\n\n useEffect(() => {\n if (!availableViews.includes(activeView)) {\n setActiveView(availableViews[0] ?? \"clicky\");\n }\n }, [activeView, availableViews]);\n\n const formattedUrl = buildFormatUrl(url, activeView);\n const activeQuery = useQuery({\n queryKey: [\"clicky\", activeView, formattedUrl],\n enabled: shouldFetchRemoteView(activeView),\n queryFn: async () => fetchRemoteFormat(formattedUrl, activeView),\n });\n const effectiveClickyData =\n activeView === \"clicky\" && activeQuery.data?.kind === \"text\"\n ? activeQuery.data.text\n : data;\n const fallbackJsonData = useMemo(() => parseJsonValue(data), [data]);\n const effectiveJsonData =\n activeView === \"json\" && activeQuery.data?.kind === \"text\"\n ? parseJsonValue(activeQuery.data.text)\n : fallbackJsonData;\n const activeOverflowView = isOverflowViewFormat(activeView)\n ? activeView\n : null;\n const downloadHandledByTable = clickyPayloadHasTable(effectiveClickyData);\n const canDownload = downloadFormats.length > 0 && !downloadHandledByTable;\n const loadingMessage = `Fetching ${formattedUrl}`;\n\n const runtime = useContext(ClickyRuntimeContext);\n // When the payload renders as a table, fold the inline view switcher into the\n // table's overflow (\"3-dot\") menu alongside its download formats and hide the\n // standalone view bar — that bar is what looks out of place on a plain list\n // surface. Non-table payloads, and the JSON/PDF/HTML previews, keep the bar so\n // the user can always switch back to the table.\n const tableHostsControls = downloadHandledByTable && activeView === \"clicky\";\n const viewMenuActions = useMemo<DataTableMenuAction[]>(() => {\n if (!tableHostsControls || availableViews.length <= 1) return [];\n return availableViews.map((format) => {\n const meta = getRemoteFormatMeta(format);\n return {\n id: `view-${format}`,\n label: formatViewLabel(format),\n icon: meta.icon,\n ...(meta.iconClassName ? { iconClassName: meta.iconClassName } : {}),\n section: \"View\",\n disabled: format === activeView,\n onSelect: () => setActiveView(format),\n };\n });\n }, [tableHostsControls, availableViews, activeView]);\n const combinedTableActions = useMemo<DataTableMenuAction[]>(\n () => [...viewMenuActions, ...(runtime.tableMenuActions ?? [])],\n [viewMenuActions, runtime.tableMenuActions],\n );\n\n return (\n <div className={cn(\"space-y-density-3\", className)}>\n {!tableHostsControls && (\n <div className=\"flex flex-wrap items-center gap-2 rounded-md border border-border bg-muted/20 px-density-3 py-density-2\">\n {primaryViews.length > 1 && (\n <div\n role=\"radiogroup\"\n aria-label=\"Clicky view mode\"\n className=\"flex flex-wrap gap-1\"\n >\n {primaryViews.map((mode) => (\n <button\n key={mode}\n type=\"button\"\n role=\"radio\"\n aria-checked={activeView === mode}\n onClick={() => setActiveView(mode)}\n className={cn(\n \"rounded-md border px-2.5 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n activeView === mode\n ? \"border-foreground/20 bg-accent text-foreground\"\n : \"border-transparent text-muted-foreground hover:border-foreground/20 hover:text-foreground\",\n )}\n >\n {formatViewLabel(mode)}\n </button>\n ))}\n </div>\n )}\n\n {overflowViews.length > 0 && (\n <ClickyViewMenu\n activeFormat={activeOverflowView}\n formats={overflowViews}\n onSelect={setActiveView}\n />\n )}\n\n <div className=\"ml-auto flex items-center gap-2\">\n {shouldFetchRemoteView(activeView) && activeQuery.isFetching && (\n <span className=\"text-xs text-muted-foreground\">Refreshing…</span>\n )}\n\n {canDownload && (\n <ClickyDownloadMenu\n url={url}\n formats={downloadFormats}\n download={download}\n />\n )}\n </div>\n </div>\n )}\n\n {activeView === \"pdf\" ? (\n <ClickyPdfPreview src={formattedUrl} />\n ) : activeView === \"html\" ? (\n <ClickyHtmlPreview src={formattedUrl} />\n ) : activeView === \"excel\" ? (\n <ClickyUnsupportedPreview\n title=\"Excel preview\"\n message=\"Excel output is available for download, but not inline preview.\"\n href={formattedUrl}\n />\n ) : activeView === \"clicky\" ? (\n activeQuery.isPending && effectiveClickyData === undefined ? (\n <ClickyNotice title=\"Loading Clicky\" message={loadingMessage} />\n ) : activeQuery.isError && effectiveClickyData === undefined ? (\n <ClickyNotice\n title=\"Clicky request failed\"\n message={\n activeQuery.error instanceof Error\n ? activeQuery.error.message\n : \"Request failed\"\n }\n tone=\"destructive\"\n />\n ) : (\n <>\n {activeQuery.isError && data !== undefined && (\n <ClickyNotice\n title=\"Remote refresh failed\"\n message=\"Showing the local fallback payload instead.\"\n tone=\"warning\"\n />\n )}\n <ClickyRuntimeContext.Provider\n value={{ ...runtime, tableMenuActions: combinedTableActions }}\n >\n <ClickyContent\n data={effectiveClickyData}\n className=\"flex min-h-0 flex-1 flex-col\"\n />\n </ClickyRuntimeContext.Provider>\n </>\n )\n ) : activeView === \"json\" ? (\n activeQuery.isPending && effectiveJsonData === undefined ? (\n <ClickyNotice title=\"Loading JSON\" message={loadingMessage} />\n ) : activeQuery.isError && effectiveJsonData === undefined ? (\n <ClickyNotice\n title=\"JSON request failed\"\n message={\n activeQuery.error instanceof Error\n ? activeQuery.error.message\n : \"Request failed\"\n }\n tone=\"destructive\"\n />\n ) : (\n <>\n {activeQuery.isError && fallbackJsonData !== undefined && (\n <ClickyNotice\n title=\"Remote refresh failed\"\n message=\"Showing the local fallback payload instead.\"\n tone=\"warning\"\n />\n )}\n <ClickyJsonTree value={effectiveJsonData} />\n </>\n )\n ) : activeQuery.isPending ? (\n <ClickyNotice\n title={`Loading ${formatViewLabel(activeView)}`}\n message={loadingMessage}\n />\n ) : activeQuery.isError ? (\n <ClickyNotice\n title={`${formatViewLabel(activeView)} request failed`}\n message={\n activeQuery.error instanceof Error\n ? activeQuery.error.message\n : \"Request failed\"\n }\n tone=\"destructive\"\n />\n ) : (\n <ClickyRemotePreview\n format={activeView as ClickyOverflowViewFormat}\n response={activeQuery.data}\n />\n )}\n </div>\n );\n}\n\nfunction ClickyViewMenu({\n activeFormat,\n formats,\n onSelect,\n}: {\n activeFormat: ClickyOverflowViewFormat | null;\n formats: ClickyOverflowViewFormat[];\n onSelect: (format: ClickyRemoteFormat) => void;\n}) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n return (\n <div ref={rootRef} className=\"relative\">\n <button\n ref={triggerRef}\n type=\"button\"\n aria-label=\"Open additional view menu\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-pressed={activeFormat != null}\n className={cn(\n \"inline-flex h-[34px] w-[34px] items-center justify-center rounded-md border border-input bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n activeFormat && \"border-foreground/20 bg-accent text-foreground\",\n )}\n onClick={() => setOpen((current) => !current)}\n >\n <Icon icon={UiEllipsis} className=\"text-sm\" />\n </button>\n\n {open && (\n <div\n role=\"menu\"\n className=\"absolute left-0 top-[calc(100%+0.375rem)] z-50 min-w-[18rem] rounded-md border border-border bg-popover p-1.5 text-popover-foreground shadow-lg shadow-black/5\"\n >\n {formats.map((format) => {\n const active = format === activeFormat;\n const meta = getRemoteFormatMeta(format);\n return (\n <button\n key={format}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n className={cn(\n \"flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\",\n active && \"bg-accent/70\",\n )}\n onClick={() => {\n onSelect(format);\n setOpen(false);\n }}\n >\n <Icon\n icon={meta.icon}\n className={cn(\n \"mt-0.5 shrink-0 text-base\",\n meta.iconClassName ?? \"text-muted-foreground\",\n active && !meta.iconClassName && \"text-foreground\",\n )}\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"flex items-center justify-between gap-3\">\n <span className=\"font-medium\">{meta.label}</span>\n {active && (\n <Icon\n icon={UiCheck}\n className=\"text-xs text-muted-foreground\"\n />\n )}\n </span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n {meta.description}\n </span>\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n\nfunction ClickyDownloadMenu({\n url,\n formats,\n download,\n}: {\n url: string;\n formats: ClickyRemoteFormat[];\n download?: ClickyDownloadOptions | undefined;\n}) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n const primaryFormat: ClickyRemoteFormat = formats.includes(\"json\")\n ? \"json\"\n : formats[0]!;\n const primaryMeta = getRemoteFormatMeta(primaryFormat);\n const scopes = getDownloadScopes(download);\n const primaryScope = scopes[0];\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n return (\n <div ref={rootRef} className=\"relative\">\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n aria-label={\n download?.label\n ? `Download ${primaryMeta.label} ${download.label}`\n : `Download ${primaryMeta.label}`\n }\n className=\"inline-flex items-center gap-2 rounded-md border border-input bg-background px-3 py-1.5 text-xs font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n onClick={() =>\n triggerDownload(\n buildDownloadUrl(\n url,\n primaryFormat,\n download?.label,\n primaryScope,\n ),\n )\n }\n >\n <Icon icon={UiCloudDownload} className=\"text-sm\" />\n <span>{`Download ${primaryMeta.label}`}</span>\n </button>\n <button\n ref={triggerRef}\n type=\"button\"\n aria-label=\"Open download menu\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n className=\"inline-flex h-[34px] w-[34px] items-center justify-center rounded-md border border-input bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n onClick={() => setOpen((current) => !current)}\n >\n <Icon icon={open ? UiChevronUp : UiChevronDown} className=\"text-sm\" />\n </button>\n </div>\n\n {open && (\n <div\n role=\"menu\"\n className=\"absolute right-0 top-[calc(100%+0.375rem)] z-50 min-w-[18rem] rounded-md border border-border bg-popover p-1.5 text-popover-foreground shadow-lg shadow-black/5\"\n >\n {scopes.map((scope, scopeIndex) => (\n <div\n key={scope ?? \"legacy\"}\n className={cn(\n scopeIndex > 0 && \"mt-1 border-t border-border pt-1\",\n )}\n >\n {scope && (\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground\">\n {downloadSection(scope)}\n </div>\n )}\n {formats.map((format) => {\n const meta = getRemoteFormatMeta(format);\n const description = downloadDescription(\n format,\n scope,\n download,\n );\n return (\n <button\n key={`${scope ?? \"legacy\"}-${format}`}\n type=\"button\"\n role=\"menuitem\"\n className=\"flex w-full items-start gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\"\n onClick={() => {\n triggerDownload(\n buildDownloadUrl(url, format, download?.label, scope),\n );\n setOpen(false);\n }}\n >\n <Icon\n icon={meta.icon}\n className={cn(\n \"mt-0.5 shrink-0 text-sm\",\n meta.iconClassName ?? \"text-muted-foreground\",\n )}\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"font-medium\">{meta.label}</span>\n {description && (\n <span className=\"block text-xs text-muted-foreground\">\n {description}\n </span>\n )}\n </span>\n </button>\n );\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction useDismissablePopup(\n open: boolean,\n rootRef: RefObject<HTMLElement | null>,\n triggerRef: RefObject<HTMLElement | null>,\n onClose: () => void,\n) {\n useEscapeLayer(open, () => {\n onClose();\n triggerRef.current?.focus();\n });\n\n useEffect(() => {\n if (!open) return;\n\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n onClose();\n }\n };\n\n document.addEventListener(\"mousedown\", onPointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n };\n }, [onClose, open, rootRef, triggerRef]);\n}\n\nfunction fetchRemoteFormat(\n url: string,\n format: ClickyRemoteFormat,\n): Promise<ClickyRemoteResponse> {\n return fetch(url, {\n headers: {\n Accept: getRemoteFormatMeta(format).accept,\n },\n }).then(async (response) => {\n if (!response.ok) {\n throw new Error(\n `Request failed with ${response.status} ${response.statusText}`.trim(),\n );\n }\n\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n\n if (format === \"excel\") {\n return {\n kind: \"blob\",\n blob: await response.blob(),\n contentType,\n };\n }\n\n return {\n kind: \"text\",\n text: await response.text(),\n contentType,\n };\n });\n}\n\nfunction ClickyInvalidPayload({\n parsed,\n className,\n}: {\n parsed: Extract<ParsedClicky, { ok: false }>;\n className?: string | undefined;\n}) {\n return (\n <div\n className={cn(\n \"rounded-md border border-destructive/30 bg-destructive/5 p-density-3\",\n className,\n )}\n >\n <div className=\"text-sm font-medium text-destructive\">\n Invalid Clicky payload\n </div>\n <pre className=\"mt-2 whitespace-pre-wrap break-all text-xs text-muted-foreground\">\n {parsed.message}\n {parsed.raw ? `\\n\\n${parsed.raw}` : \"\"}\n </pre>\n </div>\n );\n}\n\nfunction ClickyNotice({\n title,\n message,\n tone = \"default\",\n className,\n}: {\n title: string;\n message: ReactNode;\n tone?: \"default\" | \"warning\" | \"destructive\";\n className?: string | undefined;\n}) {\n return (\n <div\n className={cn(\n \"rounded-md border p-density-3\",\n tone === \"destructive\" && \"border-destructive/30 bg-destructive/5\",\n tone === \"warning\" && \"border-yellow-500/30 bg-yellow-500/5\",\n tone === \"default\" && \"border-border bg-muted/30\",\n className,\n )}\n >\n <div\n className={cn(\n \"text-sm font-medium\",\n tone === \"destructive\" && \"text-destructive\",\n tone === \"warning\" && \"text-yellow-700 dark:text-yellow-400\",\n )}\n >\n {title}\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground\">{message}</div>\n </div>\n );\n}\n\nfunction ClickyPdfPreview({ src }: { src: string }) {\n return (\n <div className=\"overflow-hidden rounded-md border border-border bg-background\">\n <div className=\"flex items-center justify-between border-b border-border px-3 py-2 text-xs text-muted-foreground\">\n <span>PDF preview</span>\n <a\n href={src}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-primary hover:underline\"\n >\n Open in new tab\n </a>\n </div>\n <iframe\n title=\"Clicky PDF preview\"\n src={src}\n className=\"h-[720px] w-full bg-background\"\n />\n </div>\n );\n}\n\nfunction ClickyHtmlPreview({ src }: { src: string }) {\n return (\n <div className=\"overflow-hidden rounded-md border border-border bg-background\">\n <div className=\"flex items-center justify-between border-b border-border px-3 py-2 text-xs text-muted-foreground\">\n <span>HTML preview</span>\n <a\n href={src}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-primary hover:underline\"\n >\n Open in new tab\n </a>\n </div>\n <iframe\n title=\"Clicky HTML preview\"\n src={src}\n className=\"h-[720px] w-full bg-background\"\n sandbox=\"allow-same-origin\"\n />\n </div>\n );\n}\n\nfunction ClickyUnsupportedPreview({\n title,\n message,\n href,\n}: {\n title: string;\n message: string;\n href: string;\n}) {\n return (\n <ClickyNotice\n title={title}\n message={\n <>\n <span>{message} </span>\n <a\n href={href}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-primary hover:underline\"\n >\n Open format\n </a>\n </>\n }\n />\n );\n}\n\nfunction ClickyRemotePreview({\n format,\n response,\n}: {\n format: ClickyOverflowViewFormat;\n response: ClickyRemoteResponse | undefined;\n}) {\n const meta = getRemoteFormatMeta(format);\n\n if (format === \"slack\") {\n const parsed =\n response?.kind === \"text\" ? parseJsonValue(response.text) : undefined;\n return <ClickyJsonTree value={parsed} emptyLabel={meta.label} />;\n }\n\n return (\n <ClickyTextPreview\n title={`${meta.label} output`}\n content={response?.kind === \"text\" ? response.text : \"\"}\n />\n );\n}\n\nfunction ClickyTextPreview({\n title,\n content,\n}: {\n title: string;\n content: string;\n}) {\n return (\n <div className=\"overflow-hidden rounded-md border border-border bg-background\">\n <div className=\"border-b border-border px-3 py-2 text-xs text-muted-foreground\">\n {title}\n </div>\n <pre\n aria-label=\"Clicky text preview\"\n className=\"overflow-auto whitespace-pre-wrap break-words px-3 py-3 font-mono text-xs text-foreground\"\n >\n {content || \"No content\"}\n </pre>\n </div>\n );\n}\n\nfunction ClickyJsonTree({\n value,\n emptyLabel = \"JSON\",\n}: {\n value: unknown;\n emptyLabel?: string;\n}) {\n const roots = useMemo(() => buildJsonTree(value), [value]);\n\n if (value === undefined) {\n return (\n <ClickyNotice\n title={`No ${emptyLabel} payload`}\n message=\"The response did not include a JSON body to inspect.\"\n />\n );\n }\n\n return (\n <div\n aria-label=\"JSON tree\"\n className=\"overflow-hidden rounded-md border border-border bg-background\"\n >\n <Tree<JsonTreeNode>\n roots={roots}\n className=\"min-h-[12rem]\"\n showControls={roots.some((node) => (node.children?.length ?? 0) > 0)}\n getKey={(node) => node.id}\n getChildren={(node) => node.children}\n renderRow={({ node }) => <ClickyJsonTreeRow node={node} />}\n rowClass={() => \"hover:bg-accent\"}\n empty={\n <div className=\"px-3 py-4 text-sm text-muted-foreground\">\n No JSON fields.\n </div>\n }\n toolbarClassName=\"pl-3\"\n />\n </div>\n );\n}\n\nfunction ClickyJsonTreeRow({ node }: { node: JsonTreeNode }) {\n const primitiveClass =\n typeof node.value === \"string\"\n ? \"text-emerald-700 dark:text-emerald-400\"\n : typeof node.value === \"number\"\n ? \"text-sky-700 dark:text-sky-400\"\n : typeof node.value === \"boolean\" || node.value === null\n ? \"text-violet-700 dark:text-violet-400\"\n : \"text-muted-foreground\";\n\n return (\n <div className=\"flex min-w-0 items-start gap-2 font-mono text-xs\">\n <span className=\"shrink-0 text-foreground\">{node.key}</span>\n <span className=\"shrink-0 text-muted-foreground\">:</span>\n <span className={cn(\"min-w-0 break-words\", primitiveClass)}>\n {node.preview}\n </span>\n </div>\n );\n}\n\nfunction getAvailableViews({\n data,\n url,\n view,\n}: {\n data: ClickyProps[\"data\"] | undefined;\n url?: string | undefined;\n view?: ClickyViewConfig | undefined;\n}): ClickyRemoteFormat[] {\n const allowClicky = resolveViewConfigFlag(view, \"clicky\", data, url);\n const allowJson = resolveViewConfigFlag(view, \"json\", data, url);\n const next: ClickyRemoteFormat[] = [];\n\n if (allowClicky && (url || data !== undefined)) {\n next.push(\"clicky\");\n }\n\n if (allowJson && (url || data !== undefined)) {\n next.push(\"json\");\n }\n\n for (const format of CLICKY_OVERFLOW_VIEW_FORMATS) {\n if (resolveViewConfigFlag(view, format, data, url) && url) {\n next.push(format);\n }\n }\n\n if (next.length === 0 && (url || data !== undefined)) {\n next.push(\"clicky\");\n }\n\n return next;\n}\n\nfunction getDownloadFormats({\n url,\n download,\n}: {\n url?: string | undefined;\n download?: ClickyDownloadOptions | undefined;\n}): ClickyRemoteFormat[] {\n const enabled = download ? (download.all ?? true) : !!url;\n\n if (!enabled || !url) {\n return [];\n }\n\n return download?.formats?.length\n ? [...download.formats]\n : [...CLICKY_DOWNLOAD_FORMATS];\n}\n\nfunction getDownloadScopes(\n download?: ClickyDownloadOptions,\n): Array<ClickyDownloadScope | undefined> {\n return download?.scopes?.length ? download.scopes : [undefined];\n}\n\nfunction downloadSection(scope: ClickyDownloadScope) {\n return scope === \"all\" ? \"Download all rows\" : \"Download current page\";\n}\n\nfunction downloadDescription(\n format: ClickyRemoteFormat,\n scope: ClickyDownloadScope | undefined,\n download?: ClickyDownloadOptions,\n) {\n const maxRows = download?.formatMaxRows?.[format];\n if (maxRows) {\n return `Limited to ${maxRows.toLocaleString()} rows`;\n }\n if (scope === \"all\" && download?.allRowsMode === \"buffered\") {\n return \"Compatibility mode buffers the complete result\";\n }\n if (scope === \"all\" && download?.allRowsMode === \"streaming\") {\n return \"Streams rows as they are read\";\n }\n return undefined;\n}\n\nfunction getDownloadMenuActions({\n url,\n download,\n}: {\n url?: string | undefined;\n download?: ClickyDownloadOptions | undefined;\n}): DataTableMenuAction[] {\n const formats = getDownloadFormats({ url, download });\n if (!url || formats.length === 0) return [];\n\n return getDownloadScopes(download).flatMap((scope) =>\n formats.map((format) => {\n const meta = getRemoteFormatMeta(format);\n return {\n id: `download-${scope ?? \"legacy\"}-${format}`,\n label: meta.label,\n description: downloadDescription(format, scope, download),\n icon: meta.icon,\n ...(meta.iconClassName ? { iconClassName: meta.iconClassName } : {}),\n ...(scope ? { section: downloadSection(scope) } : {}),\n onSelect: () =>\n triggerDownload(\n buildDownloadUrl(url, format, download?.label, scope),\n ),\n };\n }),\n );\n}\n\nfunction getRemoteFormatMeta(format: ClickyRemoteFormat): {\n label: string;\n description: string;\n icon: StaticIconComponent;\n iconClassName?: string;\n accept: string;\n} {\n switch (format) {\n case \"clicky\":\n return {\n label: \"Clicky\",\n description: \"Rendered Clicky JSON with the rich Clicky viewer\",\n icon: UiEye,\n accept:\n \"application/json+clicky, application/clicky+json;q=0.9, application/json;q=0.8,*/*;q=0.7\",\n };\n case \"json\":\n return {\n label: \"JSON\",\n description: \"Plain JSON for inspecting the raw response body\",\n icon: UiJson,\n accept: \"application/json, text/plain;q=0.8,*/*;q=0.7\",\n };\n case \"ndjson\":\n return {\n label: \"NDJSON\",\n description: \"Newline-delimited JSON for streaming data pipelines\",\n icon: UiJson,\n accept: \"application/x-ndjson, application/ndjson;q=0.9,*/*;q=0.7\",\n };\n case \"pdf\":\n return {\n label: \"PDF\",\n description: \"Portable document for sharing and printing\",\n icon: UiFileText,\n iconClassName: \"text-rose-600 dark:text-rose-400\",\n accept: \"application/pdf, */*;q=0.7\",\n };\n case \"html\":\n return {\n label: \"HTML\",\n description: \"Browser-ready HTML preview of the formatted output\",\n icon: UiFileCode,\n accept: \"text/html, */*;q=0.7\",\n };\n case \"markdown\":\n return {\n label: \"Markdown\",\n description: \"Markdown formatted for docs, comments, and chat\",\n icon: UiMarkdown,\n accept: \"text/markdown, text/plain;q=0.8,*/*;q=0.7\",\n };\n case \"yaml\":\n return {\n label: \"YAML\",\n description: \"YAML for config-friendly inspection and export\",\n icon: UiFileCode,\n iconClassName: \"text-violet-600 dark:text-violet-400\",\n accept: \"application/yaml, text/yaml;q=0.9, text/plain;q=0.8,*/*;q=0.7\",\n };\n case \"csv\":\n return {\n label: \"CSV\",\n description: \"Comma-separated values for spreadsheets and imports\",\n icon: UiFileSpreadsheet,\n iconClassName: \"text-emerald-600 dark:text-emerald-400\",\n accept: \"text/csv, text/plain;q=0.8,*/*;q=0.7\",\n };\n case \"pretty\":\n return {\n label: \"Pretty\",\n description: \"Human-readable plain text output from the formatter\",\n icon: UiFileCode,\n accept: \"text/plain, */*;q=0.7\",\n };\n case \"excel\":\n return {\n label: \"Excel\",\n description: \"Spreadsheet workbook for offline analysis\",\n icon: UiTable,\n accept:\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, */*;q=0.7\",\n };\n case \"slack\":\n return {\n label: \"Slack\",\n description: \"Slack Block Kit JSON for chat-native output\",\n icon: UiComment,\n accept:\n \"application/vnd.slack.block-kit+json, application/json;q=0.8,*/*;q=0.7\",\n };\n }\n}\n\nfunction formatViewLabel(mode: ClickyRemoteFormat) {\n return getRemoteFormatMeta(mode).label;\n}\n\nfunction buildFormatUrl(url: string, format: ClickyRemoteFormat) {\n const base =\n typeof window === \"undefined\" ? \"http://localhost\" : window.location.origin;\n const resolved = new URL(url, base);\n resolved.searchParams.set(\n \"format\",\n format === \"clicky\" ? \"clicky-json\" : format,\n );\n\n if (isAbsoluteUrl(url)) {\n return resolved.toString();\n }\n\n return `${resolved.pathname}${resolved.search}${resolved.hash}`;\n}\n\nfunction buildDownloadUrl(\n url: string,\n format: ClickyRemoteFormat,\n label?: string | undefined,\n scope?: ClickyDownloadScope | undefined,\n) {\n const formatted = buildFormatUrl(url, format);\n const base =\n typeof window === \"undefined\" ? \"http://localhost\" : window.location.origin;\n const resolved = new URL(formatted, base);\n resolved.searchParams.set(\"filename\", downloadFilename(url, format, label));\n resolved.searchParams.set(\"_download\", Date.now().toString());\n if (scope) {\n resolved.searchParams.set(\"scope\", scope);\n }\n if (scope === \"all\") {\n resolved.searchParams.delete(\"limit\");\n resolved.searchParams.delete(\"offset\");\n resolved.searchParams.delete(\"page\");\n }\n\n if (isAbsoluteUrl(formatted)) {\n return resolved.toString();\n }\n\n return `${resolved.pathname}${resolved.search}${resolved.hash}`;\n}\n\nfunction downloadFilename(\n url: string,\n format: ClickyRemoteFormat,\n label?: string | undefined,\n) {\n const stem = sanitizeFilenameStem(\n label || filenameStemFromUrl(url) || \"clicky-output\",\n );\n return `${stem}${downloadExtension(format)}`;\n}\n\nfunction filenameStemFromUrl(url: string) {\n const base =\n typeof window === \"undefined\" ? \"http://localhost\" : window.location.origin;\n const resolved = new URL(url, base);\n const segment = resolved.pathname.split(\"/\").filter(Boolean).at(-1);\n return segment ?? \"\";\n}\n\nfunction sanitizeFilenameStem(value: string) {\n const cleaned = value\n .trim()\n .replace(/\\.[a-z0-9]+$/i, \"\")\n .replace(/[^a-z0-9._-]+/gi, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^[._-]+|[._-]+$/g, \"\");\n\n return cleaned || \"clicky-output\";\n}\n\nfunction downloadExtension(format: ClickyRemoteFormat) {\n switch (format) {\n case \"clicky\":\n return \".clicky.json\";\n case \"json\":\n return \".json\";\n case \"ndjson\":\n return \".ndjson\";\n case \"pdf\":\n return \".pdf\";\n case \"html\":\n return \".html\";\n case \"markdown\":\n return \".md\";\n case \"yaml\":\n return \".yaml\";\n case \"csv\":\n return \".csv\";\n case \"pretty\":\n return \".txt\";\n case \"excel\":\n return \".xlsx\";\n case \"slack\":\n return \".slack.json\";\n }\n}\n\nfunction shouldFetchRemoteView(format: ClickyRemoteFormat) {\n return format !== \"pdf\" && format !== \"html\" && format !== \"excel\";\n}\n\nfunction isPrimaryViewFormat(\n format: ClickyRemoteFormat,\n): format is ClickyPrimaryViewFormat {\n return (CLICKY_PRIMARY_VIEW_FORMATS as readonly string[]).includes(format);\n}\n\nfunction isOverflowViewFormat(\n format: ClickyRemoteFormat,\n): format is ClickyOverflowViewFormat {\n return (CLICKY_OVERFLOW_VIEW_FORMATS as readonly string[]).includes(format);\n}\n\nfunction resolveViewConfigFlag(\n view: ClickyViewConfig | undefined,\n format: ClickyRemoteFormat,\n data: ClickyProps[\"data\"],\n url?: string,\n) {\n const defaultEnabled =\n format === \"clicky\" || format === \"json\"\n ? url != null || data !== undefined\n : !!url;\n\n if (view === undefined) {\n return defaultEnabled;\n }\n\n if (Array.isArray(view)) {\n if (view.length === 0) {\n return false;\n }\n\n if (format === \"clicky\") {\n return view.includes(\"clicky\") || view.includes(\"json\");\n }\n\n return view.includes(format);\n }\n\n if (format in view) {\n return Boolean(view[format]);\n }\n\n if (format === \"clicky\" && view.json === true) {\n return true;\n }\n\n return defaultEnabled;\n}\n\nfunction parseJsonValue(data: ClickyProps[\"data\"]): unknown {\n if (data === undefined) {\n return undefined;\n }\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n const trimmed = data.trim();\n if (!trimmed) {\n return \"\";\n }\n\n try {\n return JSON.parse(trimmed) as unknown;\n } catch {\n return data;\n }\n}\n\nfunction clickyPayloadHasTable(data: ClickyProps[\"data\"] | undefined) {\n if (data === undefined) return false;\n const parsed = parseClickyData(data);\n return parsed.ok ? clickyNodeHasTable(parsed.document.node) : false;\n}\n\nfunction clickyNodeHasTable(node: ClickyNode | undefined): boolean {\n if (!node) return false;\n if (node.kind === \"table\") return true;\n if (node.children?.some(clickyNodeHasTable)) return true;\n if (node.items?.some(clickyNodeHasTable)) return true;\n if (node.fields?.some((field) => clickyNodeHasTable(field.value)))\n return true;\n if (node.label && clickyNodeHasTable(node.label)) return true;\n if (node.content && clickyNodeHasTable(node.content)) return true;\n if (node.tooltip && clickyNodeHasTable(node.tooltip)) return true;\n if (\n node.columns?.some(\n (column) => column.header && clickyNodeHasTable(column.header),\n )\n )\n return true;\n if (\n node.rows?.some((row) =>\n Object.values(row.cells).some((cell) => clickyNodeHasTable(cell)),\n )\n )\n return true;\n if (node.rows?.some((row) => row.detail && clickyNodeHasTable(row.detail)))\n return true;\n return false;\n}\n\nfunction buildJsonTree(value: unknown): JsonTreeNode[] {\n if (Array.isArray(value)) {\n return value.map((entry, index) =>\n buildJsonTreeNode(String(index), entry, `$[${index}]`),\n );\n }\n\n if (isPlainObject(value)) {\n return Object.entries(value).map(([key, entry]) =>\n buildJsonTreeNode(key, entry, `$.${key}`),\n );\n }\n\n if (value === undefined) {\n return [];\n }\n\n return [buildJsonTreeNode(\"$\", value, \"$\")];\n}\n\nfunction buildJsonTreeNode(\n key: string,\n value: unknown,\n id: string,\n): JsonTreeNode {\n const children = getJsonChildren(value, id);\n return {\n id,\n key,\n value,\n preview: summarizeJsonValue(value),\n ...(children ? { children } : {}),\n };\n}\n\nfunction getJsonChildren(value: unknown, path: string) {\n if (Array.isArray(value)) {\n return value.map((entry, index) =>\n buildJsonTreeNode(String(index), entry, `${path}[${index}]`),\n );\n }\n\n if (isPlainObject(value)) {\n return Object.entries(value).map(([key, entry]) =>\n buildJsonTreeNode(key, entry, `${path}.${key}`),\n );\n }\n\n return undefined;\n}\n\nfunction summarizeJsonValue(value: unknown) {\n if (Array.isArray(value)) {\n return `[${value.length} item${value.length === 1 ? \"\" : \"s\"}]`;\n }\n\n if (isPlainObject(value)) {\n const count = Object.keys(value).length;\n return `{${count} key${count === 1 ? \"\" : \"s\"}}`;\n }\n\n if (typeof value === \"string\") {\n return JSON.stringify(value);\n }\n\n if (value === undefined) {\n return \"undefined\";\n }\n\n return String(value);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nconst CLICKY_DOWNLOAD_FRAME_ID = \"clicky-download-frame\";\n\nfunction triggerDownload(url: string) {\n if (typeof document === \"undefined\") return;\n\n let frame = document.getElementById(\n CLICKY_DOWNLOAD_FRAME_ID,\n ) as HTMLIFrameElement | null;\n if (!frame) {\n frame = document.createElement(\"iframe\");\n frame.id = CLICKY_DOWNLOAD_FRAME_ID;\n frame.name = CLICKY_DOWNLOAD_FRAME_ID;\n frame.title = \"Clicky download target\";\n frame.setAttribute(\"aria-hidden\", \"true\");\n frame.tabIndex = -1;\n frame.style.display = \"none\";\n document.body.appendChild(frame);\n }\n\n frame.src = url;\n}\n\nfunction isAbsoluteUrl(url: string) {\n return /^[a-z][a-z\\d+\\-.]*:/i.test(url) || url.startsWith(\"//\");\n}\n\nfunction ClickyNodeRenderer({ node }: ClickyNodeViewProps) {\n if (!node) return null;\n\n switch (node.kind) {\n case \"text\":\n return <ClickyText node={node} />;\n case \"link\":\n return <ClickyLinkNode node={node} />;\n case \"link-command\":\n return <ClickyLinkCommandNode node={node} />;\n case \"icon\":\n return <ClickyIconNode node={node} />;\n case \"list\":\n return <ClickyList node={node} />;\n case \"map\":\n return <ClickyMap node={node} />;\n case \"table\":\n return <ClickyTableNode node={node} />;\n case \"tree\":\n return <ClickyTreeNode node={node} />;\n case \"object-graph\":\n return <ObjectGraph roots={node.objects ?? []} />;\n case \"execution-tree\":\n return <ExecutionTree roots={node.executionRoots ?? []} />;\n case \"code\":\n return (\n <CodeBlock\n language={node.language}\n source={node.source ?? node.plain ?? \"\"}\n highlightedHtml={node.highlightedHtml}\n />\n );\n case \"heading\":\n return <ClickyHeading node={node} />;\n case \"blockquote\":\n return <ClickyBlockquote node={node} />;\n case \"admonition\":\n return <ClickyAdmonition node={node} />;\n case \"footnote-ref\":\n return <ClickyFootnoteRef node={node} />;\n case \"footnote\":\n return <ClickyFootnote node={node} />;\n case \"footnotes\":\n return <ClickyFootnotes node={node} />;\n case \"collapsed\":\n return <ClickyCollapsed node={node} />;\n case \"stacktrace\":\n return <ClickyStackTraceNode node={node} />;\n case \"button\":\n return <ClickyButtonNode node={node} />;\n case \"button-group\":\n return <ClickyButtonGroup node={node} />;\n case \"html\":\n return <ClickyHtmlNode node={node} />;\n case \"comment\":\n return <ClickyComment node={node} />;\n case \"badge\":\n return <ClickyBadgeNode node={node} />;\n default:\n return (\n <pre className=\"rounded-md border border-border bg-muted p-density-3 text-xs\">\n {JSON.stringify(node, null, 2)}\n </pre>\n );\n }\n}\n\nexport { ClickyNodeRenderer as ClickyNodeView };\n\nfunction ClickyComment({ node }: { node: ClickyNode }) {\n const text = node.text ?? node.plain;\n const content = <ClickyInlineContent node={node} />;\n const maxWidth =\n node.style?.maxWidth && node.style.maxWidth > 0\n ? Math.min(node.style.maxWidth, 50)\n : 50;\n const maxLines =\n node.style?.maxLines && node.style.maxLines > 0\n ? Math.min(node.style.maxLines, 3)\n : 3;\n const inlineStyle = toInlineStyle(\n {\n ...node.style,\n maxWidth,\n maxLines,\n },\n text,\n );\n\n if (!text && !node.children?.length) return null;\n\n return (\n <div\n className={cn(\n \"mt-1 text-xs leading-snug text-muted-foreground\",\n node.style?.className,\n )}\n style={inlineStyle}\n title={node.tooltip?.plain ?? text}\n >\n {content}\n </div>\n );\n}\n\nfunction ClickyText({ node }: { node: ClickyNode }) {\n const inlineStyle = toInlineStyle(node.style, node.text ?? node.plain);\n const content = <ClickyInlineContent node={node} />;\n\n if (!node.style && !node.tooltip) {\n return <>{content}</>;\n }\n\n return (\n <span\n style={inlineStyle}\n title={node.tooltip?.plain}\n className={cn(\n node.style?.className,\n (node.text ?? \"\").includes(\"\\n\") && \"whitespace-pre-wrap\",\n )}\n >\n {content}\n </span>\n );\n}\n\nfunction ClickyInlineContent({ node }: { node: ClickyNode }) {\n return (\n <>\n {node.text}\n {node.children?.map((child, index) => (\n <Fragment key={index}>\n <ClickyNodeRenderer node={child} />\n </Fragment>\n ))}\n </>\n );\n}\n\nfunction ClickyLinkNode({ node }: { node: ClickyNode }) {\n const content = <ClickyInlineContent node={node} />;\n const inlineStyle = toInlineStyle(node.style, node.text ?? node.plain);\n const target = browserAnchorTarget(node.target);\n const rel = target === \"_blank\" ? \"noopener noreferrer\" : undefined;\n\n if (!node.href) {\n return <span style={inlineStyle}>{content}</span>;\n }\n\n return (\n <a\n href={node.href}\n target={target}\n rel={rel}\n title={node.tooltip?.plain}\n style={inlineStyle}\n className={cn(node.style?.className, \"inline cursor-pointer\")}\n >\n {content}\n </a>\n );\n}\n\nfunction ClickyLinkCommandNode({ node }: { node: ClickyNode }) {\n const runtime = useContext(ClickyRuntimeContext);\n const request = useMemo(() => clickyNodeToCommandRequest(node), [node]);\n const resolved = useMemo(\n () =>\n resolveClickyCommand(request, runtime.commandRuntime, runtime.operations),\n [request, runtime.commandRuntime, runtime.operations],\n );\n const target = request.target ?? \"Dialog\";\n const hasRuntime = runtime.commandRuntime != null;\n const [dialogOpen, setDialogOpen] = useState(false);\n const [expanded, setExpanded] = useState(false);\n\n if (!hasRuntime) {\n return (\n <span title={node.tooltip?.plain} className={cn(node.style?.className)}>\n <ClickyInlineContent node={node} />\n </span>\n );\n }\n\n if (target === \"_self\" || target === \"_window\" || target === \"_tab\") {\n const href =\n runtime.commandRuntime?.hrefForCommand?.(resolved) ??\n buildCommandExecutionHref(resolved);\n\n if (!href) {\n return (\n <span title={node.tooltip?.plain} className={cn(node.style?.className)}>\n <ClickyInlineContent node={node} />\n </span>\n );\n }\n\n return (\n <a\n href={href}\n target={browserAnchorTarget(target)}\n rel={target === \"_self\" ? undefined : \"noopener noreferrer\"}\n title={node.tooltip?.plain}\n style={toInlineStyle(node.style, node.text ?? node.plain)}\n className={cn(node.style?.className, \"inline cursor-pointer\")}\n >\n <ClickyInlineContent node={node} />\n </a>\n );\n }\n\n if (target === \"_clicky\") {\n return (\n <ClickyLinkCommandTrigger\n node={node}\n onClick={() => runtime.commandRuntime?.onNavigate?.(resolved)}\n />\n );\n }\n\n if (target === \"Hover\") {\n return (\n <HoverCard\n delay={75}\n cardClassName=\"w-[28rem] max-w-[calc(100vw-2rem)] whitespace-normal p-0\"\n trigger={<ClickyLinkCommandTrigger node={node} />}\n >\n <div className=\"max-h-[26rem] overflow-auto p-density-3\">\n <ClickyAsyncCommandResult resolved={resolved} />\n </div>\n </HoverCard>\n );\n }\n\n if (target === \"Expand\") {\n return (\n <span className=\"inline\">\n <ClickyLinkCommandTrigger\n node={node}\n ariaExpanded={expanded}\n onClick={() => setExpanded((current) => !current)}\n />\n {expanded && (\n <div className=\"mt-2 rounded-md border border-border bg-background p-density-3\">\n <ClickyAsyncCommandResult resolved={resolved} />\n </div>\n )}\n </span>\n );\n }\n\n return (\n <>\n <ClickyLinkCommandTrigger\n node={node}\n ariaExpanded={dialogOpen}\n onClick={() => setDialogOpen(true)}\n />\n <ClickyCommandDialog\n open={dialogOpen}\n onClose={() => setDialogOpen(false)}\n resolved={resolved}\n />\n </>\n );\n}\n\nfunction ClickyLinkCommandTrigger({\n node,\n onClick,\n ariaExpanded,\n}: {\n node: ClickyNode;\n onClick?: () => void;\n ariaExpanded?: boolean;\n}) {\n const inlineStyle = toInlineStyle(node.style, node.text ?? node.plain);\n\n const handleClick = (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n onClick?.();\n };\n\n return (\n <button\n type=\"button\"\n title={node.tooltip?.plain}\n aria-expanded={ariaExpanded}\n onClick={handleClick}\n style={inlineStyle}\n className={cn(\n \"inline cursor-pointer appearance-none border-0 bg-transparent p-0 text-left align-baseline text-inherit\",\n node.style?.className,\n )}\n >\n <ClickyInlineContent node={node} />\n </button>\n );\n}\n\nfunction ClickyCommandDialog({\n open,\n onClose,\n resolved,\n}: {\n open: boolean;\n onClose: () => void;\n resolved: ClickyResolvedCommand;\n}) {\n const runtime = useContext(ClickyRuntimeContext);\n const operation = resolved.operation;\n const parameters = operation?.operation.parameters ?? [];\n const initialValues = useMemo(\n () => buildCommandParameterValues(parameters, resolved.request),\n [parameters, resolved.request],\n );\n const [result, setResult] = useState<unknown>(null);\n const [error, setError] = useState(\"\");\n const [isExecuting, setIsExecuting] = useState(false);\n const [hasAutoStarted, setHasAutoStarted] = useState(false);\n const shouldAutoRun =\n open &&\n resolved.request.autoRun === true &&\n operation != null &&\n missingRequiredParameters(parameters, initialValues).length === 0;\n\n useEffect(() => {\n if (!open) {\n setHasAutoStarted(false);\n setResult(null);\n setError(\"\");\n }\n }, [open, resolved.request.command]);\n\n async function runCommand(values: ParameterValues) {\n if (!runtime.commandRuntime || !operation) {\n return;\n }\n\n setIsExecuting(true);\n setError(\"\");\n\n try {\n const response = await executeClickyCommand(\n runtime.commandRuntime.client,\n operation,\n values,\n );\n setResult(response);\n } catch (err) {\n setResult(null);\n setError(\n err instanceof Error ? err.message : String(err ?? \"Unknown error\"),\n );\n } finally {\n setIsExecuting(false);\n }\n }\n\n useEffect(() => {\n if (!shouldAutoRun || hasAutoStarted) {\n return;\n }\n\n setHasAutoStarted(true);\n void runCommand(initialValues);\n }, [hasAutoStarted, initialValues, shouldAutoRun]);\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n title={operation?.operation.summary || resolved.request.command}\n size=\"xl\"\n >\n <div className=\"space-y-4\">\n {operation ? (\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-muted-foreground\">\n <span className=\"rounded-md border border-border bg-muted px-2 py-1 font-medium uppercase\">\n {operation.method}\n </span>\n <code>{operation.path}</code>\n </div>\n ) : runtime.operationsLoading ? (\n <ClickyNotice\n title=\"Loading commands\"\n message=\"Resolving the command definition.\"\n />\n ) : (\n <ClickyNotice\n title=\"Unknown command\"\n message={`No operation matched \"${resolved.request.command}\".`}\n tone=\"destructive\"\n />\n )}\n\n {operation && (\n <div className=\"rounded-md border border-border bg-muted/20 p-density-3\">\n <FilterForm\n client={runtime.commandRuntime!.client}\n path={operation.path}\n method={operation.method}\n parameters={parameters}\n initialValues={initialValues}\n isSubmitting={isExecuting}\n submitLabel=\"Run command\"\n submittingLabel=\"Running…\"\n onSubmit={runCommand}\n />\n </div>\n )}\n\n {error ? (\n <ClickyNotice\n title=\"Command failed\"\n message={error}\n tone=\"destructive\"\n />\n ) : (\n <ClickyCommandResponse\n response={result}\n pending={isExecuting}\n emptyMessage=\"Run the command to load a Clicky response.\"\n />\n )}\n </div>\n </Modal>\n );\n}\n\nfunction ClickyAsyncCommandResult({\n resolved,\n}: {\n resolved: ClickyResolvedCommand;\n}) {\n const runtime = useContext(ClickyRuntimeContext);\n const operation = resolved.operation;\n const parameters = operation?.operation.parameters ?? [];\n const initialValues = useMemo(\n () => buildCommandParameterValues(parameters, resolved.request),\n [parameters, resolved.request],\n );\n const missing = useMemo(\n () => missingRequiredParameters(parameters, initialValues),\n [initialValues, parameters],\n );\n\n const query = useQuery({\n queryKey: [\n \"clicky-command\",\n resolved.request.command,\n operation?.method,\n operation?.path,\n initialValues,\n ],\n enabled:\n runtime.commandRuntime != null &&\n operation != null &&\n missing.length === 0,\n retry: 0,\n queryFn: async () =>\n executeClickyCommand(\n runtime.commandRuntime!.client,\n operation!,\n initialValues,\n ),\n });\n\n if (!runtime.commandRuntime) {\n return (\n <ClickyNotice\n title=\"Command runtime unavailable\"\n message=\"This Clicky view was rendered without a command runtime.\"\n tone=\"warning\"\n />\n );\n }\n\n if (!operation) {\n if (runtime.operationsLoading) {\n return (\n <ClickyNotice\n title=\"Loading commands\"\n message=\"Resolving the command definition.\"\n />\n );\n }\n return (\n <ClickyNotice\n title=\"Unknown command\"\n message={`No operation matched \"${resolved.request.command}\".`}\n tone=\"destructive\"\n />\n );\n }\n\n if (missing.length > 0) {\n return (\n <ClickyNotice\n title=\"Missing required parameters\"\n message={`This link is missing: ${missing.map((param) => prettifyName(param.name)).join(\", \")}.`}\n tone=\"warning\"\n />\n );\n }\n\n if (query.isPending) {\n return (\n <ClickyNotice\n title=\"Running command\"\n message=\"Loading Clicky response…\"\n />\n );\n }\n\n if (query.isError) {\n return (\n <ClickyNotice\n title=\"Command failed\"\n message={\n query.error instanceof Error ? query.error.message : \"Request failed\"\n }\n tone=\"destructive\"\n />\n );\n }\n\n return (\n <ClickyCommandResponse\n response={query.data}\n emptyMessage=\"No response body returned.\"\n />\n );\n}\n\nfunction ClickyCommandResponse({\n response,\n pending = false,\n emptyMessage,\n}: {\n response: unknown;\n pending?: boolean;\n emptyMessage: string;\n}) {\n if (pending) {\n return (\n <ClickyNotice\n title=\"Running command\"\n message=\"Loading Clicky response…\"\n />\n );\n }\n\n if (!response) {\n return <ClickyNotice title=\"No response\" message={emptyMessage} />;\n }\n\n const parsedPayload = isExecutionResponse(response)\n ? (response.parsed ?? parseJsonBody(response))\n : response;\n const rawText = isExecutionResponse(response)\n ? response.stdout || response.output || response.message || \"\"\n : typeof response === \"string\"\n ? response\n : JSON.stringify(response, null, 2);\n const clickyPayload =\n typeof parsedPayload === \"string\" ||\n (parsedPayload != null && typeof parsedPayload === \"object\")\n ? parsedPayload\n : rawText;\n const parsedClicky =\n clickyPayload === \"\"\n ? null\n : parseClickyData(clickyPayload as ClickyProps[\"data\"]);\n\n if (parsedClicky?.ok) {\n return (\n <div className=\"rounded-md border border-border bg-background p-density-3\">\n <ClickyNodeRenderer node={parsedClicky.document.node} />\n </div>\n );\n }\n\n if (parsedPayload != null && typeof parsedPayload === \"object\") {\n return <ClickyJsonTree value={parsedPayload} />;\n }\n\n return <ClickyTextPreview title=\"Response body\" content={rawText} />;\n}\n\nfunction ClickyIconNode({ node }: { node: ClickyNode }) {\n const inlineStyle = toInlineStyle(node.style, node.plain ?? node.unicode);\n\n return (\n <span\n style={inlineStyle}\n title={node.tooltip?.plain}\n className=\"inline-flex items-center\"\n >\n {node.iconify ? (\n <Icon name={node.iconify} />\n ) : (\n <span>{node.unicode ?? node.plain}</span>\n )}\n </span>\n );\n}\n\nfunction ClickyHeading({ node }: { node: ClickyNode }) {\n const level = clampHeadingLevel(node.level);\n const content = node.content ?? clickyNodeFallbackText(node);\n const inlineStyle = toInlineStyle(node.style, clickyNodeText(content));\n const className = cn(\n headingClassName(level),\n \"text-foreground\",\n node.style?.className,\n );\n\n switch (level) {\n case 1:\n return (\n <h1 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h1>\n );\n case 2:\n return (\n <h2 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h2>\n );\n case 3:\n return (\n <h3 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h3>\n );\n case 4:\n return (\n <h4 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h4>\n );\n case 5:\n return (\n <h5 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h5>\n );\n default:\n return (\n <h6 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h6>\n );\n }\n}\n\nfunction clampHeadingLevel(level: number | undefined) {\n if (!Number.isFinite(level)) return 1;\n return Math.min(6, Math.max(1, Math.trunc(level ?? 1)));\n}\n\nfunction headingClassName(level: number) {\n switch (level) {\n case 1:\n return \"text-2xl font-semibold leading-tight\";\n case 2:\n return \"text-xl font-semibold leading-tight\";\n case 3:\n return \"text-lg font-semibold leading-snug\";\n case 4:\n return \"text-base font-semibold leading-snug\";\n case 5:\n return \"text-sm font-semibold leading-snug\";\n default:\n return \"text-xs font-semibold uppercase leading-snug text-muted-foreground\";\n }\n}\n\nfunction ClickyBlockquote({ node }: { node: ClickyNode }) {\n const content = node.content ?? clickyNodeFallbackText(node);\n if (!content) return null;\n\n return (\n <blockquote className=\"border-l-4 border-border pl-density-3 text-sm leading-relaxed text-muted-foreground\">\n <ClickyNodeRenderer node={content} />\n </blockquote>\n );\n}\n\nfunction ClickyAdmonition({ node }: { node: ClickyNode }) {\n const severity = normalizeAdmonitionSeverity(node.severity);\n const title = node.label ?? {\n kind: \"text\" as const,\n text: prettifyName(severity),\n plain: prettifyName(severity),\n };\n const tone = admonitionToneClassName(severity);\n\n return (\n <div\n role={severity === \"danger\" || severity === \"warning\" ? \"alert\" : \"note\"}\n data-severity={severity}\n className={cn(\n \"rounded-md border px-density-3 py-density-2\",\n tone.container,\n )}\n >\n <div className={cn(\"text-sm font-semibold\", tone.title)}>\n <ClickyNodeRenderer node={title} />\n </div>\n {node.content && (\n <div className={cn(\"mt-1 text-sm leading-relaxed\", tone.body)}>\n <ClickyNodeRenderer node={node.content} />\n </div>\n )}\n </div>\n );\n}\n\nfunction normalizeAdmonitionSeverity(severity: string | undefined) {\n const normalized = (severity ?? \"note\").trim().toLowerCase();\n if (\n normalized === \"info\" ||\n normalized === \"tip\" ||\n normalized === \"warning\" ||\n normalized === \"danger\" ||\n normalized === \"note\"\n ) {\n return normalized;\n }\n return \"note\";\n}\n\nfunction admonitionToneClassName(severity: string) {\n switch (severity) {\n case \"info\":\n return {\n container: \"border-sky-500/30 bg-sky-500/5\",\n title: \"text-sky-800 dark:text-sky-300\",\n body: \"text-sky-950/80 dark:text-sky-100/80\",\n };\n case \"tip\":\n return {\n container: \"border-emerald-500/30 bg-emerald-500/5\",\n title: \"text-emerald-800 dark:text-emerald-300\",\n body: \"text-emerald-950/80 dark:text-emerald-100/80\",\n };\n case \"warning\":\n return {\n container: \"border-yellow-500/40 bg-yellow-500/10\",\n title: \"text-yellow-800 dark:text-yellow-300\",\n body: \"text-yellow-950/80 dark:text-yellow-100/80\",\n };\n case \"danger\":\n return {\n container: \"border-destructive/40 bg-destructive/10\",\n title: \"text-destructive\",\n body: \"text-destructive/90\",\n };\n default:\n return {\n container: \"border-border bg-muted/30\",\n title: \"text-foreground\",\n body: \"text-muted-foreground\",\n };\n }\n}\n\nfunction ClickyFootnoteRef({ node }: { node: ClickyNode }) {\n const id = normalizeFootnoteId(node.id);\n if (!id) return null;\n\n return (\n <sup id={footnoteDomId(\"fnref\", id)} className=\"align-super text-[0.75em]\">\n <a\n href={`#${footnoteDomId(\"fn\", id)}`}\n aria-label={`Footnote ${id}`}\n className=\"text-primary hover:underline\"\n >\n {`[^${id}]`}\n </a>\n </sup>\n );\n}\n\nfunction ClickyFootnote({ node }: { node: ClickyNode }) {\n const id = normalizeFootnoteId(node.id);\n if (!id) return null;\n\n return (\n <div id={footnoteDomId(\"fn\", id)} className=\"text-sm text-muted-foreground\">\n <span className=\"mr-2 font-mono text-xs text-foreground\">{`[^${id}]`}</span>\n {node.content && <ClickyNodeRenderer node={node.content} />}\n <FootnoteBackLink id={id} />\n </div>\n );\n}\n\nfunction ClickyFootnotes({ node }: { node: ClickyNode }) {\n const items = (node.items ?? []).filter((item) =>\n normalizeFootnoteId(item.id),\n );\n if (items.length === 0) return null;\n\n return (\n <section\n aria-label=\"Footnotes\"\n className=\"border-t border-border pt-density-2 text-xs text-muted-foreground\"\n >\n <ol className=\"ml-5 list-decimal space-y-1\">\n {items.map((item, index) => (\n <li\n key={`${item.id}-${index}`}\n id={footnoteDomId(\"fn\", item.id ?? \"\")}\n >\n {item.content && <ClickyNodeRenderer node={item.content} />}\n <FootnoteBackLink id={item.id ?? \"\"} />\n </li>\n ))}\n </ol>\n </section>\n );\n}\n\nfunction FootnoteBackLink({ id }: { id: string }) {\n return (\n <a\n href={`#${footnoteDomId(\"fnref\", id)}`}\n aria-label={`Back to footnote reference ${id}`}\n className=\"ml-2 text-primary hover:underline\"\n >\n back\n </a>\n );\n}\n\nfunction normalizeFootnoteId(id: string | undefined) {\n return (id ?? \"\").trim();\n}\n\nfunction footnoteDomId(prefix: \"fn\" | \"fnref\", id: string) {\n return `${prefix}-${encodeURIComponent(id)}`;\n}\n\nfunction clickyNodeFallbackText(node: ClickyNode): ClickyNode | undefined {\n const text = node.text ?? node.plain;\n return text ? { kind: \"text\", text, plain: text } : undefined;\n}\n\nfunction ClickyList({ node }: { node: ClickyNode }) {\n const items = node.items ?? [];\n if (items.length === 0) return null;\n\n if (node.inline) {\n return (\n <span className=\"inline-flex flex-wrap items-start gap-1\">\n {items.map((item, index) => (\n <Fragment key={index}>\n {index > 0 && <span className=\"text-muted-foreground\">,</span>}\n <span className=\"inline-flex items-center gap-1\">\n {!node.ordered && node.bullet && (\n <ClickyNodeRenderer node={node.bullet} />\n )}\n {node.ordered && (\n <span className=\"text-muted-foreground\">{index + 1}.</span>\n )}\n <ClickyNodeRenderer node={item} />\n </span>\n </Fragment>\n ))}\n </span>\n );\n }\n\n if (node.unstyled) {\n return (\n <div className=\"space-y-1\">\n {items.map((item, index) => (\n <div key={index} className=\"flex items-start gap-2\">\n {!node.ordered && node.bullet && (\n <ClickyNodeRenderer node={node.bullet} />\n )}\n {node.ordered && (\n <span className=\"text-muted-foreground\">{index + 1}.</span>\n )}\n <div className=\"min-w-0 flex-1\">\n <ClickyNodeRenderer node={item} />\n </div>\n </div>\n ))}\n </div>\n );\n }\n\n const Tag = node.ordered ? \"ol\" : \"ul\";\n const listClass = node.ordered ? \"list-decimal\" : \"list-disc\";\n\n return (\n <Tag className={cn(\"ml-5 space-y-1 text-sm\", listClass)}>\n {items.map((item, index) => (\n <li key={index}>\n <ClickyNodeRenderer node={item} />\n </li>\n ))}\n </Tag>\n );\n}\n\nfunction ClickyMap({ node }: { node: ClickyNode }) {\n const runtime = useContext(ClickyRuntimeContext);\n const fields = (node.fields ?? []).filter(\n (field) => !(runtime.tablePagination && isPaginationMetadataField(field)),\n );\n if (fields.length === 0) return null;\n\n const inlineFields = fields.filter((field) => isInlineNode(field.value));\n const blockFields = fields.filter((field) => !isInlineNode(field.value));\n\n // A map that is nothing but a wrapper around one table renders the table\n // directly — no field label, no bordered box — so it behaves exactly like a\n // bare table node (same fill/scroll, e.g. inside a scrollBody=false modal).\n // Multi-field maps keep the labelled/bordered section layout below.\n const unwrapsSingleTable =\n inlineFields.length === 0 &&\n blockFields.length === 1 &&\n blockFields[0]?.value.kind === \"table\";\n\n if (unwrapsSingleTable) {\n return <ClickyNodeRenderer node={blockFields[0]!.value} />;\n }\n\n return (\n <div className=\"space-y-density-4\">\n {inlineFields.length > 0 && (\n <dl className=\"grid gap-density-3 md:grid-cols-2\">\n {inlineFields.map((field) => (\n <div key={field.name}>\n <dt className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {field.label || prettifyName(field.name)}\n </dt>\n <dd className=\"mt-1 text-sm text-foreground\">\n <ClickyNodeRenderer node={field.value} />\n </dd>\n </div>\n ))}\n </dl>\n )}\n\n {blockFields.map((field) => (\n <section key={field.name} className=\"space-y-2\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {field.label || prettifyName(field.name)}\n </div>\n <div className=\"rounded-md border border-border bg-background p-density-3\">\n <ClickyNodeRenderer node={field.value} />\n </div>\n </section>\n ))}\n </div>\n );\n}\n\nfunction isPaginationMetadataField(field: ClickyField) {\n const name = (field.label || field.name || \"\").toLowerCase();\n if (name !== \"page\" || field.value.kind !== \"map\") return false;\n const keys = new Set(\n (field.value.fields ?? []).map((item) => item.name.toLowerCase()),\n );\n return keys.has(\"limit\") && keys.has(\"offset\") && keys.has(\"total\");\n}\n\nfunction ClickyTableNode({ node }: { node: ClickyNode }) {\n return (\n <ClickyTable\n columns={node.columns ?? []}\n rows={node.rows ?? []}\n {...(node.autoFilter !== undefined\n ? { autoFilter: node.autoFilter }\n : {})}\n />\n );\n}\n\nexport function ClickyTable({\n columns,\n rows,\n autoFilter,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n search,\n timeRange,\n externalFilters,\n cellFilters,\n onCellFilterChange,\n pagination,\n rowSelection,\n menuActions,\n}: ClickyTableProps) {\n const runtime = useContext(ClickyRuntimeContext);\n const rowClick = onTableRowClick ?? runtime.onTableRowClick;\n const rowHref = getTableRowHref ?? runtime.getTableRowHref;\n const rowClickable = isTableRowClickable ?? runtime.isTableRowClickable;\n const effectiveSearch = search ?? runtime.tableSearch;\n const effectiveTimeRange = timeRange ?? runtime.tableTimeRange;\n const effectiveExternalFilters =\n externalFilters ?? runtime.tableExternalFilters;\n const effectiveCellFilters = cellFilters ?? runtime.tableCellFilters;\n const effectiveCellFilterChange =\n onCellFilterChange ?? runtime.onTableCellFilterChange;\n const effectivePagination = pagination ?? runtime.tablePagination;\n const effectiveRowSelection = rowSelection ?? runtime.tableRowSelection;\n const effectiveMenuActions = menuActions ?? runtime.tableMenuActions;\n\n if (columns.length === 0) {\n return <div className=\"text-sm text-muted-foreground\">No data</div>;\n }\n\n if (shouldRenderRowsAsCollapsedStructs(columns, rows)) {\n return <ClickyCollapsedStructRows columns={columns} rows={rows} />;\n }\n\n const tableColumns: DataTableColumn<ClickyRow>[] = columns.map((column) => {\n const tagColumn = isClickyTagColumn(column);\n const keyValueColumn = isClickyKeyValueColumn(column);\n const jsonColumn = column.type === \"json\";\n const base: DataTableColumn<ClickyRow> = {\n key: `cells.${column.name}`,\n accessor: (row) => row.cells[column.name],\n label: column.header ? (\n <ClickyNodeRenderer node={column.header} />\n ) : (\n column.label || prettifyName(column.name)\n ),\n ...(column.align ? { align: column.align } : {}),\n ...(column.sortable !== undefined ? { sortable: column.sortable } : {}),\n ...(column.filterable !== undefined\n ? { filterable: column.filterable }\n : {}),\n ...(column.filterKey ? { filterKey: column.filterKey } : {}),\n serverFilterValue: (value) => {\n const node = value as ClickyNode;\n return node.filterValue ?? clickyNodeText(node);\n },\n serverFilterLabel: (value) => clickyNodeText(value as ClickyNode),\n ...(column.grow !== undefined ? { grow: column.grow } : {}),\n ...(column.shrink !== undefined ? { shrink: column.shrink } : {}),\n };\n if (keyValueColumn) {\n return {\n ...base,\n kind: \"tags\",\n render: (value) => <ClickyKeyValueCell node={value as ClickyNode} />,\n sortValue: (value) => clickyKeyValueText(value as ClickyNode),\n filterValue: (value) => clickyKeyValueTokens(value as ClickyNode),\n };\n }\n\n if (jsonColumn) {\n return {\n ...base,\n render: (value) => <ClickyJSONCell node={value as ClickyNode} />,\n sortValue: (value) => clickyJSONText(value as ClickyNode),\n filterValue: (value) => clickyJSONText(value as ClickyNode),\n };\n }\n\n if (tagColumn) {\n return {\n ...base,\n kind: \"tags\",\n render: (value) => {\n const tags = clickyNodeTags(value as ClickyNode, column);\n return <TagList tags={tags} maxVisible={3} />;\n },\n sortValue: (value) =>\n clickyNodeTags(value as ClickyNode, column).length,\n filterValue: (value) =>\n clickyNodeTags(value as ClickyNode, column).map((tag) => tag.token),\n };\n }\n\n return {\n ...base,\n ...(column.kind ? { kind: column.kind } : {}),\n render: (value) => <ClickyNodeRenderer node={value as ClickyNode} />,\n sortValue: (value) => clickyNodeText(value as ClickyNode),\n filterValue: (value) => clickyNodeText(value as ClickyNode),\n };\n });\n\n const defaultSortColumn =\n columns.find((column) => column.sortable !== false) ?? columns[0];\n\n // Fill a bounded flex-column parent (e.g. a scrollBody=false modal) so the\n // table's own scroll region scrolls rather than the whole dialog; `flex-1` is\n // inert in an unbounded/block parent, so page-level tables size to content.\n return (\n <DataTable<ClickyRow>\n className=\"min-h-0 flex-1\"\n data={rows}\n columns={tableColumns}\n {...(autoFilter !== undefined ? { autoFilter } : {})}\n {...(defaultSortColumn\n ? {\n defaultSort: {\n key: `cells.${defaultSortColumn.name}`,\n dir: \"asc\" as const,\n },\n }\n : {})}\n getRowId={(row, index) =>\n effectiveRowSelection?.getRowId(row, index) ??\n `${index}-${columns\n .map((column) => clickyNodeText(row.cells[column.name]))\n .filter(Boolean)\n .join(\"|\")}`\n }\n {...(effectiveRowSelection\n ? { rowSelection: effectiveRowSelection }\n : {})}\n {...(rowClick ? { onRowClick: rowClick } : {})}\n {...(rowHref ? { getRowHref: rowHref } : {})}\n {...(rowClick && (rowClickable || rowHref)\n ? {\n isRowClickable: rowClickable ?? ((row) => Boolean(rowHref?.(row))),\n }\n : {})}\n {...(effectiveSearch ? { externalSearch: effectiveSearch } : {})}\n {...(effectiveTimeRange ? { externalTimeRange: effectiveTimeRange } : {})}\n {...(effectiveExternalFilters\n ? { externalFilters: effectiveExternalFilters }\n : {})}\n {...(effectiveCellFilters ? { cellFilters: effectiveCellFilters } : {})}\n {...(effectiveCellFilterChange\n ? { onCellFilterChange: effectiveCellFilterChange }\n : {})}\n {...(effectivePagination ? { pagination: effectivePagination } : {})}\n {...(effectiveMenuActions ? { menuActions: effectiveMenuActions } : {})}\n />\n );\n}\n\nfunction ClickyCollapsedStructRows({\n columns,\n rows,\n}: {\n columns: ClickyColumn[];\n rows: ClickyRow[];\n}) {\n return (\n <div className=\"space-y-2\">\n {rows.map((row, index) => {\n const label = rowStructLabel(row, columns, index);\n const content = rowAsMap(row, columns);\n\n return (\n <details\n key={rowStructKey(row, columns, index)}\n className=\"rounded-md border border-border bg-background\"\n >\n <summary className=\"cursor-pointer px-3 py-2 text-sm font-medium text-foreground\">\n {label}\n </summary>\n <div className=\"border-t border-border p-3\">\n <ClickyMap node={content} />\n </div>\n </details>\n );\n })}\n </div>\n );\n}\n\nfunction shouldRenderRowsAsCollapsedStructs(\n columns: ClickyColumn[],\n rows: ClickyRow[],\n) {\n if (rows.length === 0) return false;\n if (\n columns.some(\n (column) => isClickyKeyValueColumn(column) || column.type === \"json\",\n )\n ) {\n return false;\n }\n\n return rows.every((row) => {\n const cells = columns\n .map((column) => row.cells[column.name])\n .filter(Boolean);\n if (cells.length === 0) return false;\n\n const complexCells = cells.filter(isStructCellNode);\n return complexCells.length > 0 && complexCells.length === cells.length;\n });\n}\n\nfunction isClickyTagColumn(column: ClickyColumn) {\n if (column.kind === \"tags\") return true;\n\n const normalized = column.name.toLowerCase();\n return /(^|[._-])(tags?|labels?|annotations?)$/.test(normalized);\n}\n\nfunction isClickyKeyValueColumn(column: ClickyColumn) {\n return column.type === \"key_value\" || column.type === \"key_values\";\n}\n\ntype ClickyKeyValuePair = {\n key: string;\n value: ClickyNode;\n};\n\nfunction ClickyKeyValueCell({ node }: { node: ClickyNode | undefined }) {\n const pairs = clickyNodeKeyValues(node);\n if (pairs.length === 0) {\n const fallback = clickyNodeText(node).trim();\n return fallback ? (\n <span className=\"text-sm text-foreground\">{fallback}</span>\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n );\n }\n\n return (\n <dl className=\"grid grid-cols-[max-content_minmax(0,1fr)] gap-x-2 gap-y-1 text-xs\">\n {pairs.map((pair, index) => (\n <Fragment key={`${pair.key}-${index}`}>\n <dt className=\"font-medium text-muted-foreground\">{pair.key}</dt>\n <dd className=\"min-w-0 break-words text-foreground\">\n <ClickyNodeRenderer node={pair.value} />\n </dd>\n </Fragment>\n ))}\n </dl>\n );\n}\n\nfunction ClickyJSONCell({ node }: { node: ClickyNode | undefined }) {\n const value = clickyNodeJSONValue(node);\n return (\n <div\n className=\"max-h-40 min-w-40 max-w-xl overflow-auto text-xs\"\n onClick={(event) => event.stopPropagation()}\n >\n <JsonView data={value} defaultOpenDepth={0} />\n </div>\n );\n}\n\nfunction clickyNodeKeyValues(\n node: ClickyNode | undefined,\n): ClickyKeyValuePair[] {\n if (!node) return [];\n if (node.kind === \"map\") return clickyFieldsToKeyValues(node.fields ?? []);\n if (node.kind === \"list\") {\n return (node.items ?? []).flatMap((item) => clickyNodeKeyValues(item));\n }\n\n const source = node.kind === \"code\" ? node.source : (node.text ?? node.plain);\n if (!source) return [];\n try {\n return unknownToKeyValues(JSON.parse(source) as unknown);\n } catch {\n return [];\n }\n}\n\nfunction clickyFieldsToKeyValues(fields: ClickyField[]): ClickyKeyValuePair[] {\n const keyField = fields.find((field) => /^(key|name)$/i.test(field.name));\n const valueField = fields.find((field) => /^value$/i.test(field.name));\n if (keyField && valueField) {\n const key = clickyNodeText(keyField.value).trim();\n if (key) return [{ key, value: valueField.value }];\n }\n return fields.map((field) => ({\n key: field.label || field.name,\n value: field.value,\n }));\n}\n\nfunction unknownToKeyValues(value: unknown): ClickyKeyValuePair[] {\n if (Array.isArray(value)) return value.flatMap(unknownToKeyValues);\n if (!value || typeof value !== \"object\") return [];\n\n const object = value as Record<string, unknown>;\n const keyName = Object.keys(object).find((key) => /^(key|name)$/i.test(key));\n const valueName = Object.keys(object).find((key) => /^value$/i.test(key));\n if (keyName && valueName && typeof object[keyName] === \"string\") {\n return [\n {\n key: object[keyName],\n value: unknownToClickyNode(object[valueName]),\n },\n ];\n }\n\n return Object.keys(object)\n .sort((left, right) => left.localeCompare(right))\n .map((key) => ({ key, value: unknownToClickyNode(object[key]) }));\n}\n\nfunction unknownToClickyNode(value: unknown): ClickyNode {\n if (Array.isArray(value)) {\n return {\n kind: \"list\",\n plain: JSON.stringify(value),\n items: value.map(unknownToClickyNode),\n };\n }\n if (value && typeof value === \"object\") {\n const object = value as Record<string, unknown>;\n return {\n kind: \"map\",\n plain: JSON.stringify(value),\n fields: Object.keys(object)\n .sort((left, right) => left.localeCompare(right))\n .map((key) => ({ name: key, value: unknownToClickyNode(object[key]) })),\n };\n }\n const text = value === null ? \"null\" : String(value ?? \"\");\n return { kind: \"text\", text, plain: text };\n}\n\nfunction clickyKeyValueTokens(node: ClickyNode | undefined) {\n return clickyNodeKeyValues(node)\n .map((pair) => `${pair.key}=${clickyNodeCanonicalText(pair.value)}`)\n .filter((token) => !token.endsWith(\"=\"));\n}\n\nfunction clickyKeyValueText(node: ClickyNode | undefined) {\n return clickyKeyValueTokens(node).join(\", \");\n}\n\nfunction clickyNodeCanonicalText(node: ClickyNode | undefined) {\n const text = clickyNodeText(node).trim();\n if (text) return text;\n const value = clickyNodeJSONValue(node);\n return value === undefined ? \"\" : JSON.stringify(value);\n}\n\nfunction clickyNodeJSONValue(node: ClickyNode | undefined): unknown {\n if (!node) return undefined;\n if (node.kind === \"map\") {\n return Object.fromEntries(\n (node.fields ?? []).map((field) => [\n field.name,\n clickyNodeJSONValue(field.value),\n ]),\n );\n }\n if (node.kind === \"list\") {\n return (node.items ?? []).map(clickyNodeJSONValue);\n }\n const source =\n node.kind === \"code\"\n ? (node.source ?? node.plain)\n : (node.text ?? node.plain);\n if (source === undefined) return clickyNodeText(node);\n try {\n return JSON.parse(source) as unknown;\n } catch {\n return source;\n }\n}\n\nfunction clickyJSONText(node: ClickyNode | undefined) {\n const value = clickyNodeJSONValue(node);\n return value === undefined ? \"\" : JSON.stringify(value);\n}\n\nfunction clickyNodeTags(\n node: ClickyNode | undefined,\n column: ClickyColumn,\n): NormalizedTag[] {\n if (!isClickyTagColumn(column)) return [];\n\n const value = clickyNodeTagsValue(node);\n return normalizeTags(value);\n}\n\nfunction clickyNodeTagsValue(node: ClickyNode | undefined): TagsValue {\n if (!node) return [];\n\n if (node.kind === \"map\" && node.fields?.length) {\n return Object.fromEntries(\n node.fields\n .map((field) => [field.name, clickyNodeText(field.value)] as const)\n .filter(([, value]) => value.trim() !== \"\"),\n );\n }\n\n if (node.kind === \"list\" && node.items?.length) {\n return node.items.map((item) => clickyNodeText(item)).filter(Boolean);\n }\n\n const text = clickyNodeText(node).trim();\n if (!text) return [];\n\n return text\n .split(/[,\\s]+/)\n .map((value) => value.trim())\n .filter(Boolean);\n}\n\nfunction isStructCellNode(node: ClickyNode | undefined) {\n if (!node) return false;\n if (node.kind === \"map\") return (node.fields ?? []).length > 0;\n if (node.kind === \"table\") return (node.rows ?? []).length > 0;\n if (node.kind !== \"list\") return false;\n\n const items = node.items ?? [];\n return items.length > 0 && items.every(isStructCellNode);\n}\n\nfunction rowAsMap(row: ClickyRow, columns: ClickyColumn[]): ClickyNode {\n return {\n kind: \"map\",\n fields: columns.flatMap((column) => {\n const value = row.cells[column.name];\n if (!value) return [];\n return [\n {\n name: column.name,\n label:\n clickyNodeText(column.header) ||\n column.label ||\n prettifyName(column.name),\n value,\n },\n ];\n }),\n };\n}\n\nfunction rowStructLabel(\n row: ClickyRow,\n columns: ClickyColumn[],\n index: number,\n) {\n const entityLabel = singularizeLabel(\n columns.find((column) => hasMeaningfulText(row.cells[column.name]))\n ?.label ??\n columns[0]?.label ??\n columns[0]?.name ??\n \"Item\",\n );\n const title = rowTitle(row, columns);\n return title\n ? `${entityLabel} ${index + 1}: ${title}`\n : `${entityLabel} ${index + 1}`;\n}\n\nfunction rowStructKey(row: ClickyRow, columns: ClickyColumn[], index: number) {\n const title = rowTitle(row, columns);\n return `${index}-${title || columns.map((column) => clickyNodeText(row.cells[column.name])).join(\"|\")}`;\n}\n\nfunction rowTitle(row: ClickyRow, columns: ClickyColumn[]) {\n const preferredFieldNames = [\n \"name\",\n \"title\",\n \"agreementname\",\n \"companyname\",\n \"customernumber\",\n \"id\",\n \"guid\",\n ];\n\n for (const preferred of preferredFieldNames) {\n for (const column of columns) {\n const candidate = findFieldText(row.cells[column.name], preferred);\n if (candidate) return candidate;\n }\n }\n\n for (const column of columns) {\n const candidate = clickyNodeText(row.cells[column.name]).trim();\n if (candidate) return candidate;\n }\n\n return \"\";\n}\n\nfunction findFieldText(\n node: ClickyNode | undefined,\n preferredName: string,\n): string {\n if (!node) return \"\";\n\n if (node.kind === \"map\") {\n for (const field of node.fields ?? []) {\n if (normalizeFieldName(field.name) === preferredName) {\n const text = clickyNodeText(field.value).trim();\n if (text) return text;\n }\n }\n }\n\n for (const field of node.fields ?? []) {\n const text = findFieldText(field.value, preferredName);\n if (text) return text;\n }\n\n for (const item of node.items ?? []) {\n const text = findFieldText(item, preferredName);\n if (text) return text;\n }\n\n return \"\";\n}\n\nfunction hasMeaningfulText(node: ClickyNode | undefined) {\n return Boolean(\n clickyNodeText(node).trim() || (node?.fields ?? []).length > 0,\n );\n}\n\nfunction normalizeFieldName(name: string) {\n return name.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction singularizeLabel(label: string) {\n const normalized = prettifyName(label).trim();\n return normalized.endsWith(\"s\") ? normalized.slice(0, -1) : normalized;\n}\n\nfunction ClickyTreeNode({ node }: { node: ClickyNode }) {\n const roots = node.roots ?? [];\n if (roots.length === 0) return null;\n\n return (\n <Tree<ClickyTreeItem>\n roots={roots}\n getChildren={(item) => item.children}\n getKey={(item) => item.id}\n defaultOpen={(_, depth) => depth < 1}\n renderRow={({ node: item }) => (\n <div className=\"min-w-0 flex-1 truncate\">\n <ClickyNodeRenderer node={item.label} />\n </div>\n )}\n />\n );\n}\n\nfunction isBadgeShape(value: string | undefined): value is BadgeShape {\n return value === \"pill\" || value === \"rounded\" || value === \"square\";\n}\n\nfunction ClickyBadgeNode({ node }: { node: ClickyNode }) {\n const props: ComponentProps<typeof Badge> = { variant: \"label\" };\n if (node.badgeLabel !== undefined) props.label = node.badgeLabel;\n if (node.badgeValue !== undefined) props.value = node.badgeValue;\n if (node.badgeColor !== undefined) props.color = node.badgeColor;\n if (node.badgeText !== undefined) props.textColor = node.badgeText;\n if (node.badgeIcon !== undefined) props.icon = node.badgeIcon;\n if (isBadgeShape(node.badgeShape)) props.shape = node.badgeShape;\n return <Badge {...props} />;\n}\n\nfunction ClickyStackTraceNode({ node }: { node: ClickyNode }) {\n const input = {\n causedBy: node.causedBy ?? [],\n frames: node.frames ?? [],\n language: \"java\" as const,\n ...(node.exceptionClass !== undefined\n ? { exceptionClass: node.exceptionClass }\n : {}),\n ...(node.message !== undefined ? { message: node.message } : {}),\n };\n\n return <StackTrace input={input} className=\"space-y-1\" />;\n}\n\nfunction ClickyCollapsed({ node }: { node: ClickyNode }) {\n return (\n <details className=\"rounded-md border border-border bg-background\">\n <summary className=\"cursor-pointer px-3 py-2 text-sm font-medium text-foreground\">\n <ClickyNodeRenderer node={node.label} />\n </summary>\n {node.content && (\n <div className=\"border-t border-border px-3 py-3\">\n <ClickyNodeRenderer node={node.content} />\n </div>\n )}\n </details>\n );\n}\n\nfunction ClickyButtonNode({ node }: { node: ClickyNode }) {\n const title = [node.id, node.payload].filter(Boolean).join(\"\\n\") || undefined;\n const content = node.label ? (\n <ClickyNodeRenderer node={node.label} />\n ) : (\n node.text\n );\n\n if (node.href) {\n return (\n <a\n href={node.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title={title}\n className=\"inline-flex items-center rounded-md border border-border bg-background px-3 py-1.5 text-sm font-medium text-foreground hover:bg-accent\"\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n title={title}\n className=\"inline-flex items-center rounded-md border border-border bg-muted px-3 py-1.5 text-sm font-medium text-foreground\"\n >\n {content}\n </button>\n );\n}\n\nfunction ClickyButtonGroup({ node }: { node: ClickyNode }) {\n const items = node.items ?? [];\n if (items.length === 0) return null;\n\n return (\n <div className=\"flex flex-wrap gap-2\">\n {items.map((item, index) => (\n <ClickyNodeRenderer key={index} node={item} />\n ))}\n </div>\n );\n}\n\nfunction ClickyHtmlNode({ node }: { node: ClickyNode }) {\n const sanitized = sanitizeHtml(node.html ?? \"\");\n if (!sanitized) return null;\n\n const Tag = isBlockHtml(sanitized) ? \"div\" : \"span\";\n return <Tag dangerouslySetInnerHTML={{ __html: sanitized }} />;\n}\n\nfunction toInlineStyle(\n style?: ClickyStyle,\n text?: string,\n): CSSProperties | undefined {\n if (!style)\n return text?.includes(\"\\n\") ? { whiteSpace: \"pre-wrap\" } : undefined;\n\n const inlineStyle: CSSProperties = {};\n\n if (style.color) inlineStyle.color = style.color;\n if (style.backgroundColor)\n inlineStyle.backgroundColor = style.backgroundColor;\n if (style.bold) inlineStyle.fontWeight = 700;\n if (style.faint) inlineStyle.opacity = 0.7;\n if (style.italic) inlineStyle.fontStyle = \"italic\";\n\n const decorations: string[] = [];\n if (style.underline) decorations.push(\"underline\");\n if (style.strikethrough) decorations.push(\"line-through\");\n if (decorations.length > 0)\n inlineStyle.textDecoration = decorations.join(\" \");\n\n if (\n style.textTransform === \"uppercase\" ||\n style.textTransform === \"lowercase\" ||\n style.textTransform === \"capitalize\"\n ) {\n inlineStyle.textTransform = style.textTransform;\n }\n\n if (style.maxWidth && style.maxWidth > 0) {\n inlineStyle.maxWidth = `${style.maxWidth}ch`;\n }\n\n if (style.maxLines && style.maxLines > 0) {\n inlineStyle.display = \"-webkit-box\";\n inlineStyle.overflow = \"hidden\";\n inlineStyle.WebkitLineClamp = style.maxLines;\n inlineStyle.WebkitBoxOrient = \"vertical\";\n inlineStyle.whiteSpace = \"pre-wrap\";\n }\n\n if (\n style.truncateMode === \"suffix\" &&\n style.maxWidth &&\n (!style.maxLines || style.maxLines <= 1)\n ) {\n inlineStyle.overflow = \"hidden\";\n inlineStyle.textOverflow = \"ellipsis\";\n inlineStyle.whiteSpace = \"nowrap\";\n inlineStyle.display = \"inline-block\";\n inlineStyle.verticalAlign = \"bottom\";\n }\n\n if (style.monospace) {\n inlineStyle.fontFamily =\n 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace';\n }\n\n if (!inlineStyle.whiteSpace && text?.includes(\"\\n\")) {\n inlineStyle.whiteSpace = \"pre-wrap\";\n }\n\n return Object.keys(inlineStyle).length > 0 ? inlineStyle : undefined;\n}\n\nfunction prettifyName(name: string): string {\n return name\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .replace(/_/g, \" \")\n .replace(/\\b\\w/g, (value) => value.toUpperCase());\n}\n\nfunction clickyNodeToCommandRequest(node: ClickyNode): ClickyCommandRequest {\n return {\n command: node.command ?? \"\",\n args: node.args ?? [],\n flags: node.flags ?? {},\n target: node.target ?? \"Dialog\",\n autoRun: node.autoRun ?? false,\n };\n}\n\nfunction resolveClickyCommand(\n request: ClickyCommandRequest,\n runtime: ClickyCommandRuntime | undefined,\n operations: ResolvedOperation[],\n): ClickyResolvedCommand {\n const resolved =\n runtime?.resolveCommand?.(request, operations) ??\n defaultResolveClickyCommand(request, operations);\n return { request, operation: resolved };\n}\n\nfunction defaultResolveClickyCommand(\n request: ClickyCommandRequest,\n operations: ResolvedOperation[],\n): ResolvedOperation | undefined {\n const wanted = normalizeCommandPath(request.command);\n if (!wanted) return undefined;\n\n return operations.find((operation) => {\n const metaCommand = normalizeCommandPath(\n operation.operation[\"x-clicky\"]?.command,\n );\n if (metaCommand && metaCommand === wanted) {\n return true;\n }\n\n const operationId = normalizeCommandPath(\n operation.operation.operationId?.replaceAll(\"_\", \"/\"),\n );\n return operationId === wanted;\n });\n}\n\nfunction normalizeCommandPath(value: string | undefined) {\n return (value ?? \"\")\n .trim()\n .replace(/^\\//, \"\")\n .replace(/\\s+/g, \"/\")\n .replace(/\\/+/g, \"/\")\n .toLowerCase();\n}\n\nfunction buildCommandParameterValues(\n parameters: OpenAPIParameter[],\n request: ClickyCommandRequest,\n): ParameterValues {\n const values: ParameterValues = { ...request.flags };\n const args = [...(request.args ?? [])];\n const positionalParams = parameters.filter((param) =>\n isPositionalParam(param),\n );\n let argIndex = 0;\n\n for (const param of positionalParams) {\n if (param.name === \"args\") {\n const remaining = args.slice(argIndex);\n if (remaining.length > 0) {\n values.args = remaining.join(\",\");\n }\n argIndex = args.length;\n continue;\n }\n\n if (argIndex < args.length) {\n values[param.name] = args[argIndex] ?? \"\";\n argIndex += 1;\n }\n }\n\n return values;\n}\n\nfunction missingRequiredParameters(\n parameters: OpenAPIParameter[],\n values: ParameterValues,\n) {\n return parameters.filter(\n (param) => param.required && (values[param.name] ?? \"\").trim() === \"\",\n );\n}\n\nasync function executeClickyCommand(\n client: OperationsApiClient,\n operation: ResolvedOperation,\n values: ParameterValues,\n) {\n return client.executeCommand(\n operation.path,\n operation.method,\n packParameterValues(\n pruneParameterValues(values),\n operation.operation.parameters ?? [],\n ),\n { Accept: \"application/json+clicky\" },\n );\n}\n\nfunction buildCommandExecutionHref(\n resolved: ClickyResolvedCommand,\n): string | undefined {\n const operation = resolved.operation;\n if (!operation) {\n return undefined;\n }\n\n const values = buildCommandParameterValues(\n operation.operation.parameters ?? [],\n resolved.request,\n );\n const params = packParameterValues(\n pruneParameterValues(values),\n operation.operation.parameters ?? [],\n );\n const url = substituteOperationPath(operation.path, params);\n\n if (operation.method.toUpperCase() !== \"GET\") {\n return url;\n }\n\n return url;\n}\n\nfunction substituteOperationPath(path: string, params: Record<string, string>) {\n const url = new URL(path, \"http://localhost\");\n const remaining = { ...params };\n\n for (const [key, value] of Object.entries(params)) {\n if (url.pathname.includes(`{${key}}`)) {\n url.pathname = url.pathname.replace(\n `{${key}}`,\n encodeURIComponent(value),\n );\n delete remaining[key];\n }\n }\n\n for (const [key, value] of Object.entries(remaining)) {\n url.searchParams.set(key, value);\n }\n\n return `${url.pathname}${url.search}`;\n}\n\nfunction browserAnchorTarget(target: ClickyLinkTarget | undefined) {\n if (target === \"_self\") {\n return \"_self\";\n }\n\n if (target === \"_window\" || target === \"_tab\") {\n return \"_blank\";\n }\n\n return undefined;\n}\n\nfunction isExecutionResponse(value: unknown): value is ExecutionResponse {\n return (\n value != null &&\n typeof value === \"object\" &&\n (\"stdout\" in value || \"output\" in value || \"message\" in value)\n );\n}\n\nfunction clickyNodeText(node: ClickyNode | null | undefined): string {\n if (!node) return \"\";\n if (node.kind === \"heading\" || node.kind === \"blockquote\") {\n return clickyNodeText(node.content) || node.plain || \"\";\n }\n if (node.kind === \"admonition\") {\n return (\n [clickyNodeText(node.label), clickyNodeText(node.content)]\n .filter(Boolean)\n .join(\" \") ||\n node.plain ||\n \"\"\n );\n }\n if (node.kind === \"footnote-ref\") {\n return node.id ? `[^${node.id}]` : node.plain || \"\";\n }\n if (node.kind === \"footnote\")\n return clickyNodeText(node.content) || node.plain || \"\";\n if (node.kind === \"footnotes\") {\n return (\n (node.items ?? []).map((item) => clickyNodeText(item)).join(\" \") ||\n node.plain ||\n \"\"\n );\n }\n if (node.plain) return node.plain;\n if (node.text) return node.text;\n if (node.kind === \"html\")\n return sanitizeHtml(node.html ?? \"\")\n .replace(/<[^>]+>/g, \" \")\n .trim();\n if (node.kind === \"code\") return node.source ?? \"\";\n if (\n (node.kind === \"link\" || node.kind === \"link-command\") &&\n node.children?.length\n ) {\n return [\n node.text,\n ...node.children.map((child) => clickyNodeText(child)),\n ].join(\"\");\n }\n if (node.kind === \"button\" && node.label) return clickyNodeText(node.label);\n if (node.kind === \"button-group\") {\n return (node.items ?? []).map((item) => clickyNodeText(item)).join(\" \");\n }\n if (node.kind === \"text\" && node.children?.length) {\n return [\n node.text,\n ...node.children.map((child) => clickyNodeText(child)),\n ].join(\"\");\n }\n // A container's text is its contents. Deriving it here is what lets the\n // producer stop shipping a second, pre-rendered copy of every container it\n // sends: a list that carries `plain` still uses it (the check above wins), and\n // one that does not is walked instead of coming back empty.\n if (node.kind === \"list\" && node.items?.length) {\n return node.items.map((item) => clickyNodeText(item)).join(\" \");\n }\n if (node.kind === \"map\" && node.fields?.length) {\n return node.fields\n .map((field) => {\n const value = clickyNodeText(field.value);\n const label = field.label ?? field.name;\n return label ? `${label}: ${value}` : value;\n })\n .join(\" \");\n }\n if (node.kind === \"tree\" && node.roots?.length) {\n const walk = (branch: ClickyTreeItem): string =>\n [\n clickyNodeText(branch.label),\n ...(branch.children ?? []).map((child) => walk(child)),\n ]\n .filter(Boolean)\n .join(\" \");\n return node.roots.map((root) => walk(root)).join(\" \");\n }\n if (node.kind === \"table\" && node.rows?.length) {\n return node.rows\n .map((row) =>\n Object.values(row.cells ?? {})\n .map((cell) => clickyNodeText(cell))\n .filter(Boolean)\n .join(\" \"),\n )\n .filter(Boolean)\n .join(\" \");\n }\n return \"\";\n}\n\nfunction isInlineNode(node: ClickyNode): boolean {\n return (\n node.kind === \"text\" ||\n node.kind === \"link\" ||\n node.kind === \"link-command\" ||\n node.kind === \"icon\" ||\n node.kind === \"html\" ||\n node.kind === \"footnote-ref\" ||\n node.kind === \"badge\" ||\n node.kind === \"button\" ||\n node.kind === \"button-group\"\n );\n}\n"],"names":["Fragment","_b","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Clicky.js","sources":["../../src/data/Clicky.tsx"],"sourcesContent":["import {\n QueryClient,\n QueryClientContext,\n QueryClientProvider,\n useQuery,\n} from \"@tanstack/react-query\";\nimport {\n createContext,\n Fragment,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentProps,\n type CSSProperties,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { FilterForm } from \"../rpc/FilterForm\";\nimport { errorFromResponse, readResponseBody } from \"../rpc/apiClient\";\nimport { renderOperationError } from \"../rpc/operationErrorDiagnostics\";\nimport { parseJsonBody } from \"../rpc/classify\";\nimport {\n packParameterValues,\n pruneParameterValues,\n type ParameterValues,\n} from \"../rpc/formMetadata\";\nimport {\n type ExecutionResponse,\n isPositionalParam,\n type OpenAPIParameter,\n type OperationRequestValues,\n type ResolvedOperation,\n} from \"../rpc/types\";\nimport { type OperationsApiClient, useOperations } from \"../rpc/useOperations\";\nimport { cn } from \"../lib/utils\";\nimport {\n DataTable,\n type DataTableColumn,\n type DataTableInfinite,\n type DataTableMenuAction,\n type DataTablePagination,\n type DataTableRowSelection,\n} from \"./DataTable\";\nimport type {\n FilterBarFilter,\n FilterBarRangeProps,\n FilterBarSearchProps,\n} from \"../components/FilterBar\";\nimport type {\n CellFilterChange,\n CellFilterMode,\n} from \"./cells/CellFilterActions\";\nimport { calloutVariantStyles, type CalloutVariant } from \"./callout-tones\";\nimport { Tree } from \"./Tree\";\nimport { ObjectGraph, type ObjectGraphNode } from \"./ObjectGraph\";\nimport { ExecutionTree, type ExecutionNode } from \"./ExecutionTree\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport {\n UiCheck,\n UiCloudDownload,\n UiComment,\n UiEllipsis,\n UiEye,\n UiFileCode,\n UiFileSpreadsheet,\n UiFileText,\n UiJson,\n UiMarkdown,\n UiTable,\n} from \"../icons\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { JsonView } from \"./JsonView\";\nimport { isBlockHtml, sanitizeHtml } from \"./html-utils\";\nimport { StackTrace } from \"./diagnostics/RenderedStackTrace\";\nimport type { ParsedStackFrame } from \"./diagnostics/stacktrace-parse\";\nimport { Badge, type BadgeShape } from \"./Badge\";\nimport { HoverCard } from \"../overlay/HoverCard\";\nimport { Modal } from \"../overlay/Modal\";\nimport { useEscapeLayer } from \"../overlay/modalStack\";\nimport { TagList } from \"./cells/TagList\";\nimport {\n normalizeTags,\n type NormalizedTag,\n type TagsValue,\n} from \"./cells/tag-utils\";\nimport { parseClickyData, type ParsedClicky } from \"./clicky-parse\";\nimport { useQueryInfo } from \"./query-info/useQueryInfo\";\nimport { useClickyExport } from \"./clicky-export/useClickyExport\";\nimport {\n ClickyExportDialog,\n type ClickyExportFormatOption,\n type ClickyExportScopeOption,\n} from \"./clicky-export/ClickyExportDialog\";\nimport type { SortState } from \"../hooks/use-sort\";\n\nexport type ClickyStyle = {\n className?: string;\n color?: string;\n backgroundColor?: string;\n bold?: boolean;\n faint?: boolean;\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n textTransform?: string;\n maxWidth?: number;\n maxLines?: number;\n truncateMode?: \"suffix\" | \"prefix\" | \"headtail\";\n monospace?: boolean;\n};\n\nexport type ClickyField = {\n name: string;\n label?: string;\n value: ClickyNode;\n};\n\nexport type ClickyColumn = {\n name: string;\n label?: string;\n type?: string;\n format?: string;\n unit?: string;\n header?: ClickyNode;\n align?: \"left\" | \"right\" | \"center\";\n sortable?: boolean;\n /** Public server-side sort key for this column. */\n sortKey?: string;\n filterable?: boolean;\n filterKey?: string;\n grow?: boolean;\n shrink?: boolean;\n kind?: \"timestamp\" | \"tags\" | \"status\";\n};\n\nexport type ClickyRow = {\n cells: Record<string, ClickyNode>;\n detail?: ClickyNode;\n};\n\nexport type ClickyTreeItem = {\n id: string;\n label: ClickyNode;\n children?: ClickyTreeItem[];\n};\n\nexport type ClickyNode = {\n kind:\n | \"text\"\n | \"link\"\n | \"link-command\"\n | \"icon\"\n | \"list\"\n | \"map\"\n | \"table\"\n | \"tree\"\n | \"code\"\n | \"heading\"\n | \"blockquote\"\n | \"admonition\"\n | \"footnote-ref\"\n | \"footnote\"\n | \"footnotes\"\n | \"collapsed\"\n | \"stacktrace\"\n | \"button\"\n | \"button-group\"\n | \"html\"\n | \"comment\"\n | \"badge\"\n | \"object-graph\"\n | \"execution-tree\";\n plain?: string;\n filterValue?: string | number | boolean;\n style?: ClickyStyle;\n text?: string;\n children?: ClickyNode[];\n tooltip?: ClickyNode;\n html?: string;\n inline?: boolean;\n ordered?: boolean;\n unstyled?: boolean;\n bullet?: ClickyNode;\n items?: ClickyNode[];\n fields?: ClickyField[];\n columns?: ClickyColumn[];\n rows?: ClickyRow[];\n autoFilter?: boolean;\n roots?: ClickyTreeItem[];\n label?: ClickyNode;\n content?: ClickyNode;\n level?: number;\n severity?: string;\n href?: string;\n target?: ClickyLinkTarget;\n command?: string;\n args?: string[];\n flags?: Record<string, string>;\n autoRun?: boolean;\n id?: string;\n payload?: string;\n variant?: string;\n iconify?: string;\n unicode?: string;\n language?: string;\n source?: string;\n highlightedHtml?: string;\n exceptionClass?: string;\n message?: string;\n causedBy?: string[];\n frames?: ParsedStackFrame[];\n // LabelBadge fields, set when kind === \"badge\".\n badgeLabel?: string;\n badgeValue?: string;\n badgeColor?: string;\n badgeText?: string;\n badgeShape?: string;\n badgeIcon?: string;\n // Set when kind === \"object-graph\" / \"execution-tree\": the roots handed to the\n // dedicated <ObjectGraph> / <ExecutionTree> inspectors.\n objects?: ObjectGraphNode[];\n executionRoots?: ExecutionNode[];\n};\n\nexport type ClickyDocument = {\n version: 1;\n node: ClickyNode;\n};\n\nexport type ClickyLinkTarget =\n | \"Dialog\"\n | \"Hover\"\n | \"Expand\"\n | \"_clicky\"\n | \"_self\"\n | \"_window\"\n | \"_tab\";\n\nexport type ClickyCommandRequest = {\n command: string;\n args?: string[];\n flags?: Record<string, string>;\n target?: ClickyLinkTarget;\n autoRun?: boolean;\n};\n\nexport type ClickyResolvedCommand = {\n request: ClickyCommandRequest;\n operation: ResolvedOperation | undefined;\n};\n\nexport type ClickyCommandRuntime = {\n client: OperationsApiClient;\n resolveCommand?: (\n request: ClickyCommandRequest,\n operations: ResolvedOperation[],\n ) => ResolvedOperation | undefined;\n hrefForCommand?: (resolved: ClickyResolvedCommand) => string | undefined;\n onNavigate?: (resolved: ClickyResolvedCommand) => void;\n};\n\nexport type ClickyTableRowClick = (row: ClickyRow) => void;\nexport type ClickyTableRowHref = (row: ClickyRow) => string | undefined;\nexport type ClickyTableRowPredicate = (row: ClickyRow) => boolean;\n\nconst CLICKY_PRIMARY_VIEW_FORMATS = [\"clicky\", \"json\"] as const;\nconst CLICKY_OVERFLOW_VIEW_FORMATS = [\n \"pdf\",\n \"html\",\n \"markdown\",\n \"yaml\",\n \"csv\",\n \"pretty\",\n \"excel\",\n \"slack\",\n] as const;\nconst CLICKY_DOWNLOAD_FORMATS = [\n \"yaml\",\n \"json\",\n \"csv\",\n \"pdf\",\n \"markdown\",\n] as const;\n\nexport type ClickyPrimaryViewFormat =\n (typeof CLICKY_PRIMARY_VIEW_FORMATS)[number];\nexport type ClickyOverflowViewFormat =\n (typeof CLICKY_OVERFLOW_VIEW_FORMATS)[number];\nexport type ClickyRemoteFormat =\n | ClickyPrimaryViewFormat\n | ClickyOverflowViewFormat\n | \"ndjson\";\n\nexport type ClickyViewOptions = Partial<Record<ClickyRemoteFormat, boolean>>;\n\nexport type ClickyViewConfig = ClickyViewOptions | ClickyRemoteFormat[];\n\nexport type ClickyDownloadOptions = {\n /** Show all advertised download formats in the overflow menu. */\n all?: boolean;\n /** Override the download menu label. */\n label?: string;\n /** Formats advertised by the endpoint. Defaults to Clicky's legacy set. */\n formats?: ClickyRemoteFormat[];\n /** Result ranges advertised by the endpoint. Legacy endpoints omit this. */\n scopes?: ClickyDownloadScope[];\n /** Whether all-row export streams or uses a compatibility buffer. */\n allRowsMode?: \"streaming\" | \"buffered\";\n /** Per-format server row caps, for example `{ pdf: 1000 }`. */\n formatMaxRows?: Partial<Record<ClickyRemoteFormat, number>>;\n /** Prepare an export-specific resource before the native download starts. */\n prepare?: (request: {\n format: ClickyRemoteFormat;\n scope?: ClickyDownloadScope;\n }) => Promise<{ url: string; label?: string }>;\n};\n\nexport type ClickyDownloadScope = \"page\" | \"all\";\n\nexport type ClickyProps = {\n /** Clicky document, node, or JSON string to render. */\n data?: ClickyDocument | ClickyNode | string;\n /** Remote URL to fetch when `data` is not provided. */\n url?: string;\n /**\n * The format `data` is already in, when the caller fetched it from `url`\n * itself. That view then renders the payload in hand instead of asking the\n * endpoint for the same bytes a second time; every other view still fetches.\n * Without it `data` is a fallback that a fresh fetch replaces.\n */\n dataFormat?: ClickyRemoteFormat;\n /** Enabled remote view/download formats. */\n view?: ClickyViewConfig;\n /** Download menu configuration. */\n download?: ClickyDownloadOptions;\n /** Runtime used by link-command nodes. */\n commandRuntime?: ClickyCommandRuntime;\n /** Called when an embedded table row is clicked. */\n onTableRowClick?: ClickyTableRowClick;\n /** Optional href factory for embedded table rows. */\n getTableRowHref?: ClickyTableRowHref;\n /** Predicate controlling whether embedded table rows are clickable. */\n isTableRowClickable?: ClickyTableRowPredicate;\n /** Classes applied to the renderer root. */\n className?: string;\n // search, externalFilters and pagination flow through to the embedded\n // DataTable so operation pages can publish their query parameters as the\n // table's search box, native filter pills, and pagination footer without\n // re-implementing them per page.\n search?: FilterBarSearchProps;\n externalFilters?: FilterBarFilter[];\n cellFilters?: Record<string, Record<string, CellFilterMode>>;\n onCellFilterChange?: (change: CellFilterChange) => void;\n /** Time-range control published into the first embedded table's FilterBar. */\n timeRange?: FilterBarRangeProps;\n /** Pagination footer configuration for the first embedded table. */\n pagination?: DataTablePagination;\n /** Controlled public server sort state for the first embedded table. */\n sort?: SortState | null;\n onSortChange?: (sort: SortState | null) => void;\n /**\n * Server-driven infinite scroll for the first embedded table. `data` is\n * expected to already hold every page fetched so far, so this carries only\n * the question of whether to ask for another.\n */\n infinite?: DataTableInfinite;\n /** Controlled multi-row selection for the first embedded table. */\n rowSelection?: ClickyTableRowSelection;\n /** Shows the first embedded table's loading bar without replacing its rows. */\n loading?: boolean;\n};\n\nexport type ClickyNodeViewProps = {\n /** Node to render; null and undefined render nothing. */\n node: ClickyNode | null | undefined;\n};\n\nexport type ClickyTableProps = {\n /** Clicky table column definitions. */\n columns: ClickyColumn[];\n /** Clicky table rows. */\n rows: ClickyRow[];\n /** Enable generated filters for filterable columns. */\n autoFilter?: boolean | undefined;\n /** Called when a row is clicked. */\n onTableRowClick?: ClickyTableRowClick | undefined;\n /** Optional href factory for row links. */\n getTableRowHref?: ClickyTableRowHref | undefined;\n /** Predicate controlling whether a row is clickable. */\n isTableRowClickable?: ClickyTableRowPredicate | undefined;\n /** Dedicated search input rendered in the table's FilterBar. */\n search?: FilterBarSearchProps | undefined;\n /** Time-range control rendered in the table's FilterBar. */\n timeRange?: FilterBarRangeProps | undefined;\n /** Extra FilterBar controls rendered before generated filters. */\n externalFilters?: FilterBarFilter[] | undefined;\n cellFilters?: Record<string, Record<string, CellFilterMode>> | undefined;\n onCellFilterChange?: ((change: CellFilterChange) => void) | undefined;\n /** Pagination footer configuration. */\n pagination?: DataTablePagination | undefined;\n sort?: SortState | null | undefined;\n onSortChange?: ((sort: SortState | null) => void) | undefined;\n /** Server-driven infinite scroll over rows the caller has accumulated. */\n infinite?: DataTableInfinite | undefined;\n /** Controlled multi-row selection. */\n rowSelection?: ClickyTableRowSelection | undefined;\n /** Extra actions rendered in the table menu. */\n menuActions?: DataTableMenuAction[] | undefined;\n /** Shows the table loading bar without replacing existing rows. */\n loading?: boolean | undefined;\n};\n\nexport type ClickyTableRowSelection = DataTableRowSelection<ClickyRow> & {\n /** Stable Clicky row id used by the controlled selection. */\n getRowId: (row: ClickyRow, index: number) => string;\n};\n\ntype ClickyRemoteResponse =\n | { kind: \"text\"; text: string; contentType: string }\n | { kind: \"blob\"; blob: Blob; contentType: string };\n\ntype JsonTreeNode = {\n id: string;\n key: string;\n value: unknown;\n preview: string;\n children?: JsonTreeNode[];\n};\n\ntype ClickyRuntimeContextValue = {\n commandRuntime?: ClickyCommandRuntime | undefined;\n onTableRowClick?: ClickyTableRowClick | undefined;\n getTableRowHref?: ClickyTableRowHref | undefined;\n isTableRowClickable?: ClickyTableRowPredicate | undefined;\n // tableSearch + tableExternalFilters + tablePagination flow caller-owned\n // widgets into the FIRST ClickyTable rendered inside this runtime. The wiring\n // sits on the context rather than being threaded through every node so\n // OperationCommand page-style callers don't need to know how deep the table\n // is rendered.\n tableSearch?: FilterBarSearchProps | undefined;\n tableTimeRange?: FilterBarRangeProps | undefined;\n tableExternalFilters?: FilterBarFilter[] | undefined;\n tableCellFilters?: Record<string, Record<string, CellFilterMode>> | undefined;\n onTableCellFilterChange?: ((change: CellFilterChange) => void) | undefined;\n tablePagination?: DataTablePagination | undefined;\n tableSort?: SortState | null | undefined;\n onTableSortChange?: ((sort: SortState | null) => void) | undefined;\n tableInfinite?: DataTableInfinite | undefined;\n tableRowSelection?: ClickyTableRowSelection | undefined;\n tableMenuActions?: DataTableMenuAction[] | undefined;\n tableLoading?: boolean | undefined;\n operations: ResolvedOperation[];\n operationsLoading: boolean;\n};\n\nconst clickyRuntimeContextDefault: ClickyRuntimeContextValue = {\n operations: [],\n operationsLoading: false,\n};\n\nconst ClickyRuntimeContext = createContext<ClickyRuntimeContextValue>(\n clickyRuntimeContextDefault,\n);\n\nexport function Clicky(props: ClickyProps) {\n // A host that already runs react-query owns the cache: sharing it is what\n // lets its invalidations reach these queries, and stops a catalog the host\n // has already loaded being fetched a second time here. The private client is\n // only for a Clicky standing on its own — and stays per-instance, because\n // the keys it would share ([\"openapi-spec\"]) carry no client identity, so\n // two standalone Clickys pointed at different servers must not pool them.\n const hostQueryClient = useContext(QueryClientContext);\n const [fallbackQueryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 30_000,\n retry: 1,\n },\n },\n }),\n );\n // A remote payload knows the URL it came from, so the table can ask that URL\n // what it ran — the one thing rows never show.\n const queryInfo = useQueryInfo({ url: props.url });\n const exporter = useClickyExport({\n formats: useMemo(\n () => exportFormatOptions({ url: props.url, download: props.download }),\n [props.download, props.url],\n ),\n scopes: useMemo(\n () => exportScopeOptions(props.download, props.pagination),\n [props.download, props.pagination],\n ),\n onDownload: useCallback(\n ({ format, scope }: { format: string; scope: string | undefined }) =>\n runClickyDownload({\n url: props.url ?? \"\",\n format: format as ClickyRemoteFormat,\n scope: scope as ClickyDownloadScope | undefined,\n download: props.download,\n }),\n [props.download, props.url],\n ),\n });\n const tableMenuActions = useMemo(\n () =>\n [exporter.action, queryInfo.action].filter(\n (action): action is DataTableMenuAction => action !== undefined,\n ),\n [exporter.action, queryInfo.action],\n );\n\n const content = (\n <>\n {queryInfo.dialog}\n {exporter.dialog}\n <ClickyRuntimeProvider\n {...(props.commandRuntime\n ? { commandRuntime: props.commandRuntime }\n : {})}\n {...(props.onTableRowClick\n ? { onTableRowClick: props.onTableRowClick }\n : {})}\n {...(props.getTableRowHref\n ? { getTableRowHref: props.getTableRowHref }\n : {})}\n {...(props.isTableRowClickable\n ? { isTableRowClickable: props.isTableRowClickable }\n : {})}\n {...(props.search ? { tableSearch: props.search } : {})}\n {...(props.timeRange ? { tableTimeRange: props.timeRange } : {})}\n {...(props.externalFilters\n ? { tableExternalFilters: props.externalFilters }\n : {})}\n {...(props.cellFilters ? { tableCellFilters: props.cellFilters } : {})}\n {...(props.onCellFilterChange\n ? { onTableCellFilterChange: props.onCellFilterChange }\n : {})}\n {...(props.pagination ? { tablePagination: props.pagination } : {})}\n {...(props.sort !== undefined ? { tableSort: props.sort } : {})}\n {...(props.onSortChange\n ? { onTableSortChange: props.onSortChange }\n : {})}\n {...(props.infinite ? { tableInfinite: props.infinite } : {})}\n {...(props.rowSelection\n ? { tableRowSelection: props.rowSelection }\n : {})}\n {...(props.loading !== undefined\n ? { tableLoading: props.loading }\n : {})}\n {...(tableMenuActions.length > 0 ? { tableMenuActions } : {})}\n >\n {props.url ? (\n <ClickyRemoteRenderer {...props} url={props.url} />\n ) : (\n <ClickyContent\n data={props.data}\n {...(props.className ? { className: props.className } : {})}\n />\n )}\n </ClickyRuntimeProvider>\n </>\n );\n\n if (!hostQueryClient && (props.url || props.commandRuntime)) {\n return (\n <QueryClientProvider client={fallbackQueryClient}>\n {content}\n </QueryClientProvider>\n );\n }\n\n return content;\n}\n\nfunction ClickyRuntimeProvider({\n commandRuntime,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableSort,\n onTableSortChange,\n tableInfinite,\n tableRowSelection,\n tableMenuActions,\n tableLoading,\n children,\n}: {\n commandRuntime?: ClickyCommandRuntime | undefined;\n onTableRowClick?: ClickyTableRowClick | undefined;\n getTableRowHref?: ClickyTableRowHref | undefined;\n isTableRowClickable?: ClickyTableRowPredicate | undefined;\n tableSearch?: FilterBarSearchProps | undefined;\n tableTimeRange?: FilterBarRangeProps | undefined;\n tableExternalFilters?: FilterBarFilter[] | undefined;\n tableCellFilters?: Record<string, Record<string, CellFilterMode>> | undefined;\n onTableCellFilterChange?: ((change: CellFilterChange) => void) | undefined;\n tablePagination?: DataTablePagination | undefined;\n tableSort?: SortState | null | undefined;\n onTableSortChange?: ((sort: SortState | null) => void) | undefined;\n tableInfinite?: DataTableInfinite | undefined;\n tableRowSelection?: ClickyTableRowSelection | undefined;\n tableMenuActions?: DataTableMenuAction[] | undefined;\n tableLoading?: boolean | undefined;\n children: ReactNode;\n}) {\n if (!commandRuntime) {\n const hasOverrides =\n onTableRowClick ||\n getTableRowHref ||\n isTableRowClickable ||\n tableSearch ||\n tableTimeRange ||\n tableExternalFilters ||\n tableCellFilters ||\n onTableCellFilterChange ||\n tablePagination ||\n tableSort !== undefined ||\n onTableSortChange ||\n tableInfinite ||\n tableRowSelection ||\n tableMenuActions ||\n tableLoading;\n return (\n <ClickyRuntimeContext.Provider\n value={\n hasOverrides\n ? {\n ...clickyRuntimeContextDefault,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableSort,\n onTableSortChange,\n tableInfinite,\n tableRowSelection,\n tableMenuActions,\n tableLoading,\n }\n : clickyRuntimeContextDefault\n }\n >\n {children}\n </ClickyRuntimeContext.Provider>\n );\n }\n\n return (\n <ClickyCommandRuntimeProvider\n commandRuntime={commandRuntime}\n {...(onTableRowClick ? { onTableRowClick } : {})}\n {...(getTableRowHref ? { getTableRowHref } : {})}\n {...(isTableRowClickable ? { isTableRowClickable } : {})}\n {...(tableSearch ? { tableSearch } : {})}\n {...(tableTimeRange ? { tableTimeRange } : {})}\n {...(tableExternalFilters ? { tableExternalFilters } : {})}\n {...(tableCellFilters ? { tableCellFilters } : {})}\n {...(onTableCellFilterChange ? { onTableCellFilterChange } : {})}\n {...(tablePagination ? { tablePagination } : {})}\n {...(tableSort !== undefined ? { tableSort } : {})}\n {...(onTableSortChange ? { onTableSortChange } : {})}\n {...(tableInfinite ? { tableInfinite } : {})}\n {...(tableRowSelection ? { tableRowSelection } : {})}\n {...(tableMenuActions ? { tableMenuActions } : {})}\n {...(tableLoading !== undefined ? { tableLoading } : {})}\n >\n {children}\n </ClickyCommandRuntimeProvider>\n );\n}\n\nfunction ClickyCommandRuntimeProvider({\n commandRuntime,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableSort,\n onTableSortChange,\n tableInfinite,\n tableRowSelection,\n tableMenuActions,\n tableLoading,\n children,\n}: {\n commandRuntime: ClickyCommandRuntime;\n onTableRowClick?: ClickyTableRowClick | undefined;\n getTableRowHref?: ClickyTableRowHref | undefined;\n isTableRowClickable?: ClickyTableRowPredicate | undefined;\n tableSearch?: FilterBarSearchProps | undefined;\n tableTimeRange?: FilterBarRangeProps | undefined;\n tableExternalFilters?: FilterBarFilter[] | undefined;\n tableCellFilters?: Record<string, Record<string, CellFilterMode>> | undefined;\n onTableCellFilterChange?: ((change: CellFilterChange) => void) | undefined;\n tablePagination?: DataTablePagination | undefined;\n tableSort?: SortState | null | undefined;\n onTableSortChange?: ((sort: SortState | null) => void) | undefined;\n tableInfinite?: DataTableInfinite | undefined;\n tableRowSelection?: ClickyTableRowSelection | undefined;\n tableMenuActions?: DataTableMenuAction[] | undefined;\n tableLoading?: boolean | undefined;\n children: ReactNode;\n}) {\n const { operations, isLoading } = useOperations(commandRuntime.client);\n const value = useMemo(\n () => ({\n commandRuntime,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableSort,\n onTableSortChange,\n tableInfinite,\n tableRowSelection,\n tableMenuActions,\n tableLoading,\n operations,\n operationsLoading: isLoading,\n }),\n [\n commandRuntime,\n getTableRowHref,\n isLoading,\n isTableRowClickable,\n onTableRowClick,\n operations,\n tableSearch,\n tableTimeRange,\n tableExternalFilters,\n tableCellFilters,\n onTableCellFilterChange,\n tablePagination,\n tableSort,\n onTableSortChange,\n tableInfinite,\n tableRowSelection,\n tableMenuActions,\n tableLoading,\n ],\n );\n\n return (\n <ClickyRuntimeContext.Provider value={value}>\n {children}\n </ClickyRuntimeContext.Provider>\n );\n}\n\nfunction ClickyContent({\n data,\n className,\n}: {\n data: ClickyProps[\"data\"];\n className?: string | undefined;\n}) {\n if (data === undefined) {\n return (\n <ClickyNotice\n className={className}\n title=\"No Clicky data\"\n message=\"Provide either a local data payload or a URL.\"\n />\n );\n }\n\n const parsed = parseClickyData(data);\n\n if (!parsed.ok) {\n return <ClickyInvalidPayload parsed={parsed} className={className} />;\n }\n\n return (\n <div className={className}>\n <ClickyNodeRenderer node={parsed.document.node} />\n </div>\n );\n}\n\nfunction ClickyRemoteRenderer({\n data,\n dataFormat,\n url,\n view,\n download,\n className,\n}: ClickyProps & { url: string }) {\n const availableViews = useMemo(\n () => getAvailableViews({ data, url, view }),\n [data, url, view],\n );\n const primaryViews = useMemo(\n () => availableViews.filter(isPrimaryViewFormat),\n [availableViews],\n );\n const overflowViews = useMemo(\n () => availableViews.filter(isOverflowViewFormat),\n [availableViews],\n );\n const downloadFormats = useMemo(\n () => getDownloadFormats({ url, download }),\n [download, url],\n );\n const [activeView, setActiveView] = useState<ClickyRemoteFormat>(\n () => availableViews[0] ?? \"clicky\",\n );\n\n useEffect(() => {\n if (!availableViews.includes(activeView)) {\n setActiveView(availableViews[0] ?? \"clicky\");\n }\n }, [activeView, availableViews]);\n\n const formattedUrl = buildFormatUrl(url, activeView);\n // The view whose bytes the caller already holds — asking the endpoint for\n // them again returns the same payload it just handed over.\n const suppliedView = data !== undefined ? dataFormat : undefined;\n const activeQuery = useQuery({\n queryKey: [\"clicky\", activeView, formattedUrl],\n enabled: shouldFetchRemoteView(activeView) && activeView !== suppliedView,\n queryFn: async () => fetchRemoteFormat(formattedUrl, activeView),\n });\n // Read through to the cache only for views this render actually fetches: a\n // shared client can hold an older response for this URL, and the payload in\n // hand is the newer one.\n const remoteText =\n activeView !== suppliedView && activeQuery.data?.kind === \"text\"\n ? activeQuery.data.text\n : undefined;\n const effectiveClickyData =\n activeView === \"clicky\" && remoteText !== undefined ? remoteText : data;\n const fallbackJsonData = useMemo(() => parseJsonValue(data), [data]);\n const effectiveJsonData =\n activeView === \"json\" && remoteText !== undefined\n ? parseJsonValue(remoteText)\n : fallbackJsonData;\n const activeOverflowView = isOverflowViewFormat(activeView)\n ? activeView\n : null;\n const downloadHandledByTable = clickyPayloadHasTable(effectiveClickyData);\n const canDownload = downloadFormats.length > 0 && !downloadHandledByTable;\n const loadingMessage = `Fetching ${formattedUrl}`;\n\n const runtime = useContext(ClickyRuntimeContext);\n // When the payload renders as a table, fold the inline view switcher into the\n // table's overflow (\"3-dot\") menu alongside its download formats and hide the\n // standalone view bar — that bar is what looks out of place on a plain list\n // surface. Non-table payloads, and the JSON/PDF/HTML previews, keep the bar so\n // the user can always switch back to the table.\n const tableHostsControls = downloadHandledByTable && activeView === \"clicky\";\n // One row that opens a flyout, not one row per format: a dozen formats listed\n // inline is what buried everything below them in this menu.\n const viewMenuActions = useMemo<DataTableMenuAction[]>(() => {\n if (!tableHostsControls || availableViews.length <= 1) return [];\n const activeMeta = getRemoteFormatMeta(activeView);\n return [\n {\n id: \"view\",\n label: `View: ${formatViewLabel(activeView)}`,\n icon: activeMeta.icon,\n ...(activeMeta.iconClassName\n ? { iconClassName: activeMeta.iconClassName }\n : {}),\n section: \"\",\n children: availableViews.map((format) => {\n const meta = getRemoteFormatMeta(format);\n return {\n id: `view-${format}`,\n label: formatViewLabel(format),\n description: meta.description,\n icon: meta.icon,\n ...(meta.iconClassName\n ? { iconClassName: meta.iconClassName }\n : {}),\n disabled: format === activeView,\n onSelect: () => setActiveView(format),\n };\n }),\n onSelect: () => undefined,\n },\n ];\n }, [tableHostsControls, availableViews, activeView]);\n const combinedTableActions = useMemo<DataTableMenuAction[]>(\n () => [...viewMenuActions, ...(runtime.tableMenuActions ?? [])],\n [viewMenuActions, runtime.tableMenuActions],\n );\n\n return (\n <div className={cn(\"space-y-density-3\", className)}>\n {!tableHostsControls && (\n <div className=\"flex flex-wrap items-center gap-2 rounded-md border border-border bg-muted/20 px-density-3 py-density-2\">\n {primaryViews.length > 1 && (\n <div\n role=\"radiogroup\"\n aria-label=\"Clicky view mode\"\n className=\"flex flex-wrap gap-1\"\n >\n {primaryViews.map((mode) => (\n <button\n key={mode}\n type=\"button\"\n role=\"radio\"\n aria-checked={activeView === mode}\n onClick={() => setActiveView(mode)}\n className={cn(\n \"rounded-md border px-2.5 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n activeView === mode\n ? \"border-foreground/20 bg-accent text-foreground\"\n : \"border-transparent text-muted-foreground hover:border-foreground/20 hover:text-foreground\",\n )}\n >\n {formatViewLabel(mode)}\n </button>\n ))}\n </div>\n )}\n\n {overflowViews.length > 0 && (\n <ClickyViewMenu\n activeFormat={activeOverflowView}\n formats={overflowViews}\n onSelect={setActiveView}\n />\n )}\n\n <div className=\"ml-auto flex items-center gap-2\">\n {shouldFetchRemoteView(activeView) && activeQuery.isFetching && (\n <span className=\"text-xs text-muted-foreground\">Refreshing…</span>\n )}\n\n {canDownload && (\n <ClickyExportButton\n url={url}\n {...(download ? { download } : {})}\n />\n )}\n </div>\n </div>\n )}\n\n {activeView === \"pdf\" ? (\n <ClickyPdfPreview src={formattedUrl} />\n ) : activeView === \"html\" ? (\n <ClickyHtmlPreview src={formattedUrl} />\n ) : activeView === \"excel\" ? (\n <ClickyUnsupportedPreview\n title=\"Excel preview\"\n message=\"Excel output is available for download, but not inline preview.\"\n href={formattedUrl}\n />\n ) : activeView === \"clicky\" ? (\n activeQuery.isPending && effectiveClickyData === undefined ? (\n <ClickyNotice title=\"Loading Clicky\" message={loadingMessage} />\n ) : activeQuery.isError && effectiveClickyData === undefined ? (\n renderOperationError(\n activeQuery.error,\n `Failed to load ${formattedUrl}`,\n )\n ) : (\n <>\n {activeQuery.isError &&\n data !== undefined &&\n renderOperationError(\n activeQuery.error,\n `Refresh failed: ${formattedUrl}`,\n )}\n <ClickyRuntimeContext.Provider\n value={{ ...runtime, tableMenuActions: combinedTableActions }}\n >\n <ClickyContent\n data={effectiveClickyData}\n className=\"flex min-h-0 flex-1 flex-col\"\n />\n </ClickyRuntimeContext.Provider>\n </>\n )\n ) : activeView === \"json\" ? (\n activeQuery.isPending && effectiveJsonData === undefined ? (\n <ClickyNotice title=\"Loading JSON\" message={loadingMessage} />\n ) : activeQuery.isError && effectiveJsonData === undefined ? (\n renderOperationError(\n activeQuery.error,\n `Failed to load ${formattedUrl}`,\n )\n ) : (\n <>\n {activeQuery.isError &&\n fallbackJsonData !== undefined &&\n renderOperationError(\n activeQuery.error,\n `Refresh failed: ${formattedUrl}`,\n )}\n <ClickyJsonTree value={effectiveJsonData} />\n </>\n )\n ) : activeQuery.isPending ? (\n <ClickyNotice\n title={`Loading ${formatViewLabel(activeView)}`}\n message={loadingMessage}\n />\n ) : activeQuery.isError ? (\n renderOperationError(\n activeQuery.error,\n `Failed to load ${formatViewLabel(activeView)} from ${formattedUrl}`,\n )\n ) : (\n <ClickyRemotePreview\n format={activeView as ClickyOverflowViewFormat}\n response={activeQuery.data}\n />\n )}\n </div>\n );\n}\n\nfunction ClickyViewMenu({\n activeFormat,\n formats,\n onSelect,\n}: {\n activeFormat: ClickyOverflowViewFormat | null;\n formats: ClickyOverflowViewFormat[];\n onSelect: (format: ClickyRemoteFormat) => void;\n}) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n return (\n <div ref={rootRef} className=\"relative\">\n <button\n ref={triggerRef}\n type=\"button\"\n aria-label=\"Open additional view menu\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-pressed={activeFormat != null}\n className={cn(\n \"inline-flex h-[34px] w-[34px] items-center justify-center rounded-md border border-input bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n activeFormat && \"border-foreground/20 bg-accent text-foreground\",\n )}\n onClick={() => setOpen((current) => !current)}\n >\n <Icon icon={UiEllipsis} className=\"text-sm\" />\n </button>\n\n {open && (\n <div\n role=\"menu\"\n className=\"absolute left-0 top-[calc(100%+0.375rem)] z-50 min-w-[18rem] rounded-md border border-border bg-popover p-1.5 text-popover-foreground shadow-lg shadow-black/5\"\n >\n {formats.map((format) => {\n const active = format === activeFormat;\n const meta = getRemoteFormatMeta(format);\n return (\n <button\n key={format}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n className={cn(\n \"flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\",\n active && \"bg-accent/70\",\n )}\n onClick={() => {\n onSelect(format);\n setOpen(false);\n }}\n >\n <Icon\n icon={meta.icon}\n className={cn(\n \"mt-0.5 shrink-0 text-base\",\n meta.iconClassName ?? \"text-muted-foreground\",\n active && !meta.iconClassName && \"text-foreground\",\n )}\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"flex items-center justify-between gap-3\">\n <span className=\"font-medium\">{meta.label}</span>\n {active && (\n <Icon\n icon={UiCheck}\n className=\"text-xs text-muted-foreground\"\n />\n )}\n </span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n {meta.description}\n </span>\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n\n// ClickyExportButton is the bar's export control for a payload that renders as\n// something other than a table. A table's own overflow menu carries the same\n// dialog, so there is one export interaction rather than two.\nfunction ClickyExportButton({\n url,\n download,\n}: {\n url: string;\n download?: ClickyDownloadOptions | undefined;\n}) {\n const [open, setOpen] = useState(false);\n const formats = useMemo(\n () => exportFormatOptions({ url, download }),\n [download, url],\n );\n const scopes = useMemo(() => exportScopeOptions(download), [download]);\n if (formats.length === 0) return null;\n\n return (\n <>\n <button\n type=\"button\"\n aria-label={download?.label ? `Export ${download.label}` : \"Export\"}\n className=\"inline-flex items-center gap-2 rounded-md border border-input bg-background px-3 py-1.5 text-xs font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n onClick={() => setOpen(true)}\n >\n <Icon icon={UiCloudDownload} className=\"text-sm\" />\n <span>Export</span>\n </button>\n <ClickyExportDialog\n open={open}\n onClose={() => setOpen(false)}\n formats={formats}\n scopes={scopes}\n onDownload={({\n format,\n scope,\n }: {\n format: string;\n scope: string | undefined;\n }) =>\n runClickyDownload({\n url,\n format: format as ClickyRemoteFormat,\n scope: scope as ClickyDownloadScope | undefined,\n ...(download ? { download } : {}),\n })\n }\n />\n </>\n );\n}\n\nfunction useDismissablePopup(\n open: boolean,\n rootRef: RefObject<HTMLElement | null>,\n triggerRef: RefObject<HTMLElement | null>,\n onClose: () => void,\n) {\n useEscapeLayer(open, () => {\n onClose();\n triggerRef.current?.focus();\n });\n\n useEffect(() => {\n if (!open) return;\n\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n onClose();\n }\n };\n\n document.addEventListener(\"mousedown\", onPointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n };\n }, [onClose, open, rootRef, triggerRef]);\n}\n\nfunction fetchRemoteFormat(\n url: string,\n format: ClickyRemoteFormat,\n): Promise<ClickyRemoteResponse> {\n return fetch(url, {\n headers: {\n Accept: getRemoteFormatMeta(format).accept,\n },\n }).then(async (response) => {\n if (!response.ok) {\n // Read the failure as JSON whatever the requested format: an excel or\n // pdf request still fails with the server's error envelope, and throwing\n // on status alone loses the code, trace and hint that say what actually\n // went wrong. A body that is not JSON still comes back as raw text.\n throw errorFromResponse(\n response,\n \"GET\",\n url,\n await readResponseBody(response, \"json\"),\n );\n }\n\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n\n if (format === \"excel\") {\n return {\n kind: \"blob\",\n blob: await response.blob(),\n contentType,\n };\n }\n\n return {\n kind: \"text\",\n text: await response.text(),\n contentType,\n };\n });\n}\n\nfunction ClickyInvalidPayload({\n parsed,\n className,\n}: {\n parsed: Extract<ParsedClicky, { ok: false }>;\n className?: string | undefined;\n}) {\n return (\n <div\n className={cn(\n \"rounded-md border border-destructive/30 bg-destructive/5 p-density-3\",\n className,\n )}\n >\n <div className=\"text-sm font-medium text-destructive\">\n Invalid Clicky payload\n </div>\n <pre className=\"mt-2 whitespace-pre-wrap break-all text-xs text-muted-foreground\">\n {parsed.message}\n {parsed.raw ? `\\n\\n${parsed.raw}` : \"\"}\n </pre>\n </div>\n );\n}\n\nfunction ClickyNotice({\n title,\n message,\n tone = \"default\",\n className,\n}: {\n title: string;\n message: ReactNode;\n tone?: \"default\" | \"warning\" | \"destructive\";\n className?: string | undefined;\n}) {\n return (\n <div\n className={cn(\n \"rounded-md border p-density-3\",\n tone === \"destructive\" && \"border-destructive/30 bg-destructive/5\",\n tone === \"warning\" && \"border-yellow-500/30 bg-yellow-500/5\",\n tone === \"default\" && \"border-border bg-muted/30\",\n className,\n )}\n >\n <div\n className={cn(\n \"text-sm font-medium\",\n tone === \"destructive\" && \"text-destructive\",\n tone === \"warning\" && \"text-yellow-700 dark:text-yellow-400\",\n )}\n >\n {title}\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground\">{message}</div>\n </div>\n );\n}\n\nfunction ClickyPdfPreview({ src }: { src: string }) {\n return (\n <div className=\"overflow-hidden rounded-md border border-border bg-background\">\n <div className=\"flex items-center justify-between border-b border-border px-3 py-2 text-xs text-muted-foreground\">\n <span>PDF preview</span>\n <a\n href={src}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-primary hover:underline\"\n >\n Open in new tab\n </a>\n </div>\n <iframe\n title=\"Clicky PDF preview\"\n src={src}\n className=\"h-[720px] w-full bg-background\"\n />\n </div>\n );\n}\n\nfunction ClickyHtmlPreview({ src }: { src: string }) {\n return (\n <div className=\"overflow-hidden rounded-md border border-border bg-background\">\n <div className=\"flex items-center justify-between border-b border-border px-3 py-2 text-xs text-muted-foreground\">\n <span>HTML preview</span>\n <a\n href={src}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-primary hover:underline\"\n >\n Open in new tab\n </a>\n </div>\n <iframe\n title=\"Clicky HTML preview\"\n src={src}\n className=\"h-[720px] w-full bg-background\"\n sandbox=\"allow-same-origin\"\n />\n </div>\n );\n}\n\nfunction ClickyUnsupportedPreview({\n title,\n message,\n href,\n}: {\n title: string;\n message: string;\n href: string;\n}) {\n return (\n <ClickyNotice\n title={title}\n message={\n <>\n <span>{message} </span>\n <a\n href={href}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-primary hover:underline\"\n >\n Open format\n </a>\n </>\n }\n />\n );\n}\n\nfunction ClickyRemotePreview({\n format,\n response,\n}: {\n format: ClickyOverflowViewFormat;\n response: ClickyRemoteResponse | undefined;\n}) {\n const meta = getRemoteFormatMeta(format);\n\n if (format === \"slack\") {\n const parsed =\n response?.kind === \"text\" ? parseJsonValue(response.text) : undefined;\n return <ClickyJsonTree value={parsed} emptyLabel={meta.label} />;\n }\n\n return (\n <ClickyTextPreview\n title={`${meta.label} output`}\n content={response?.kind === \"text\" ? response.text : \"\"}\n />\n );\n}\n\nfunction ClickyTextPreview({\n title,\n content,\n}: {\n title: string;\n content: string;\n}) {\n return (\n <div className=\"overflow-hidden rounded-md border border-border bg-background\">\n <div className=\"border-b border-border px-3 py-2 text-xs text-muted-foreground\">\n {title}\n </div>\n <pre\n aria-label=\"Clicky text preview\"\n className=\"overflow-auto whitespace-pre-wrap break-words px-3 py-3 font-mono text-xs text-foreground\"\n >\n {content || \"No content\"}\n </pre>\n </div>\n );\n}\n\nfunction ClickyJsonTree({\n value,\n emptyLabel = \"JSON\",\n}: {\n value: unknown;\n emptyLabel?: string;\n}) {\n const roots = useMemo(() => buildJsonTree(value), [value]);\n\n if (value === undefined) {\n return (\n <ClickyNotice\n title={`No ${emptyLabel} payload`}\n message=\"The response did not include a JSON body to inspect.\"\n />\n );\n }\n\n return (\n <div\n aria-label=\"JSON tree\"\n className=\"overflow-hidden rounded-md border border-border bg-background\"\n >\n <Tree<JsonTreeNode>\n roots={roots}\n className=\"min-h-[12rem]\"\n showControls={roots.some((node) => (node.children?.length ?? 0) > 0)}\n getKey={(node) => node.id}\n getChildren={(node) => node.children}\n renderRow={({ node }) => <ClickyJsonTreeRow node={node} />}\n rowClass={() => \"hover:bg-accent\"}\n empty={\n <div className=\"px-3 py-4 text-sm text-muted-foreground\">\n No JSON fields.\n </div>\n }\n toolbarClassName=\"pl-3\"\n />\n </div>\n );\n}\n\nfunction ClickyJsonTreeRow({ node }: { node: JsonTreeNode }) {\n const primitiveClass =\n typeof node.value === \"string\"\n ? \"text-emerald-700 dark:text-emerald-400\"\n : typeof node.value === \"number\"\n ? \"text-sky-700 dark:text-sky-400\"\n : typeof node.value === \"boolean\" || node.value === null\n ? \"text-violet-700 dark:text-violet-400\"\n : \"text-muted-foreground\";\n\n return (\n <div className=\"flex min-w-0 items-start gap-2 font-mono text-xs\">\n <span className=\"shrink-0 text-foreground\">{node.key}</span>\n <span className=\"shrink-0 text-muted-foreground\">:</span>\n <span className={cn(\"min-w-0 break-words\", primitiveClass)}>\n {node.preview}\n </span>\n </div>\n );\n}\n\nfunction getAvailableViews({\n data,\n url,\n view,\n}: {\n data: ClickyProps[\"data\"] | undefined;\n url?: string | undefined;\n view?: ClickyViewConfig | undefined;\n}): ClickyRemoteFormat[] {\n const allowClicky = resolveViewConfigFlag(view, \"clicky\", data, url);\n const allowJson = resolveViewConfigFlag(view, \"json\", data, url);\n const next: ClickyRemoteFormat[] = [];\n\n if (allowClicky && (url || data !== undefined)) {\n next.push(\"clicky\");\n }\n\n if (allowJson && (url || data !== undefined)) {\n next.push(\"json\");\n }\n\n for (const format of CLICKY_OVERFLOW_VIEW_FORMATS) {\n if (resolveViewConfigFlag(view, format, data, url) && url) {\n next.push(format);\n }\n }\n\n if (next.length === 0 && (url || data !== undefined)) {\n next.push(\"clicky\");\n }\n\n return next;\n}\n\nfunction getDownloadFormats({\n url,\n download,\n}: {\n url?: string | undefined;\n download?: ClickyDownloadOptions | undefined;\n}): ClickyRemoteFormat[] {\n const enabled = download ? (download.all ?? true) : !!url;\n\n if (!enabled || !url) {\n return [];\n }\n\n return download?.formats?.length\n ? [...download.formats]\n : [...CLICKY_DOWNLOAD_FORMATS];\n}\n\nfunction getDownloadScopes(\n download?: ClickyDownloadOptions,\n): Array<ClickyDownloadScope | undefined> {\n return download?.scopes?.length ? download.scopes : [undefined];\n}\n\nfunction downloadDescription(\n format: ClickyRemoteFormat,\n scope: ClickyDownloadScope | undefined,\n download?: ClickyDownloadOptions,\n) {\n const maxRows = download?.formatMaxRows?.[format];\n if (maxRows) {\n return `Limited to ${maxRows.toLocaleString()} rows`;\n }\n if (scope === \"all\" && download?.allRowsMode === \"buffered\") {\n return \"Compatibility mode buffers the complete result\";\n }\n if (scope === \"all\" && download?.allRowsMode === \"streaming\") {\n return \"Streams rows as they are read\";\n }\n return undefined;\n}\n\n// exportFormatOptions describes the advertised formats for the export dialog.\n// The dialog is presentational and knows nothing about Clicky's formats, so the\n// labels, icons and blurbs are resolved here, from the same metadata the view\n// switcher reads.\nfunction exportFormatOptions({\n url,\n download,\n}: {\n url?: string | undefined;\n download?: ClickyDownloadOptions | undefined;\n}): ClickyExportFormatOption[] {\n if (!url) return [];\n return getDownloadFormats({ url, download }).map((format) => {\n const meta = getRemoteFormatMeta(format);\n return {\n format,\n label: meta.label,\n description: meta.description,\n icon: meta.icon,\n ...(meta.iconClassName ? { iconClassName: meta.iconClassName } : {}),\n };\n });\n}\n\n// exportScopeOptions describes the ranges the endpoint serves. The per-format\n// note is a function rather than a string because a ceiling belongs to a format\n// and a range together: a PDF stops at 1,000 rows, the CSV beside it does not.\n//\n// The all-rows label carries the count the table was told, because \"all\" is the\n// one number a person needs before starting an export and the only one the page\n// in front of them does not show.\nfunction exportScopeOptions(\n download?: ClickyDownloadOptions,\n pagination?: DataTablePagination,\n): ClickyExportScopeOption[] {\n return getDownloadScopes(download).map((scope) => ({\n scope,\n label:\n scope === \"all\" || scope === undefined\n ? allRowsLabel(pagination)\n : \"Current page\",\n note: (format: string) =>\n downloadDescription(format as ClickyRemoteFormat, scope, download),\n }));\n}\n\n// allRowsLabel states the total when the backend gave one. A \"gte\" total is a\n// lower bound a backend stopped counting at, so it is rendered as one rather\n// than as a count nobody promised.\nfunction allRowsLabel(pagination?: DataTablePagination): string {\n const total = pagination?.total;\n if (total === undefined) return \"All rows\";\n const count = total.toLocaleString();\n return pagination?.totalRelation === \"gte\"\n ? `All ${count}+ rows`\n : `All ${count} rows`;\n}\n\n// runClickyDownload is prepareDownload for a caller that awaits it. The export\n// dialog reports its own failure and stays open on one, so the reason has to\n// come back as a rejection rather than through a callback.\nasync function runClickyDownload({\n url,\n format,\n scope,\n download,\n}: {\n url: string;\n format: ClickyRemoteFormat;\n scope?: ClickyDownloadScope | undefined;\n download?: ClickyDownloadOptions | undefined;\n}): Promise<void> {\n let failure = \"\";\n await prepareDownload({\n url,\n format,\n ...(scope ? { scope } : {}),\n ...(download ? { download } : {}),\n onError: (message) => {\n failure = message;\n },\n });\n if (failure) throw new Error(failure);\n}\n\nasync function prepareDownload({\n url,\n format,\n scope,\n download,\n onPending,\n onError,\n}: {\n url: string;\n format: ClickyRemoteFormat;\n scope?: ClickyDownloadScope | undefined;\n download?: ClickyDownloadOptions | undefined;\n onPending?: ((pending: boolean) => void) | undefined;\n onError?: ((message: string) => void) | undefined;\n}) {\n onError?.(\"\");\n onPending?.(true);\n try {\n const prepared = download?.prepare\n ? await download.prepare({ format, ...(scope ? { scope } : {}) })\n : { url, ...(download?.label ? { label: download.label } : {}) };\n if (!prepared.url.trim()) {\n throw new Error(\"The prepared download URL is empty\");\n }\n triggerDownload(\n buildDownloadUrl(\n prepared.url,\n format,\n prepared.label ?? download?.label,\n scope,\n ),\n );\n } catch (error) {\n onError?.(\n error instanceof Error ? error.message : \"Preparing the download failed\",\n );\n } finally {\n onPending?.(false);\n }\n}\n\nfunction getRemoteFormatMeta(format: ClickyRemoteFormat): {\n label: string;\n description: string;\n icon: StaticIconComponent;\n iconClassName?: string;\n accept: string;\n} {\n switch (format) {\n case \"clicky\":\n return {\n label: \"Clicky\",\n description: \"Rendered Clicky JSON with the rich Clicky viewer\",\n icon: UiEye,\n accept:\n \"application/json+clicky, application/clicky+json;q=0.9, application/json;q=0.8,*/*;q=0.7\",\n };\n case \"json\":\n return {\n label: \"JSON\",\n description: \"Plain JSON for inspecting the raw response body\",\n icon: UiJson,\n accept: \"application/json, text/plain;q=0.8,*/*;q=0.7\",\n };\n case \"ndjson\":\n return {\n label: \"NDJSON\",\n description: \"Newline-delimited JSON for streaming data pipelines\",\n icon: UiJson,\n accept: \"application/x-ndjson, application/ndjson;q=0.9,*/*;q=0.7\",\n };\n case \"pdf\":\n return {\n label: \"PDF\",\n description: \"Portable document for sharing and printing\",\n icon: UiFileText,\n iconClassName: \"text-rose-600 dark:text-rose-400\",\n accept: \"application/pdf, */*;q=0.7\",\n };\n case \"html\":\n return {\n label: \"HTML\",\n description: \"Browser-ready HTML preview of the formatted output\",\n icon: UiFileCode,\n accept: \"text/html, */*;q=0.7\",\n };\n case \"markdown\":\n return {\n label: \"Markdown\",\n description: \"Markdown formatted for docs, comments, and chat\",\n icon: UiMarkdown,\n accept: \"text/markdown, text/plain;q=0.8,*/*;q=0.7\",\n };\n case \"yaml\":\n return {\n label: \"YAML\",\n description: \"YAML for config-friendly inspection and export\",\n icon: UiFileCode,\n iconClassName: \"text-violet-600 dark:text-violet-400\",\n accept: \"application/yaml, text/yaml;q=0.9, text/plain;q=0.8,*/*;q=0.7\",\n };\n case \"csv\":\n return {\n label: \"CSV\",\n description: \"Comma-separated values for spreadsheets and imports\",\n icon: UiFileSpreadsheet,\n iconClassName: \"text-emerald-600 dark:text-emerald-400\",\n accept: \"text/csv, text/plain;q=0.8,*/*;q=0.7\",\n };\n case \"pretty\":\n return {\n label: \"Pretty\",\n description: \"Human-readable plain text output from the formatter\",\n icon: UiFileCode,\n accept: \"text/plain, */*;q=0.7\",\n };\n case \"excel\":\n return {\n label: \"Excel\",\n description: \"Spreadsheet workbook for offline analysis\",\n icon: UiTable,\n accept:\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, */*;q=0.7\",\n };\n case \"slack\":\n return {\n label: \"Slack\",\n description: \"Slack Block Kit JSON for chat-native output\",\n icon: UiComment,\n accept:\n \"application/vnd.slack.block-kit+json, application/json;q=0.8,*/*;q=0.7\",\n };\n }\n}\n\nfunction formatViewLabel(mode: ClickyRemoteFormat) {\n return getRemoteFormatMeta(mode).label;\n}\n\nfunction buildFormatUrl(url: string, format: ClickyRemoteFormat) {\n const base =\n typeof window === \"undefined\" ? \"http://localhost\" : window.location.origin;\n const resolved = new URL(url, base);\n resolved.searchParams.set(\n \"format\",\n format === \"clicky\" ? \"clicky-json\" : format,\n );\n\n if (isAbsoluteUrl(url)) {\n return resolved.toString();\n }\n\n return `${resolved.pathname}${resolved.search}${resolved.hash}`;\n}\n\nfunction buildDownloadUrl(\n url: string,\n format: ClickyRemoteFormat,\n label?: string | undefined,\n scope?: ClickyDownloadScope | undefined,\n) {\n const formatted = buildFormatUrl(url, format);\n const base =\n typeof window === \"undefined\" ? \"http://localhost\" : window.location.origin;\n const resolved = new URL(formatted, base);\n resolved.searchParams.set(\"filename\", downloadFilename(url, format, label));\n resolved.searchParams.set(\"_download\", Date.now().toString());\n if (scope) {\n resolved.searchParams.set(\"scope\", scope);\n }\n if (scope === \"all\") {\n resolved.searchParams.delete(\"limit\");\n resolved.searchParams.delete(\"offset\");\n resolved.searchParams.delete(\"page\");\n }\n\n if (isAbsoluteUrl(formatted)) {\n return resolved.toString();\n }\n\n return `${resolved.pathname}${resolved.search}${resolved.hash}`;\n}\n\nfunction downloadFilename(\n url: string,\n format: ClickyRemoteFormat,\n label?: string | undefined,\n) {\n const stem = sanitizeFilenameStem(\n label || filenameStemFromUrl(url) || \"clicky-output\",\n );\n return `${stem}${downloadExtension(format)}`;\n}\n\nfunction filenameStemFromUrl(url: string) {\n const base =\n typeof window === \"undefined\" ? \"http://localhost\" : window.location.origin;\n const resolved = new URL(url, base);\n const segment = resolved.pathname.split(\"/\").filter(Boolean).at(-1);\n return segment ?? \"\";\n}\n\nfunction sanitizeFilenameStem(value: string) {\n const cleaned = value\n .trim()\n .replace(/\\.[a-z0-9]+$/i, \"\")\n .replace(/[^a-z0-9._-]+/gi, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^[._-]+|[._-]+$/g, \"\");\n\n return cleaned || \"clicky-output\";\n}\n\nfunction downloadExtension(format: ClickyRemoteFormat) {\n switch (format) {\n case \"clicky\":\n return \".clicky.json\";\n case \"json\":\n return \".json\";\n case \"ndjson\":\n return \".ndjson\";\n case \"pdf\":\n return \".pdf\";\n case \"html\":\n return \".html\";\n case \"markdown\":\n return \".md\";\n case \"yaml\":\n return \".yaml\";\n case \"csv\":\n return \".csv\";\n case \"pretty\":\n return \".txt\";\n case \"excel\":\n return \".xlsx\";\n case \"slack\":\n return \".slack.json\";\n }\n}\n\nfunction shouldFetchRemoteView(format: ClickyRemoteFormat) {\n return format !== \"pdf\" && format !== \"html\" && format !== \"excel\";\n}\n\nfunction isPrimaryViewFormat(\n format: ClickyRemoteFormat,\n): format is ClickyPrimaryViewFormat {\n return (CLICKY_PRIMARY_VIEW_FORMATS as readonly string[]).includes(format);\n}\n\nfunction isOverflowViewFormat(\n format: ClickyRemoteFormat,\n): format is ClickyOverflowViewFormat {\n return (CLICKY_OVERFLOW_VIEW_FORMATS as readonly string[]).includes(format);\n}\n\nfunction resolveViewConfigFlag(\n view: ClickyViewConfig | undefined,\n format: ClickyRemoteFormat,\n data: ClickyProps[\"data\"],\n url?: string,\n) {\n const defaultEnabled =\n format === \"clicky\" || format === \"json\"\n ? url != null || data !== undefined\n : !!url;\n\n if (view === undefined) {\n return defaultEnabled;\n }\n\n if (Array.isArray(view)) {\n if (view.length === 0) {\n return false;\n }\n\n if (format === \"clicky\") {\n return view.includes(\"clicky\") || view.includes(\"json\");\n }\n\n return view.includes(format);\n }\n\n if (format in view) {\n return Boolean(view[format]);\n }\n\n if (format === \"clicky\" && view.json === true) {\n return true;\n }\n\n return defaultEnabled;\n}\n\nfunction parseJsonValue(data: ClickyProps[\"data\"]): unknown {\n if (data === undefined) {\n return undefined;\n }\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n const trimmed = data.trim();\n if (!trimmed) {\n return \"\";\n }\n\n try {\n return JSON.parse(trimmed) as unknown;\n } catch {\n return data;\n }\n}\n\nfunction clickyPayloadHasTable(data: ClickyProps[\"data\"] | undefined) {\n if (data === undefined) return false;\n const parsed = parseClickyData(data);\n return parsed.ok ? clickyNodeHasTable(parsed.document.node) : false;\n}\n\nfunction clickyNodeHasTable(node: ClickyNode | undefined): boolean {\n if (!node) return false;\n if (node.kind === \"table\") return true;\n if (node.children?.some(clickyNodeHasTable)) return true;\n if (node.items?.some(clickyNodeHasTable)) return true;\n if (node.fields?.some((field) => clickyNodeHasTable(field.value)))\n return true;\n if (node.label && clickyNodeHasTable(node.label)) return true;\n if (node.content && clickyNodeHasTable(node.content)) return true;\n if (node.tooltip && clickyNodeHasTable(node.tooltip)) return true;\n if (\n node.columns?.some(\n (column) => column.header && clickyNodeHasTable(column.header),\n )\n )\n return true;\n if (\n node.rows?.some((row) =>\n Object.values(row.cells).some((cell) => clickyNodeHasTable(cell)),\n )\n )\n return true;\n if (node.rows?.some((row) => row.detail && clickyNodeHasTable(row.detail)))\n return true;\n return false;\n}\n\nfunction buildJsonTree(value: unknown): JsonTreeNode[] {\n if (Array.isArray(value)) {\n return value.map((entry, index) =>\n buildJsonTreeNode(String(index), entry, `$[${index}]`),\n );\n }\n\n if (isPlainObject(value)) {\n return Object.entries(value).map(([key, entry]) =>\n buildJsonTreeNode(key, entry, `$.${key}`),\n );\n }\n\n if (value === undefined) {\n return [];\n }\n\n return [buildJsonTreeNode(\"$\", value, \"$\")];\n}\n\nfunction buildJsonTreeNode(\n key: string,\n value: unknown,\n id: string,\n): JsonTreeNode {\n const children = getJsonChildren(value, id);\n return {\n id,\n key,\n value,\n preview: summarizeJsonValue(value),\n ...(children ? { children } : {}),\n };\n}\n\nfunction getJsonChildren(value: unknown, path: string) {\n if (Array.isArray(value)) {\n return value.map((entry, index) =>\n buildJsonTreeNode(String(index), entry, `${path}[${index}]`),\n );\n }\n\n if (isPlainObject(value)) {\n return Object.entries(value).map(([key, entry]) =>\n buildJsonTreeNode(key, entry, `${path}.${key}`),\n );\n }\n\n return undefined;\n}\n\nfunction summarizeJsonValue(value: unknown) {\n if (Array.isArray(value)) {\n return `[${value.length} item${value.length === 1 ? \"\" : \"s\"}]`;\n }\n\n if (isPlainObject(value)) {\n const count = Object.keys(value).length;\n return `{${count} key${count === 1 ? \"\" : \"s\"}}`;\n }\n\n if (typeof value === \"string\") {\n return JSON.stringify(value);\n }\n\n if (value === undefined) {\n return \"undefined\";\n }\n\n return String(value);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nconst CLICKY_DOWNLOAD_FRAME_ID = \"clicky-download-frame\";\n\nfunction triggerDownload(url: string) {\n if (typeof document === \"undefined\") return;\n\n let frame = document.getElementById(\n CLICKY_DOWNLOAD_FRAME_ID,\n ) as HTMLIFrameElement | null;\n if (!frame) {\n frame = document.createElement(\"iframe\");\n frame.id = CLICKY_DOWNLOAD_FRAME_ID;\n frame.name = CLICKY_DOWNLOAD_FRAME_ID;\n frame.title = \"Clicky download target\";\n frame.setAttribute(\"aria-hidden\", \"true\");\n frame.tabIndex = -1;\n frame.style.display = \"none\";\n document.body.appendChild(frame);\n }\n\n frame.src = url;\n}\n\nfunction isAbsoluteUrl(url: string) {\n return /^[a-z][a-z\\d+\\-.]*:/i.test(url) || url.startsWith(\"//\");\n}\n\nfunction ClickyNodeRenderer({ node }: ClickyNodeViewProps) {\n if (!node) return null;\n\n switch (node.kind) {\n case \"text\":\n return <ClickyText node={node} />;\n case \"link\":\n return <ClickyLinkNode node={node} />;\n case \"link-command\":\n return <ClickyLinkCommandNode node={node} />;\n case \"icon\":\n return <ClickyIconNode node={node} />;\n case \"list\":\n return <ClickyList node={node} />;\n case \"map\":\n return <ClickyMap node={node} />;\n case \"table\":\n return <ClickyTableNode node={node} />;\n case \"tree\":\n return <ClickyTreeNode node={node} />;\n case \"object-graph\":\n return <ObjectGraph roots={node.objects ?? []} />;\n case \"execution-tree\":\n return <ExecutionTree roots={node.executionRoots ?? []} />;\n case \"code\":\n return (\n <CodeBlock\n language={node.language}\n source={node.source ?? node.plain ?? \"\"}\n highlightedHtml={node.highlightedHtml}\n />\n );\n case \"heading\":\n return <ClickyHeading node={node} />;\n case \"blockquote\":\n return <ClickyBlockquote node={node} />;\n case \"admonition\":\n return <ClickyAdmonition node={node} />;\n case \"footnote-ref\":\n return <ClickyFootnoteRef node={node} />;\n case \"footnote\":\n return <ClickyFootnote node={node} />;\n case \"footnotes\":\n return <ClickyFootnotes node={node} />;\n case \"collapsed\":\n return <ClickyCollapsed node={node} />;\n case \"stacktrace\":\n return <ClickyStackTraceNode node={node} />;\n case \"button\":\n return <ClickyButtonNode node={node} />;\n case \"button-group\":\n return <ClickyButtonGroup node={node} />;\n case \"html\":\n return <ClickyHtmlNode node={node} />;\n case \"comment\":\n return <ClickyComment node={node} />;\n case \"badge\":\n return <ClickyBadgeNode node={node} />;\n default:\n return (\n <pre className=\"rounded-md border border-border bg-muted p-density-3 text-xs\">\n {JSON.stringify(node, null, 2)}\n </pre>\n );\n }\n}\n\nexport { ClickyNodeRenderer as ClickyNodeView };\n\nfunction ClickyComment({ node }: { node: ClickyNode }) {\n const text = node.text ?? node.plain;\n const content = <ClickyInlineContent node={node} />;\n const maxWidth =\n node.style?.maxWidth && node.style.maxWidth > 0\n ? Math.min(node.style.maxWidth, 50)\n : 50;\n const maxLines =\n node.style?.maxLines && node.style.maxLines > 0\n ? Math.min(node.style.maxLines, 3)\n : 3;\n const inlineStyle = toInlineStyle(\n {\n ...node.style,\n maxWidth,\n maxLines,\n },\n text,\n );\n\n if (!text && !node.children?.length) return null;\n\n return (\n <div\n className={cn(\n \"mt-1 text-xs leading-snug text-muted-foreground\",\n node.style?.className,\n )}\n style={inlineStyle}\n title={node.tooltip?.plain ?? text}\n >\n {content}\n </div>\n );\n}\n\nfunction ClickyText({ node }: { node: ClickyNode }) {\n const inlineStyle = toInlineStyle(node.style, node.text ?? node.plain);\n const content = <ClickyInlineContent node={node} />;\n\n if (!node.style && !node.tooltip) {\n return <>{content}</>;\n }\n\n return (\n <span\n style={inlineStyle}\n title={node.tooltip?.plain}\n className={cn(\n node.style?.className,\n (node.text ?? \"\").includes(\"\\n\") && \"whitespace-pre-wrap\",\n )}\n >\n {content}\n </span>\n );\n}\n\nfunction ClickyInlineContent({ node }: { node: ClickyNode }) {\n return (\n <>\n {node.text}\n {node.children?.map((child, index) => (\n <Fragment key={index}>\n <ClickyNodeRenderer node={child} />\n </Fragment>\n ))}\n </>\n );\n}\n\nfunction ClickyLinkNode({ node }: { node: ClickyNode }) {\n const content = <ClickyInlineContent node={node} />;\n const inlineStyle = toInlineStyle(node.style, node.text ?? node.plain);\n const target = browserAnchorTarget(node.target);\n const rel = target === \"_blank\" ? \"noopener noreferrer\" : undefined;\n\n if (!node.href) {\n return <span style={inlineStyle}>{content}</span>;\n }\n\n return (\n <a\n href={node.href}\n target={target}\n rel={rel}\n title={node.tooltip?.plain}\n style={inlineStyle}\n className={cn(node.style?.className, \"inline cursor-pointer\")}\n >\n {content}\n </a>\n );\n}\n\nfunction ClickyLinkCommandNode({ node }: { node: ClickyNode }) {\n const runtime = useContext(ClickyRuntimeContext);\n const request = useMemo(() => clickyNodeToCommandRequest(node), [node]);\n const resolved = useMemo(\n () =>\n resolveClickyCommand(request, runtime.commandRuntime, runtime.operations),\n [request, runtime.commandRuntime, runtime.operations],\n );\n const target = request.target ?? \"Dialog\";\n const hasRuntime = runtime.commandRuntime != null;\n const [dialogOpen, setDialogOpen] = useState(false);\n const [expanded, setExpanded] = useState(false);\n\n if (!hasRuntime) {\n return (\n <span title={node.tooltip?.plain} className={cn(node.style?.className)}>\n <ClickyInlineContent node={node} />\n </span>\n );\n }\n\n if (target === \"_self\" || target === \"_window\" || target === \"_tab\") {\n const href =\n runtime.commandRuntime?.hrefForCommand?.(resolved) ??\n buildCommandExecutionHref(resolved);\n\n if (!href) {\n return (\n <span title={node.tooltip?.plain} className={cn(node.style?.className)}>\n <ClickyInlineContent node={node} />\n </span>\n );\n }\n\n return (\n <a\n href={href}\n target={browserAnchorTarget(target)}\n rel={target === \"_self\" ? undefined : \"noopener noreferrer\"}\n title={node.tooltip?.plain}\n style={toInlineStyle(node.style, node.text ?? node.plain)}\n className={cn(node.style?.className, \"inline cursor-pointer\")}\n >\n <ClickyInlineContent node={node} />\n </a>\n );\n }\n\n if (target === \"_clicky\") {\n return (\n <ClickyLinkCommandTrigger\n node={node}\n onClick={() => runtime.commandRuntime?.onNavigate?.(resolved)}\n />\n );\n }\n\n if (target === \"Hover\") {\n return (\n <HoverCard\n delay={75}\n cardClassName=\"w-[28rem] max-w-[calc(100vw-2rem)] whitespace-normal p-0\"\n trigger={<ClickyLinkCommandTrigger node={node} />}\n >\n <div className=\"max-h-[26rem] overflow-auto p-density-3\">\n <ClickyAsyncCommandResult resolved={resolved} />\n </div>\n </HoverCard>\n );\n }\n\n if (target === \"Expand\") {\n return (\n <span className=\"inline\">\n <ClickyLinkCommandTrigger\n node={node}\n ariaExpanded={expanded}\n onClick={() => setExpanded((current) => !current)}\n />\n {expanded && (\n <div className=\"mt-2 rounded-md border border-border bg-background p-density-3\">\n <ClickyAsyncCommandResult resolved={resolved} />\n </div>\n )}\n </span>\n );\n }\n\n return (\n <>\n <ClickyLinkCommandTrigger\n node={node}\n ariaExpanded={dialogOpen}\n onClick={() => setDialogOpen(true)}\n />\n <ClickyCommandDialog\n open={dialogOpen}\n onClose={() => setDialogOpen(false)}\n resolved={resolved}\n />\n </>\n );\n}\n\nfunction ClickyLinkCommandTrigger({\n node,\n onClick,\n ariaExpanded,\n}: {\n node: ClickyNode;\n onClick?: () => void;\n ariaExpanded?: boolean;\n}) {\n const inlineStyle = toInlineStyle(node.style, node.text ?? node.plain);\n\n const handleClick = (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n onClick?.();\n };\n\n return (\n <button\n type=\"button\"\n title={node.tooltip?.plain}\n aria-expanded={ariaExpanded}\n onClick={handleClick}\n style={inlineStyle}\n className={cn(\n \"inline cursor-pointer appearance-none border-0 bg-transparent p-0 text-left align-baseline text-inherit\",\n node.style?.className,\n )}\n >\n <ClickyInlineContent node={node} />\n </button>\n );\n}\n\nfunction ClickyCommandDialog({\n open,\n onClose,\n resolved,\n}: {\n open: boolean;\n onClose: () => void;\n resolved: ClickyResolvedCommand;\n}) {\n const runtime = useContext(ClickyRuntimeContext);\n const operation = resolved.operation;\n const parameters = operation?.operation.parameters ?? [];\n const initialValues = useMemo(\n () => buildCommandParameterValues(parameters, resolved.request),\n [parameters, resolved.request],\n );\n const [result, setResult] = useState<unknown>(null);\n const [error, setError] = useState(\"\");\n const [isExecuting, setIsExecuting] = useState(false);\n const [hasAutoStarted, setHasAutoStarted] = useState(false);\n const shouldAutoRun =\n open &&\n resolved.request.autoRun === true &&\n operation != null &&\n missingRequiredParameters(parameters, initialValues).length === 0;\n\n useEffect(() => {\n if (!open) {\n setHasAutoStarted(false);\n setResult(null);\n setError(\"\");\n }\n }, [open, resolved.request.command]);\n\n async function runCommand(values: ParameterValues) {\n if (!runtime.commandRuntime || !operation) {\n return;\n }\n\n setIsExecuting(true);\n setError(\"\");\n\n try {\n const response = await executeClickyCommand(\n runtime.commandRuntime.client,\n operation,\n values,\n );\n setResult(response);\n } catch (err) {\n setResult(null);\n setError(\n err instanceof Error ? err.message : String(err ?? \"Unknown error\"),\n );\n } finally {\n setIsExecuting(false);\n }\n }\n\n useEffect(() => {\n if (!shouldAutoRun || hasAutoStarted) {\n return;\n }\n\n setHasAutoStarted(true);\n void runCommand(initialValues);\n }, [hasAutoStarted, initialValues, shouldAutoRun]);\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n title={operation?.operation.summary || resolved.request.command}\n size=\"xl\"\n >\n <div className=\"space-y-4\">\n {operation ? (\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-muted-foreground\">\n <span className=\"rounded-md border border-border bg-muted px-2 py-1 font-medium uppercase\">\n {operation.method}\n </span>\n <code>{operation.path}</code>\n </div>\n ) : runtime.operationsLoading ? (\n <ClickyNotice\n title=\"Loading commands\"\n message=\"Resolving the command definition.\"\n />\n ) : (\n <ClickyNotice\n title=\"Unknown command\"\n message={`No operation matched \"${resolved.request.command}\".`}\n tone=\"destructive\"\n />\n )}\n\n {operation && (\n <div className=\"rounded-md border border-border bg-muted/20 p-density-3\">\n <FilterForm\n client={runtime.commandRuntime!.client}\n path={operation.path}\n method={operation.method}\n parameters={parameters}\n initialValues={initialValues}\n isSubmitting={isExecuting}\n submitLabel=\"Run command\"\n submittingLabel=\"Running…\"\n onSubmit={runCommand}\n />\n </div>\n )}\n\n {error ? (\n <ClickyNotice\n title=\"Command failed\"\n message={error}\n tone=\"destructive\"\n />\n ) : (\n <ClickyCommandResponse\n response={result}\n pending={isExecuting}\n emptyMessage=\"Run the command to load a Clicky response.\"\n />\n )}\n </div>\n </Modal>\n );\n}\n\nfunction ClickyAsyncCommandResult({\n resolved,\n}: {\n resolved: ClickyResolvedCommand;\n}) {\n const runtime = useContext(ClickyRuntimeContext);\n const operation = resolved.operation;\n const parameters = operation?.operation.parameters ?? [];\n const initialValues = useMemo(\n () => buildCommandParameterValues(parameters, resolved.request),\n [parameters, resolved.request],\n );\n const missing = useMemo(\n () => missingRequiredParameters(parameters, initialValues),\n [initialValues, parameters],\n );\n\n const query = useQuery({\n queryKey: [\n \"clicky-command\",\n resolved.request.command,\n operation?.method,\n operation?.path,\n initialValues,\n ],\n enabled:\n runtime.commandRuntime != null &&\n operation != null &&\n missing.length === 0,\n retry: 0,\n queryFn: async () =>\n executeClickyCommand(\n runtime.commandRuntime!.client,\n operation!,\n initialValues,\n ),\n });\n\n if (!runtime.commandRuntime) {\n return (\n <ClickyNotice\n title=\"Command runtime unavailable\"\n message=\"This Clicky view was rendered without a command runtime.\"\n tone=\"warning\"\n />\n );\n }\n\n if (!operation) {\n if (runtime.operationsLoading) {\n return (\n <ClickyNotice\n title=\"Loading commands\"\n message=\"Resolving the command definition.\"\n />\n );\n }\n return (\n <ClickyNotice\n title=\"Unknown command\"\n message={`No operation matched \"${resolved.request.command}\".`}\n tone=\"destructive\"\n />\n );\n }\n\n if (missing.length > 0) {\n return (\n <ClickyNotice\n title=\"Missing required parameters\"\n message={`This link is missing: ${missing.map((param) => prettifyName(param.name)).join(\", \")}.`}\n tone=\"warning\"\n />\n );\n }\n\n if (query.isPending) {\n return (\n <ClickyNotice\n title=\"Running command\"\n message=\"Loading Clicky response…\"\n />\n );\n }\n\n if (query.isError) {\n return (\n <ClickyNotice\n title=\"Command failed\"\n message={\n query.error instanceof Error ? query.error.message : \"Request failed\"\n }\n tone=\"destructive\"\n />\n );\n }\n\n return (\n <ClickyCommandResponse\n response={query.data}\n emptyMessage=\"No response body returned.\"\n />\n );\n}\n\nfunction ClickyCommandResponse({\n response,\n pending = false,\n emptyMessage,\n}: {\n response: unknown;\n pending?: boolean;\n emptyMessage: string;\n}) {\n if (pending) {\n return (\n <ClickyNotice\n title=\"Running command\"\n message=\"Loading Clicky response…\"\n />\n );\n }\n\n if (!response) {\n return <ClickyNotice title=\"No response\" message={emptyMessage} />;\n }\n\n const parsedPayload = isExecutionResponse(response)\n ? (response.parsed ?? parseJsonBody(response))\n : response;\n const rawText = isExecutionResponse(response)\n ? response.stdout || response.output || response.message || \"\"\n : typeof response === \"string\"\n ? response\n : JSON.stringify(response, null, 2);\n const clickyPayload =\n typeof parsedPayload === \"string\" ||\n (parsedPayload != null && typeof parsedPayload === \"object\")\n ? parsedPayload\n : rawText;\n const parsedClicky =\n clickyPayload === \"\"\n ? null\n : parseClickyData(clickyPayload as ClickyProps[\"data\"]);\n\n if (parsedClicky?.ok) {\n return (\n <div className=\"rounded-md border border-border bg-background p-density-3\">\n <ClickyNodeRenderer node={parsedClicky.document.node} />\n </div>\n );\n }\n\n if (parsedPayload != null && typeof parsedPayload === \"object\") {\n return <ClickyJsonTree value={parsedPayload} />;\n }\n\n return <ClickyTextPreview title=\"Response body\" content={rawText} />;\n}\n\nfunction ClickyIconNode({ node }: { node: ClickyNode }) {\n const inlineStyle = toInlineStyle(node.style, node.plain ?? node.unicode);\n\n return (\n <span\n style={inlineStyle}\n title={node.tooltip?.plain}\n className=\"inline-flex items-center\"\n >\n {node.iconify ? (\n <Icon name={node.iconify} />\n ) : (\n <span>{node.unicode ?? node.plain}</span>\n )}\n </span>\n );\n}\n\nfunction ClickyHeading({ node }: { node: ClickyNode }) {\n const level = clampHeadingLevel(node.level);\n const content = node.content ?? clickyNodeFallbackText(node);\n const inlineStyle = toInlineStyle(node.style, clickyNodeText(content));\n const className = cn(\n headingClassName(level),\n \"text-foreground\",\n node.style?.className,\n );\n\n switch (level) {\n case 1:\n return (\n <h1 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h1>\n );\n case 2:\n return (\n <h2 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h2>\n );\n case 3:\n return (\n <h3 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h3>\n );\n case 4:\n return (\n <h4 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h4>\n );\n case 5:\n return (\n <h5 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h5>\n );\n default:\n return (\n <h6 className={className} style={inlineStyle}>\n {content && <ClickyNodeRenderer node={content} />}\n </h6>\n );\n }\n}\n\nfunction clampHeadingLevel(level: number | undefined) {\n if (!Number.isFinite(level)) return 1;\n return Math.min(6, Math.max(1, Math.trunc(level ?? 1)));\n}\n\nfunction headingClassName(level: number) {\n switch (level) {\n case 1:\n return \"text-2xl font-semibold leading-tight\";\n case 2:\n return \"text-xl font-semibold leading-tight\";\n case 3:\n return \"text-lg font-semibold leading-snug\";\n case 4:\n return \"text-base font-semibold leading-snug\";\n case 5:\n return \"text-sm font-semibold leading-snug\";\n default:\n return \"text-xs font-semibold uppercase leading-snug text-muted-foreground\";\n }\n}\n\nfunction ClickyBlockquote({ node }: { node: ClickyNode }) {\n const content = node.content ?? clickyNodeFallbackText(node);\n if (!content) return null;\n\n return (\n <blockquote className=\"border-l-4 border-border pl-density-3 text-sm leading-relaxed text-muted-foreground\">\n <ClickyNodeRenderer node={content} />\n </blockquote>\n );\n}\n\nfunction ClickyAdmonition({ node }: { node: ClickyNode }) {\n const severity = normalizeAdmonitionSeverity(node.severity);\n const title = node.label ?? {\n kind: \"text\" as const,\n text: prettifyName(severity),\n plain: prettifyName(severity),\n };\n const tone = admonitionToneClassName(severity);\n\n return (\n <div\n role={severity === \"danger\" || severity === \"warning\" ? \"alert\" : \"note\"}\n data-severity={severity}\n className={cn(\n \"rounded-md border px-density-3 py-density-2\",\n tone.container,\n )}\n >\n <div className={cn(\"text-sm font-semibold\", tone.title)}>\n <ClickyNodeRenderer node={title} />\n </div>\n {node.content && (\n <div className={cn(\"mt-1 text-sm leading-relaxed\", tone.body)}>\n <ClickyNodeRenderer node={node.content} />\n </div>\n )}\n </div>\n );\n}\n\nfunction normalizeAdmonitionSeverity(severity: string | undefined) {\n const normalized = (severity ?? \"note\").trim().toLowerCase();\n if (\n normalized === \"info\" ||\n normalized === \"tip\" ||\n normalized === \"warning\" ||\n normalized === \"danger\" ||\n normalized === \"note\"\n ) {\n return normalized;\n }\n return \"note\";\n}\n\n/**\n * Clicky's severity names against the Callout tone table, so the two renderers\n * cannot drift. A severity of `note` is the untinted aside — Clicky's `info` is\n * the one that carries the blue.\n */\nconst ADMONITION_VARIANTS: Record<string, CalloutVariant> = {\n info: \"note\",\n tip: \"tip\",\n warning: \"warning\",\n danger: \"caution\",\n note: \"default\",\n};\n\nfunction admonitionToneClassName(severity: string) {\n const styles = calloutVariantStyles(ADMONITION_VARIANTS[severity] ?? \"default\");\n return { container: styles.subtle, title: styles.title, body: styles.content };\n}\n\nfunction ClickyFootnoteRef({ node }: { node: ClickyNode }) {\n const id = normalizeFootnoteId(node.id);\n if (!id) return null;\n\n return (\n <sup id={footnoteDomId(\"fnref\", id)} className=\"align-super text-[0.75em]\">\n <a\n href={`#${footnoteDomId(\"fn\", id)}`}\n aria-label={`Footnote ${id}`}\n className=\"text-primary hover:underline\"\n >\n {`[^${id}]`}\n </a>\n </sup>\n );\n}\n\nfunction ClickyFootnote({ node }: { node: ClickyNode }) {\n const id = normalizeFootnoteId(node.id);\n if (!id) return null;\n\n return (\n <div id={footnoteDomId(\"fn\", id)} className=\"text-sm text-muted-foreground\">\n <span className=\"mr-2 font-mono text-xs text-foreground\">{`[^${id}]`}</span>\n {node.content && <ClickyNodeRenderer node={node.content} />}\n <FootnoteBackLink id={id} />\n </div>\n );\n}\n\nfunction ClickyFootnotes({ node }: { node: ClickyNode }) {\n const items = (node.items ?? []).filter((item) =>\n normalizeFootnoteId(item.id),\n );\n if (items.length === 0) return null;\n\n return (\n <section\n aria-label=\"Footnotes\"\n className=\"border-t border-border pt-density-2 text-xs text-muted-foreground\"\n >\n <ol className=\"ml-5 list-decimal space-y-1\">\n {items.map((item, index) => (\n <li\n key={`${item.id}-${index}`}\n id={footnoteDomId(\"fn\", item.id ?? \"\")}\n >\n {item.content && <ClickyNodeRenderer node={item.content} />}\n <FootnoteBackLink id={item.id ?? \"\"} />\n </li>\n ))}\n </ol>\n </section>\n );\n}\n\nfunction FootnoteBackLink({ id }: { id: string }) {\n return (\n <a\n href={`#${footnoteDomId(\"fnref\", id)}`}\n aria-label={`Back to footnote reference ${id}`}\n className=\"ml-2 text-primary hover:underline\"\n >\n back\n </a>\n );\n}\n\nfunction normalizeFootnoteId(id: string | undefined) {\n return (id ?? \"\").trim();\n}\n\nfunction footnoteDomId(prefix: \"fn\" | \"fnref\", id: string) {\n return `${prefix}-${encodeURIComponent(id)}`;\n}\n\nfunction clickyNodeFallbackText(node: ClickyNode): ClickyNode | undefined {\n const text = node.text ?? node.plain;\n return text ? { kind: \"text\", text, plain: text } : undefined;\n}\n\nfunction ClickyList({ node }: { node: ClickyNode }) {\n const items = node.items ?? [];\n if (items.length === 0) return null;\n\n if (node.inline) {\n return (\n <span className=\"inline-flex flex-wrap items-start gap-1\">\n {items.map((item, index) => (\n <Fragment key={index}>\n {index > 0 && <span className=\"text-muted-foreground\">,</span>}\n <span className=\"inline-flex items-center gap-1\">\n {!node.ordered && node.bullet && (\n <ClickyNodeRenderer node={node.bullet} />\n )}\n {node.ordered && (\n <span className=\"text-muted-foreground\">{index + 1}.</span>\n )}\n <ClickyNodeRenderer node={item} />\n </span>\n </Fragment>\n ))}\n </span>\n );\n }\n\n if (node.unstyled) {\n return (\n <div className=\"space-y-1\">\n {items.map((item, index) => (\n <div key={index} className=\"flex items-start gap-2\">\n {!node.ordered && node.bullet && (\n <ClickyNodeRenderer node={node.bullet} />\n )}\n {node.ordered && (\n <span className=\"text-muted-foreground\">{index + 1}.</span>\n )}\n <div className=\"min-w-0 flex-1\">\n <ClickyNodeRenderer node={item} />\n </div>\n </div>\n ))}\n </div>\n );\n }\n\n const Tag = node.ordered ? \"ol\" : \"ul\";\n const listClass = node.ordered ? \"list-decimal\" : \"list-disc\";\n\n return (\n <Tag className={cn(\"ml-5 space-y-1 text-sm\", listClass)}>\n {items.map((item, index) => (\n <li key={index}>\n <ClickyNodeRenderer node={item} />\n </li>\n ))}\n </Tag>\n );\n}\n\nfunction ClickyMap({ node }: { node: ClickyNode }) {\n const runtime = useContext(ClickyRuntimeContext);\n const fields = (node.fields ?? []).filter(\n (field) => !(runtime.tablePagination && isPaginationMetadataField(field)),\n );\n if (fields.length === 0) return null;\n\n const inlineFields = fields.filter((field) => isInlineNode(field.value));\n const blockFields = fields.filter((field) => !isInlineNode(field.value));\n\n // A map that is nothing but a wrapper around one table renders the table\n // directly — no field label, no bordered box — so it behaves exactly like a\n // bare table node (same fill/scroll, e.g. inside a scrollBody=false modal).\n // Multi-field maps keep the labelled/bordered section layout below.\n const unwrapsSingleTable =\n inlineFields.length === 0 &&\n blockFields.length === 1 &&\n blockFields[0]?.value.kind === \"table\";\n\n if (unwrapsSingleTable) {\n return <ClickyNodeRenderer node={blockFields[0]!.value} />;\n }\n\n return (\n <div className=\"space-y-density-4\">\n {inlineFields.length > 0 && (\n <dl className=\"grid gap-density-3 md:grid-cols-2\">\n {inlineFields.map((field) => (\n <div key={field.name}>\n <dt className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {field.label || prettifyName(field.name)}\n </dt>\n <dd className=\"mt-1 text-sm text-foreground\">\n <ClickyNodeRenderer node={field.value} />\n </dd>\n </div>\n ))}\n </dl>\n )}\n\n {blockFields.map((field) => (\n <section key={field.name} className=\"space-y-2\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {field.label || prettifyName(field.name)}\n </div>\n <div className=\"rounded-md border border-border bg-background p-density-3\">\n <ClickyNodeRenderer node={field.value} />\n </div>\n </section>\n ))}\n </div>\n );\n}\n\nfunction isPaginationMetadataField(field: ClickyField) {\n const name = (field.label || field.name || \"\").toLowerCase();\n if (name !== \"page\" || field.value.kind !== \"map\") return false;\n const keys = new Set(\n (field.value.fields ?? []).map((item) => item.name.toLowerCase()),\n );\n return keys.has(\"limit\") && keys.has(\"offset\") && keys.has(\"total\");\n}\n\nfunction ClickyTableNode({ node }: { node: ClickyNode }) {\n return (\n <ClickyTable\n columns={node.columns ?? []}\n rows={node.rows ?? []}\n {...(node.autoFilter !== undefined\n ? { autoFilter: node.autoFilter }\n : {})}\n />\n );\n}\n\nexport function ClickyTable({\n columns,\n rows,\n autoFilter,\n onTableRowClick,\n getTableRowHref,\n isTableRowClickable,\n search,\n timeRange,\n externalFilters,\n cellFilters,\n onCellFilterChange,\n pagination,\n sort,\n onSortChange,\n infinite,\n rowSelection,\n menuActions,\n loading,\n}: ClickyTableProps) {\n const runtime = useContext(ClickyRuntimeContext);\n const rowClick = onTableRowClick ?? runtime.onTableRowClick;\n const rowHref = getTableRowHref ?? runtime.getTableRowHref;\n const rowClickable = isTableRowClickable ?? runtime.isTableRowClickable;\n const effectiveSearch = search ?? runtime.tableSearch;\n const effectiveTimeRange = timeRange ?? runtime.tableTimeRange;\n const effectiveExternalFilters =\n externalFilters ?? runtime.tableExternalFilters;\n const effectiveCellFilters = cellFilters ?? runtime.tableCellFilters;\n const effectiveCellFilterChange =\n onCellFilterChange ?? runtime.onTableCellFilterChange;\n const effectivePagination = pagination ?? runtime.tablePagination;\n const effectiveSort = sort !== undefined ? sort : runtime.tableSort;\n const effectiveSortChange = onSortChange ?? runtime.onTableSortChange;\n const effectiveInfinite = infinite ?? runtime.tableInfinite;\n const effectiveRowSelection = rowSelection ?? runtime.tableRowSelection;\n const effectiveMenuActions = menuActions ?? runtime.tableMenuActions;\n const effectiveLoading = loading ?? runtime.tableLoading;\n\n if (columns.length === 0) {\n return <div className=\"text-sm text-muted-foreground\">No data</div>;\n }\n\n if (shouldRenderRowsAsCollapsedStructs(columns, rows)) {\n return <ClickyCollapsedStructRows columns={columns} rows={rows} />;\n }\n\n const tableColumns: DataTableColumn<ClickyRow>[] = columns.map((column) => {\n const tagColumn = isClickyTagColumn(column);\n const keyValueColumn = isClickyKeyValueColumn(column);\n const jsonColumn = column.type === \"json\";\n const base: DataTableColumn<ClickyRow> = {\n key: `cells.${column.name}`,\n accessor: (row) => row.cells[column.name],\n label: column.header ? (\n <ClickyNodeRenderer node={column.header} />\n ) : (\n column.label || prettifyName(column.name)\n ),\n ...(column.align ? { align: column.align } : {}),\n ...(effectiveSortChange\n ? { sortable: Boolean(column.sortKey) }\n : column.sortable !== undefined\n ? { sortable: column.sortable }\n : {}),\n ...(column.filterable !== undefined\n ? { filterable: column.filterable }\n : {}),\n ...(column.filterKey ? { filterKey: column.filterKey } : {}),\n serverFilterValue: (value) => {\n const node = value as ClickyNode;\n return node.filterValue ?? clickyNodeText(node);\n },\n serverFilterLabel: (value) => clickyNodeText(value as ClickyNode),\n ...(column.grow !== undefined ? { grow: column.grow } : {}),\n ...(column.shrink !== undefined ? { shrink: column.shrink } : {}),\n };\n if (keyValueColumn) {\n return {\n ...base,\n kind: \"tags\",\n render: (value) => <ClickyKeyValueCell node={value as ClickyNode} />,\n sortValue: (value) => clickyKeyValueText(value as ClickyNode),\n filterValue: (value) => clickyKeyValueTokens(value as ClickyNode),\n };\n }\n\n if (jsonColumn) {\n return {\n ...base,\n render: (value) => <ClickyJSONCell node={value as ClickyNode} />,\n sortValue: (value) => clickyJSONText(value as ClickyNode),\n filterValue: (value) => clickyJSONText(value as ClickyNode),\n };\n }\n\n if (tagColumn) {\n return {\n ...base,\n kind: \"tags\",\n render: (value) => {\n const tags = clickyNodeTags(value as ClickyNode, column);\n return <TagList tags={tags} maxVisible={3} />;\n },\n sortValue: (value) =>\n clickyNodeTags(value as ClickyNode, column).length,\n filterValue: (value) =>\n clickyNodeTags(value as ClickyNode, column).map((tag) => tag.token),\n };\n }\n\n return {\n ...base,\n ...(column.kind ? { kind: column.kind } : {}),\n render: (value) => <ClickyNodeRenderer node={value as ClickyNode} />,\n sortValue: (value) => clickyNodeText(value as ClickyNode),\n filterValue: (value) => clickyNodeText(value as ClickyNode),\n };\n });\n\n const defaultSortColumn =\n effectivePagination || effectiveSortChange\n ? undefined\n : (columns.find((column) => column.sortable !== false) ?? columns[0]);\n const controlledTableSort = effectiveSort\n ? (() => {\n const column = columns.find(\n (candidate) => candidate.sortKey === effectiveSort.key,\n );\n if (!column) {\n throw new Error(\n `Server sort key ${effectiveSort.key} does not match a Clicky column`,\n );\n }\n return { key: `cells.${column.name}`, dir: effectiveSort.dir };\n })()\n : effectiveSort === null\n ? null\n : undefined;\n const onControlledTableSortChange = effectiveSortChange\n ? (next: SortState | null) => {\n if (!next) {\n effectiveSortChange(null);\n return;\n }\n const columnName = next.key.startsWith(\"cells.\")\n ? next.key.slice(\"cells.\".length)\n : next.key;\n const column = columns.find(\n (candidate) => candidate.name === columnName,\n );\n if (!column?.sortKey) {\n throw new Error(\n `Clicky column ${columnName} does not declare a server sort key`,\n );\n }\n effectiveSortChange({ key: column.sortKey, dir: next.dir });\n }\n : undefined;\n\n // Fill a bounded flex-column parent (e.g. a scrollBody=false modal) so the\n // table's own scroll region scrolls rather than the whole dialog; `flex-1` is\n // inert in an unbounded/block parent, so page-level tables size to content.\n return (\n <DataTable<ClickyRow>\n className=\"min-h-0 flex-1\"\n data={rows}\n columns={tableColumns}\n {...(autoFilter !== undefined ? { autoFilter } : {})}\n {...(defaultSortColumn\n ? {\n defaultSort: {\n key: `cells.${defaultSortColumn.name}`,\n dir: \"asc\" as const,\n },\n }\n : {})}\n {...(controlledTableSort !== undefined\n ? { sort: controlledTableSort }\n : {})}\n {...(onControlledTableSortChange\n ? { onSortChange: onControlledTableSortChange, manualSort: true }\n : {})}\n getRowId={(row, index) =>\n effectiveRowSelection?.getRowId(row, index) ??\n `${index}-${columns\n .map((column) => clickyNodeText(row.cells[column.name]))\n .filter(Boolean)\n .join(\"|\")}`\n }\n {...(effectiveRowSelection\n ? { rowSelection: effectiveRowSelection }\n : {})}\n {...(rowClick ? { onRowClick: rowClick } : {})}\n {...(rowHref ? { getRowHref: rowHref } : {})}\n {...(rowClick && (rowClickable || rowHref)\n ? {\n isRowClickable: rowClickable ?? ((row) => Boolean(rowHref?.(row))),\n }\n : {})}\n {...(effectiveSearch ? { externalSearch: effectiveSearch } : {})}\n {...(effectiveTimeRange ? { externalTimeRange: effectiveTimeRange } : {})}\n {...(effectiveExternalFilters\n ? { externalFilters: effectiveExternalFilters }\n : {})}\n {...(effectiveCellFilters ? { cellFilters: effectiveCellFilters } : {})}\n {...(effectiveCellFilterChange\n ? { onCellFilterChange: effectiveCellFilterChange }\n : {})}\n {...(effectivePagination ? { pagination: effectivePagination } : {})}\n {...(effectiveInfinite ? { infinite: effectiveInfinite } : {})}\n {...(effectiveMenuActions ? { menuActions: effectiveMenuActions } : {})}\n {...(effectiveLoading !== undefined ? { loading: effectiveLoading } : {})}\n />\n );\n}\n\nfunction ClickyCollapsedStructRows({\n columns,\n rows,\n}: {\n columns: ClickyColumn[];\n rows: ClickyRow[];\n}) {\n return (\n <div className=\"space-y-2\">\n {rows.map((row, index) => {\n const label = rowStructLabel(row, columns, index);\n const content = rowAsMap(row, columns);\n\n return (\n <details\n key={rowStructKey(row, columns, index)}\n className=\"rounded-md border border-border bg-background\"\n >\n <summary className=\"cursor-pointer px-3 py-2 text-sm font-medium text-foreground\">\n {label}\n </summary>\n <div className=\"border-t border-border p-3\">\n <ClickyMap node={content} />\n </div>\n </details>\n );\n })}\n </div>\n );\n}\n\nfunction shouldRenderRowsAsCollapsedStructs(\n columns: ClickyColumn[],\n rows: ClickyRow[],\n) {\n if (rows.length === 0) return false;\n if (\n columns.some(\n (column) => isClickyKeyValueColumn(column) || column.type === \"json\",\n )\n ) {\n return false;\n }\n\n return rows.every((row) => {\n const cells = columns\n .map((column) => row.cells[column.name])\n .filter(Boolean);\n if (cells.length === 0) return false;\n\n const complexCells = cells.filter(isStructCellNode);\n return complexCells.length > 0 && complexCells.length === cells.length;\n });\n}\n\nfunction isClickyTagColumn(column: ClickyColumn) {\n if (column.kind === \"tags\") return true;\n\n const normalized = column.name.toLowerCase();\n return /(^|[._-])(tags?|labels?|annotations?)$/.test(normalized);\n}\n\nfunction isClickyKeyValueColumn(column: ClickyColumn) {\n return column.type === \"key_value\" || column.type === \"key_values\";\n}\n\ntype ClickyKeyValuePair = {\n key: string;\n value: ClickyNode;\n};\n\nfunction ClickyKeyValueCell({ node }: { node: ClickyNode | undefined }) {\n const pairs = clickyNodeKeyValues(node);\n if (pairs.length === 0) {\n const fallback = clickyNodeText(node).trim();\n return fallback ? (\n <span className=\"text-sm text-foreground\">{fallback}</span>\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n );\n }\n\n return (\n <dl className=\"grid grid-cols-[max-content_minmax(0,1fr)] gap-x-2 gap-y-1 text-xs\">\n {pairs.map((pair, index) => (\n <Fragment key={`${pair.key}-${index}`}>\n <dt className=\"font-medium text-muted-foreground\">{pair.key}</dt>\n <dd className=\"min-w-0 break-words text-foreground\">\n <ClickyNodeRenderer node={pair.value} />\n </dd>\n </Fragment>\n ))}\n </dl>\n );\n}\n\nfunction ClickyJSONCell({ node }: { node: ClickyNode | undefined }) {\n const value = clickyNodeJSONValue(node);\n return (\n <div\n className=\"max-h-40 min-w-40 max-w-xl overflow-auto text-xs\"\n onClick={(event) => event.stopPropagation()}\n >\n <JsonView data={value} defaultOpenDepth={0} />\n </div>\n );\n}\n\nfunction clickyNodeKeyValues(\n node: ClickyNode | undefined,\n): ClickyKeyValuePair[] {\n if (!node) return [];\n if (node.kind === \"map\") return clickyFieldsToKeyValues(node.fields ?? []);\n if (node.kind === \"list\") {\n return (node.items ?? []).flatMap((item) => clickyNodeKeyValues(item));\n }\n\n const source = node.kind === \"code\" ? node.source : (node.text ?? node.plain);\n if (!source) return [];\n try {\n return unknownToKeyValues(JSON.parse(source) as unknown);\n } catch {\n return [];\n }\n}\n\nfunction clickyFieldsToKeyValues(fields: ClickyField[]): ClickyKeyValuePair[] {\n const keyField = fields.find((field) => /^(key|name)$/i.test(field.name));\n const valueField = fields.find((field) => /^value$/i.test(field.name));\n if (keyField && valueField) {\n const key = clickyNodeText(keyField.value).trim();\n if (key) return [{ key, value: valueField.value }];\n }\n return fields.map((field) => ({\n key: field.label || field.name,\n value: field.value,\n }));\n}\n\nfunction unknownToKeyValues(value: unknown): ClickyKeyValuePair[] {\n if (Array.isArray(value)) return value.flatMap(unknownToKeyValues);\n if (!value || typeof value !== \"object\") return [];\n\n const object = value as Record<string, unknown>;\n const keyName = Object.keys(object).find((key) => /^(key|name)$/i.test(key));\n const valueName = Object.keys(object).find((key) => /^value$/i.test(key));\n if (keyName && valueName && typeof object[keyName] === \"string\") {\n return [\n {\n key: object[keyName],\n value: unknownToClickyNode(object[valueName]),\n },\n ];\n }\n\n return Object.keys(object)\n .sort((left, right) => left.localeCompare(right))\n .map((key) => ({ key, value: unknownToClickyNode(object[key]) }));\n}\n\nfunction unknownToClickyNode(value: unknown): ClickyNode {\n if (Array.isArray(value)) {\n return {\n kind: \"list\",\n plain: JSON.stringify(value),\n items: value.map(unknownToClickyNode),\n };\n }\n if (value && typeof value === \"object\") {\n const object = value as Record<string, unknown>;\n return {\n kind: \"map\",\n plain: JSON.stringify(value),\n fields: Object.keys(object)\n .sort((left, right) => left.localeCompare(right))\n .map((key) => ({ name: key, value: unknownToClickyNode(object[key]) })),\n };\n }\n const text = value === null ? \"null\" : String(value ?? \"\");\n return { kind: \"text\", text, plain: text };\n}\n\nfunction clickyKeyValueTokens(node: ClickyNode | undefined) {\n return clickyNodeKeyValues(node)\n .map((pair) => `${pair.key}=${clickyNodeCanonicalText(pair.value)}`)\n .filter((token) => !token.endsWith(\"=\"));\n}\n\nfunction clickyKeyValueText(node: ClickyNode | undefined) {\n return clickyKeyValueTokens(node).join(\", \");\n}\n\nfunction clickyNodeCanonicalText(node: ClickyNode | undefined) {\n const text = clickyNodeText(node).trim();\n if (text) return text;\n const value = clickyNodeJSONValue(node);\n return value === undefined ? \"\" : JSON.stringify(value);\n}\n\nfunction clickyNodeJSONValue(node: ClickyNode | undefined): unknown {\n if (!node) return undefined;\n if (node.kind === \"map\") {\n return Object.fromEntries(\n (node.fields ?? []).map((field) => [\n field.name,\n clickyNodeJSONValue(field.value),\n ]),\n );\n }\n if (node.kind === \"list\") {\n return (node.items ?? []).map(clickyNodeJSONValue);\n }\n const source =\n node.kind === \"code\"\n ? (node.source ?? node.plain)\n : (node.text ?? node.plain);\n if (source === undefined) return clickyNodeText(node);\n try {\n return JSON.parse(source) as unknown;\n } catch {\n return source;\n }\n}\n\nfunction clickyJSONText(node: ClickyNode | undefined) {\n const value = clickyNodeJSONValue(node);\n return value === undefined ? \"\" : JSON.stringify(value);\n}\n\nfunction clickyNodeTags(\n node: ClickyNode | undefined,\n column: ClickyColumn,\n): NormalizedTag[] {\n if (!isClickyTagColumn(column)) return [];\n\n const value = clickyNodeTagsValue(node);\n return normalizeTags(value);\n}\n\nfunction clickyNodeTagsValue(node: ClickyNode | undefined): TagsValue {\n if (!node) return [];\n\n if (node.kind === \"map\" && node.fields?.length) {\n return Object.fromEntries(\n node.fields\n .map((field) => [field.name, clickyNodeText(field.value)] as const)\n .filter(([, value]) => value.trim() !== \"\"),\n );\n }\n\n if (node.kind === \"list\" && node.items?.length) {\n return node.items.map((item) => clickyNodeText(item)).filter(Boolean);\n }\n\n const text = clickyNodeText(node).trim();\n if (!text) return [];\n\n return text\n .split(/[,\\s]+/)\n .map((value) => value.trim())\n .filter(Boolean);\n}\n\nfunction isStructCellNode(node: ClickyNode | undefined) {\n if (!node) return false;\n if (node.kind === \"map\") return (node.fields ?? []).length > 0;\n if (node.kind === \"table\") return (node.rows ?? []).length > 0;\n if (node.kind !== \"list\") return false;\n\n const items = node.items ?? [];\n return items.length > 0 && items.every(isStructCellNode);\n}\n\nfunction rowAsMap(row: ClickyRow, columns: ClickyColumn[]): ClickyNode {\n return {\n kind: \"map\",\n fields: columns.flatMap((column) => {\n const value = row.cells[column.name];\n if (!value) return [];\n return [\n {\n name: column.name,\n label:\n clickyNodeText(column.header) ||\n column.label ||\n prettifyName(column.name),\n value,\n },\n ];\n }),\n };\n}\n\nfunction rowStructLabel(\n row: ClickyRow,\n columns: ClickyColumn[],\n index: number,\n) {\n const entityLabel = singularizeLabel(\n columns.find((column) => hasMeaningfulText(row.cells[column.name]))\n ?.label ??\n columns[0]?.label ??\n columns[0]?.name ??\n \"Item\",\n );\n const title = rowTitle(row, columns);\n return title\n ? `${entityLabel} ${index + 1}: ${title}`\n : `${entityLabel} ${index + 1}`;\n}\n\nfunction rowStructKey(row: ClickyRow, columns: ClickyColumn[], index: number) {\n const title = rowTitle(row, columns);\n return `${index}-${title || columns.map((column) => clickyNodeText(row.cells[column.name])).join(\"|\")}`;\n}\n\nfunction rowTitle(row: ClickyRow, columns: ClickyColumn[]) {\n const preferredFieldNames = [\n \"name\",\n \"title\",\n \"agreementname\",\n \"companyname\",\n \"customernumber\",\n \"id\",\n \"guid\",\n ];\n\n for (const preferred of preferredFieldNames) {\n for (const column of columns) {\n const candidate = findFieldText(row.cells[column.name], preferred);\n if (candidate) return candidate;\n }\n }\n\n for (const column of columns) {\n const candidate = clickyNodeText(row.cells[column.name]).trim();\n if (candidate) return candidate;\n }\n\n return \"\";\n}\n\nfunction findFieldText(\n node: ClickyNode | undefined,\n preferredName: string,\n): string {\n if (!node) return \"\";\n\n if (node.kind === \"map\") {\n for (const field of node.fields ?? []) {\n if (normalizeFieldName(field.name) === preferredName) {\n const text = clickyNodeText(field.value).trim();\n if (text) return text;\n }\n }\n }\n\n for (const field of node.fields ?? []) {\n const text = findFieldText(field.value, preferredName);\n if (text) return text;\n }\n\n for (const item of node.items ?? []) {\n const text = findFieldText(item, preferredName);\n if (text) return text;\n }\n\n return \"\";\n}\n\nfunction hasMeaningfulText(node: ClickyNode | undefined) {\n return Boolean(\n clickyNodeText(node).trim() || (node?.fields ?? []).length > 0,\n );\n}\n\nfunction normalizeFieldName(name: string) {\n return name.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction singularizeLabel(label: string) {\n const normalized = prettifyName(label).trim();\n return normalized.endsWith(\"s\") ? normalized.slice(0, -1) : normalized;\n}\n\nfunction ClickyTreeNode({ node }: { node: ClickyNode }) {\n const roots = node.roots ?? [];\n if (roots.length === 0) return null;\n\n return (\n <Tree<ClickyTreeItem>\n roots={roots}\n getChildren={(item) => item.children}\n getKey={(item) => item.id}\n defaultOpen={(_, depth) => depth < 1}\n renderRow={({ node: item }) => (\n <div className=\"min-w-0 flex-1 truncate\">\n <ClickyNodeRenderer node={item.label} />\n </div>\n )}\n />\n );\n}\n\nfunction isBadgeShape(value: string | undefined): value is BadgeShape {\n return value === \"pill\" || value === \"rounded\" || value === \"square\";\n}\n\nfunction ClickyBadgeNode({ node }: { node: ClickyNode }) {\n const props: ComponentProps<typeof Badge> = { variant: \"label\" };\n if (node.badgeLabel !== undefined) props.label = node.badgeLabel;\n if (node.badgeValue !== undefined) props.value = node.badgeValue;\n if (node.badgeColor !== undefined) props.color = node.badgeColor;\n if (node.badgeText !== undefined) props.textColor = node.badgeText;\n if (node.badgeIcon !== undefined) props.icon = node.badgeIcon;\n if (isBadgeShape(node.badgeShape)) props.shape = node.badgeShape;\n return <Badge {...props} />;\n}\n\nfunction ClickyStackTraceNode({ node }: { node: ClickyNode }) {\n const input = {\n causedBy: node.causedBy ?? [],\n frames: node.frames ?? [],\n language: \"java\" as const,\n ...(node.exceptionClass !== undefined\n ? { exceptionClass: node.exceptionClass }\n : {}),\n ...(node.message !== undefined ? { message: node.message } : {}),\n };\n\n return <StackTrace input={input} className=\"space-y-1\" />;\n}\n\nfunction ClickyCollapsed({ node }: { node: ClickyNode }) {\n return (\n <details className=\"rounded-md border border-border bg-background\">\n <summary className=\"cursor-pointer px-3 py-2 text-sm font-medium text-foreground\">\n <ClickyNodeRenderer node={node.label} />\n </summary>\n {node.content && (\n <div className=\"border-t border-border px-3 py-3\">\n <ClickyNodeRenderer node={node.content} />\n </div>\n )}\n </details>\n );\n}\n\nfunction ClickyButtonNode({ node }: { node: ClickyNode }) {\n const title = [node.id, node.payload].filter(Boolean).join(\"\\n\") || undefined;\n const content = node.label ? (\n <ClickyNodeRenderer node={node.label} />\n ) : (\n node.text\n );\n\n if (node.href) {\n return (\n <a\n href={node.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title={title}\n className=\"inline-flex items-center rounded-md border border-border bg-background px-3 py-1.5 text-sm font-medium text-foreground hover:bg-accent\"\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n title={title}\n className=\"inline-flex items-center rounded-md border border-border bg-muted px-3 py-1.5 text-sm font-medium text-foreground\"\n >\n {content}\n </button>\n );\n}\n\nfunction ClickyButtonGroup({ node }: { node: ClickyNode }) {\n const items = node.items ?? [];\n if (items.length === 0) return null;\n\n return (\n <div className=\"flex flex-wrap gap-2\">\n {items.map((item, index) => (\n <ClickyNodeRenderer key={index} node={item} />\n ))}\n </div>\n );\n}\n\nfunction ClickyHtmlNode({ node }: { node: ClickyNode }) {\n const sanitized = sanitizeHtml(node.html ?? \"\");\n if (!sanitized) return null;\n\n const Tag = isBlockHtml(sanitized) ? \"div\" : \"span\";\n return <Tag dangerouslySetInnerHTML={{ __html: sanitized }} />;\n}\n\nfunction toInlineStyle(\n style?: ClickyStyle,\n text?: string,\n): CSSProperties | undefined {\n if (!style)\n return text?.includes(\"\\n\") ? { whiteSpace: \"pre-wrap\" } : undefined;\n\n const inlineStyle: CSSProperties = {};\n\n if (style.color) inlineStyle.color = style.color;\n if (style.backgroundColor)\n inlineStyle.backgroundColor = style.backgroundColor;\n if (style.bold) inlineStyle.fontWeight = 700;\n if (style.faint) inlineStyle.opacity = 0.7;\n if (style.italic) inlineStyle.fontStyle = \"italic\";\n\n const decorations: string[] = [];\n if (style.underline) decorations.push(\"underline\");\n if (style.strikethrough) decorations.push(\"line-through\");\n if (decorations.length > 0)\n inlineStyle.textDecoration = decorations.join(\" \");\n\n if (\n style.textTransform === \"uppercase\" ||\n style.textTransform === \"lowercase\" ||\n style.textTransform === \"capitalize\"\n ) {\n inlineStyle.textTransform = style.textTransform;\n }\n\n if (style.maxWidth && style.maxWidth > 0) {\n inlineStyle.maxWidth = `${style.maxWidth}ch`;\n }\n\n if (style.maxLines && style.maxLines > 0) {\n inlineStyle.display = \"-webkit-box\";\n inlineStyle.overflow = \"hidden\";\n inlineStyle.WebkitLineClamp = style.maxLines;\n inlineStyle.WebkitBoxOrient = \"vertical\";\n inlineStyle.whiteSpace = \"pre-wrap\";\n }\n\n if (\n style.truncateMode === \"suffix\" &&\n style.maxWidth &&\n (!style.maxLines || style.maxLines <= 1)\n ) {\n inlineStyle.overflow = \"hidden\";\n inlineStyle.textOverflow = \"ellipsis\";\n inlineStyle.whiteSpace = \"nowrap\";\n inlineStyle.display = \"inline-block\";\n inlineStyle.verticalAlign = \"bottom\";\n }\n\n if (style.monospace) {\n inlineStyle.fontFamily =\n 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace';\n }\n\n if (!inlineStyle.whiteSpace && text?.includes(\"\\n\")) {\n inlineStyle.whiteSpace = \"pre-wrap\";\n }\n\n return Object.keys(inlineStyle).length > 0 ? inlineStyle : undefined;\n}\n\nfunction prettifyName(name: string): string {\n return name\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .replace(/_/g, \" \")\n .replace(/\\b\\w/g, (value) => value.toUpperCase());\n}\n\nfunction clickyNodeToCommandRequest(node: ClickyNode): ClickyCommandRequest {\n return {\n command: node.command ?? \"\",\n args: node.args ?? [],\n flags: node.flags ?? {},\n target: node.target ?? \"Dialog\",\n autoRun: node.autoRun ?? false,\n };\n}\n\nfunction resolveClickyCommand(\n request: ClickyCommandRequest,\n runtime: ClickyCommandRuntime | undefined,\n operations: ResolvedOperation[],\n): ClickyResolvedCommand {\n const resolved =\n runtime?.resolveCommand?.(request, operations) ??\n defaultResolveClickyCommand(request, operations);\n return { request, operation: resolved };\n}\n\nfunction defaultResolveClickyCommand(\n request: ClickyCommandRequest,\n operations: ResolvedOperation[],\n): ResolvedOperation | undefined {\n const wanted = normalizeCommandPath(request.command);\n if (!wanted) return undefined;\n\n return operations.find((operation) => {\n const metaCommand = normalizeCommandPath(\n operation.operation[\"x-clicky\"]?.command,\n );\n if (metaCommand && metaCommand === wanted) {\n return true;\n }\n\n const operationId = normalizeCommandPath(\n operation.operation.operationId?.replaceAll(\"_\", \"/\"),\n );\n return operationId === wanted;\n });\n}\n\nfunction normalizeCommandPath(value: string | undefined) {\n return (value ?? \"\")\n .trim()\n .replace(/^\\//, \"\")\n .replace(/\\s+/g, \"/\")\n .replace(/\\/+/g, \"/\")\n .toLowerCase();\n}\n\nfunction buildCommandParameterValues(\n parameters: OpenAPIParameter[],\n request: ClickyCommandRequest,\n): ParameterValues {\n const values: ParameterValues = { ...request.flags };\n const args = [...(request.args ?? [])];\n const positionalParams = parameters.filter((param) =>\n isPositionalParam(param),\n );\n let argIndex = 0;\n\n for (const param of positionalParams) {\n if (param.name === \"args\") {\n const remaining = args.slice(argIndex);\n if (remaining.length > 0) {\n values.args = remaining.join(\",\");\n }\n argIndex = args.length;\n continue;\n }\n\n if (argIndex < args.length) {\n values[param.name] = args[argIndex] ?? \"\";\n argIndex += 1;\n }\n }\n\n return values;\n}\n\nfunction missingRequiredParameters(\n parameters: OpenAPIParameter[],\n values: ParameterValues,\n) {\n return parameters.filter(\n (param) => param.required && (values[param.name] ?? \"\").trim() === \"\",\n );\n}\n\nasync function executeClickyCommand(\n client: OperationsApiClient,\n operation: ResolvedOperation,\n values: ParameterValues,\n) {\n return client.executeCommand(\n operation.path,\n operation.method,\n packParameterValues(\n pruneParameterValues(values),\n operation.operation.parameters ?? [],\n ),\n { Accept: \"application/json+clicky\" },\n );\n}\n\nfunction buildCommandExecutionHref(\n resolved: ClickyResolvedCommand,\n): string | undefined {\n const operation = resolved.operation;\n if (!operation) {\n return undefined;\n }\n\n const values = buildCommandParameterValues(\n operation.operation.parameters ?? [],\n resolved.request,\n );\n const params = packParameterValues(\n pruneParameterValues(values),\n operation.operation.parameters ?? [],\n );\n const url = substituteOperationPath(operation.path, params);\n\n if (operation.method.toUpperCase() !== \"GET\") {\n return url;\n }\n\n return url;\n}\n\nfunction substituteOperationPath(path: string, params: OperationRequestValues) {\n const url = new URL(path, \"http://localhost\");\n const remaining = { ...params };\n\n for (const [key, value] of Object.entries(params)) {\n if (url.pathname.includes(`{${key}}`)) {\n if (Array.isArray(value)) {\n throw new Error(`Path parameter ${key} must be a scalar value`);\n }\n url.pathname = url.pathname.replace(\n `{${key}}`,\n encodeURIComponent(value),\n );\n delete remaining[key];\n }\n }\n\n for (const [key, value] of Object.entries(remaining)) {\n url.searchParams.set(key, Array.isArray(value) ? value.join(\",\") : value);\n }\n\n return `${url.pathname}${url.search}`;\n}\n\nfunction browserAnchorTarget(target: ClickyLinkTarget | undefined) {\n if (target === \"_self\") {\n return \"_self\";\n }\n\n if (target === \"_window\" || target === \"_tab\") {\n return \"_blank\";\n }\n\n return undefined;\n}\n\nfunction isExecutionResponse(value: unknown): value is ExecutionResponse {\n return (\n value != null &&\n typeof value === \"object\" &&\n (\"stdout\" in value || \"output\" in value || \"message\" in value)\n );\n}\n\nfunction clickyNodeText(node: ClickyNode | null | undefined): string {\n if (!node) return \"\";\n if (node.kind === \"heading\" || node.kind === \"blockquote\") {\n return clickyNodeText(node.content) || node.plain || \"\";\n }\n if (node.kind === \"admonition\") {\n return (\n [clickyNodeText(node.label), clickyNodeText(node.content)]\n .filter(Boolean)\n .join(\" \") ||\n node.plain ||\n \"\"\n );\n }\n if (node.kind === \"footnote-ref\") {\n return node.id ? `[^${node.id}]` : node.plain || \"\";\n }\n if (node.kind === \"footnote\")\n return clickyNodeText(node.content) || node.plain || \"\";\n if (node.kind === \"footnotes\") {\n return (\n (node.items ?? []).map((item) => clickyNodeText(item)).join(\" \") ||\n node.plain ||\n \"\"\n );\n }\n if (node.plain) return node.plain;\n if (node.text) return node.text;\n if (node.kind === \"html\")\n return sanitizeHtml(node.html ?? \"\")\n .replace(/<[^>]+>/g, \" \")\n .trim();\n if (node.kind === \"code\") return node.source ?? \"\";\n if (\n (node.kind === \"link\" || node.kind === \"link-command\") &&\n node.children?.length\n ) {\n return [\n node.text,\n ...node.children.map((child) => clickyNodeText(child)),\n ].join(\"\");\n }\n if (node.kind === \"button\" && node.label) return clickyNodeText(node.label);\n if (node.kind === \"button-group\") {\n return (node.items ?? []).map((item) => clickyNodeText(item)).join(\" \");\n }\n if (node.kind === \"text\" && node.children?.length) {\n return [\n node.text,\n ...node.children.map((child) => clickyNodeText(child)),\n ].join(\"\");\n }\n // A container's text is its contents. Deriving it here is what lets the\n // producer stop shipping a second, pre-rendered copy of every container it\n // sends: a list that carries `plain` still uses it (the check above wins), and\n // one that does not is walked instead of coming back empty.\n if (node.kind === \"list\" && node.items?.length) {\n return node.items.map((item) => clickyNodeText(item)).join(\" \");\n }\n if (node.kind === \"map\" && node.fields?.length) {\n return node.fields\n .map((field) => {\n const value = clickyNodeText(field.value);\n const label = field.label ?? field.name;\n return label ? `${label}: ${value}` : value;\n })\n .join(\" \");\n }\n if (node.kind === \"tree\" && node.roots?.length) {\n const walk = (branch: ClickyTreeItem): string =>\n [\n clickyNodeText(branch.label),\n ...(branch.children ?? []).map((child) => walk(child)),\n ]\n .filter(Boolean)\n .join(\" \");\n return node.roots.map((root) => walk(root)).join(\" \");\n }\n if (node.kind === \"table\" && node.rows?.length) {\n return node.rows\n .map((row) =>\n Object.values(row.cells ?? {})\n .map((cell) => clickyNodeText(cell))\n .filter(Boolean)\n .join(\" \"),\n )\n .filter(Boolean)\n .join(\" \");\n }\n return \"\";\n}\n\nfunction isInlineNode(node: ClickyNode): boolean {\n return (\n node.kind === \"text\" ||\n node.kind === \"link\" ||\n node.kind === \"link-command\" ||\n node.kind === \"icon\" ||\n node.kind === \"html\" ||\n node.kind === \"footnote-ref\" ||\n node.kind === \"badge\" ||\n node.kind === \"button\" ||\n node.kind === \"button-group\"\n );\n}\n"],"names":["Fragment","_b","_a"],"mappings":"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"}
|