@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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { isPlainObject } from "../lib/collections.js";
|
|
1
2
|
import { normalizeTone } from "./json-schema-form-tone.js";
|
|
2
|
-
import { isPlainObject } from "./json-schema-form-utils.js";
|
|
3
3
|
const DEFAULT_TITLE_KEYS = ["title", "name", "label", "id", "key"];
|
|
4
4
|
const SUMMARY_SEPARATOR = " · ";
|
|
5
5
|
const VALUE_SEPARATOR = ", ";
|
|
@@ -15,11 +15,24 @@ function resolveItemSpec(arraySchema, itemSchema) {
|
|
|
15
15
|
...glyph ? { glyph } : {},
|
|
16
16
|
...typeof raw.badge === "string" && raw.badge ? { badge: raw.badge } : {},
|
|
17
17
|
...typeof raw.flag === "string" && raw.flag ? { flag: raw.flag } : {},
|
|
18
|
+
// Only carried when the schema actually said something: an absent key means
|
|
19
|
+
// every action, while an explicit empty list means none, and those two
|
|
20
|
+
// cannot be told apart once the default has been filled in.
|
|
21
|
+
...Array.isArray(raw.actions) ? { actions: itemActions(raw.actions) } : {},
|
|
18
22
|
noun: firstNonEmpty([raw.noun, itemSchema == null ? void 0 : itemSchema.title]) ?? "item",
|
|
19
23
|
nounPlural: firstNonEmpty([raw.nounPlural, arraySchema.title]) ?? "items",
|
|
20
24
|
...typeof raw.empty === "string" && raw.empty ? { empty: raw.empty } : {}
|
|
21
25
|
};
|
|
22
26
|
}
|
|
27
|
+
const ITEM_ACTIONS = ["reorder", "duplicate", "remove"];
|
|
28
|
+
function itemActions(value) {
|
|
29
|
+
return value.filter(
|
|
30
|
+
(entry) => ITEM_ACTIONS.includes(entry)
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
function itemActionsAllow(spec, action) {
|
|
34
|
+
return spec.actions ? spec.actions.includes(action) : true;
|
|
35
|
+
}
|
|
23
36
|
function autoGlyphKey(itemSchema) {
|
|
24
37
|
for (const [key, prop] of Object.entries((itemSchema == null ? void 0 : itemSchema.properties) ?? {})) {
|
|
25
38
|
const icons = prop["x-enum-icons"];
|
|
@@ -123,6 +136,7 @@ function firstNonEmpty(values) {
|
|
|
123
136
|
export {
|
|
124
137
|
addItemLabel,
|
|
125
138
|
emptyItemsCopy,
|
|
139
|
+
itemActionsAllow,
|
|
126
140
|
itemCountLabel,
|
|
127
141
|
itemSummaryFor,
|
|
128
142
|
noItemsLabel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-form-item-summary.js","sources":["../../src/components/json-schema-form-item-summary.ts"],"sourcesContent":["import { normalizeTone } from \"./json-schema-form-tone\";\nimport { isPlainObject } from \"./json-schema-form-utils\";\nimport type {\n ArrayItemSpec,\n ArrayItemSummary,\n ArrayItemSummaryPart,\n JsonSchemaProperty,\n} from \"./json-schema-form-types\";\n\n// Property names worth trying for a row title when the schema does not say.\n// Ordered most-human-readable first.\nconst DEFAULT_TITLE_KEYS = [\"title\", \"name\", \"label\", \"id\", \"key\"];\n\nconst SUMMARY_SEPARATOR = \" · \";\nconst VALUE_SEPARATOR = \", \";\n\n// resolveItemSpec reads the array's `x-item` and fills in every default, so the\n// renderer never has to ask whether a key was supplied. With no `x-item` at all\n// the result reproduces today's behaviour exactly: an `Item <n>` title and an\n// \"Add item\" button.\nexport function resolveItemSpec(\n arraySchema: JsonSchemaProperty,\n itemSchema: JsonSchemaProperty | undefined,\n): ArrayItemSpec {\n const raw = isPlainObject(arraySchema[\"x-item\"])\n ? (arraySchema[\"x-item\"] as ArrayItemSpec)\n : {};\n const title = stringArray(raw.title);\n const summary = summaryParts(raw.summary);\n const glyph = typeof raw.glyph === \"string\" ? raw.glyph : autoGlyphKey(itemSchema);\n return {\n title: title.length > 0 ? title : DEFAULT_TITLE_KEYS,\n ...(typeof raw.fallback === \"string\" && raw.fallback ? { fallback: raw.fallback } : {}),\n ...(summary.length > 0 ? { summary } : {}),\n ...(glyph ? { glyph } : {}),\n ...(typeof raw.badge === \"string\" && raw.badge ? { badge: raw.badge } : {}),\n ...(typeof raw.flag === \"string\" && raw.flag ? { flag: raw.flag } : {}),\n noun: firstNonEmpty([raw.noun, itemSchema?.title]) ?? \"item\",\n nounPlural: firstNonEmpty([raw.nounPlural, arraySchema.title]) ?? \"items\",\n ...(typeof raw.empty === \"string\" && raw.empty ? { empty: raw.empty } : {}),\n };\n}\n\n// autoGlyphKey picks the item property that can colour a row without being told:\n// the first enum carrying per-value icons. Keeps a schema that already declares\n// x-enum-icons from having to repeat itself in x-item.\nfunction autoGlyphKey(itemSchema: JsonSchemaProperty | undefined): string | undefined {\n for (const [key, prop] of Object.entries(itemSchema?.properties ?? {})) {\n const icons = prop[\"x-enum-icons\"];\n if (Array.isArray(prop.enum) && icons && Object.keys(icons).length > 0) return key;\n }\n return undefined;\n}\n\n// itemSummaryFor derives one collapsed row from the item's raw VALUE — never\n// from its rendered fields. A consumer pre-extension may hide a property's\n// control entirely (returning null) and still have it appear in the summary.\nexport function itemSummaryFor({\n item,\n index,\n spec,\n itemSchema,\n}: {\n item: unknown;\n index: number;\n spec: ArrayItemSpec;\n itemSchema: JsonSchemaProperty | undefined;\n}): ArrayItemSummary {\n const obj = isPlainObject(item) ? item : {};\n const props = itemSchema?.properties ?? {};\n\n const title =\n firstNonEmpty((spec.title ?? DEFAULT_TITLE_KEYS).map((key) => text(obj[key]))) ??\n spec.fallback ??\n `Item ${index + 1}`;\n\n const summary = (spec.summary ?? [])\n .map((part) => summaryPart(obj, part))\n .filter((s): s is string => !!s)\n .join(SUMMARY_SEPARATOR);\n\n const glyphValue = spec.glyph ? text(obj[spec.glyph]) : \"\";\n const glyphProp = spec.glyph ? props[spec.glyph] : undefined;\n const badgeValue = spec.badge ? text(obj[spec.badge]) : \"\";\n const badgeProp = spec.badge ? props[spec.badge] : undefined;\n const badgeIcon = badgeProp?.[\"x-enum-icons\"]?.[badgeValue];\n\n return {\n title,\n ...(summary ? { summary } : {}),\n ...(spec.glyph\n ? {\n glyph: {\n ...(glyphProp?.[\"x-enum-icons\"]?.[glyphValue]\n ? { icon: glyphProp[\"x-enum-icons\"][glyphValue] }\n : {}),\n tone: normalizeTone(glyphProp?.[\"x-enum-tones\"]?.[glyphValue]),\n ...(glyphValue ? { label: enumLabel(glyphProp, glyphValue) } : {}),\n },\n }\n : {}),\n ...(badgeValue\n ? {\n badge: {\n ...(badgeIcon ? { icon: badgeIcon } : {}),\n label: enumLabel(badgeProp, badgeValue),\n },\n }\n : {}),\n ...(spec.flag && obj[spec.flag] === true ? { flagged: true } : {}),\n };\n}\n\n// The add row's button text — \"Add parameter\" when the schema names its noun,\n// and the historical \"Add item\" when it does not.\nexport function addItemLabel(spec: ArrayItemSpec): string {\n return `Add ${spec.noun ?? \"item\"}`;\n}\n\nexport function itemCountLabel(spec: ArrayItemSpec, count: number): string {\n return count === 1\n ? `1 ${spec.noun ?? \"item\"}`\n : `${count} ${spec.nounPlural ?? \"items\"}`;\n}\n\n// The zero-item explanation. Falls back to the array's own description, so a\n// schema that already documents the field gets the empty state for free.\nexport function emptyItemsCopy(\n spec: ArrayItemSpec,\n arraySchema: JsonSchemaProperty,\n): string | undefined {\n if (spec.empty) return spec.empty;\n const description = typeof arraySchema.description === \"string\" ? arraySchema.description.trim() : \"\";\n return description || undefined;\n}\n\nexport function noItemsLabel(spec: ArrayItemSpec): string {\n return `No ${spec.nounPlural ?? \"items\"} yet`;\n}\n\n// summaryPart renders one part, substituting the value into a single literal\n// `{}` in the pattern. A pattern without `{}` renders as-is (it is a literal),\n// and a missing value drops the part rather than leaving a dangling separator.\nfunction summaryPart(\n obj: Record<string, unknown>,\n part: string | ArrayItemSummaryPart,\n): string | undefined {\n const { property, pattern } = typeof part === \"string\" ? { property: part, pattern: undefined } : part;\n const value = text(obj[property]);\n if (!value) return undefined;\n return pattern ? pattern.replace(\"{}\", value) : value;\n}\n\n// enumLabel prefers the human label the schema declares for a code, falling back\n// to the code itself. Unlike the combobox option list this does NOT render\n// \"Label (code)\" — a chip has room for one of the two, and the label is the one\n// worth reading.\nfunction enumLabel(prop: JsonSchemaProperty | undefined, value: string): string {\n const label = prop?.[\"x-enum-labels\"]?.[value];\n return typeof label === \"string\" && label ? label : value;\n}\n\n// text flattens a value to its display string. Arrays join, so a list-valued\n// property still reads as one line.\nfunction text(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n if (Array.isArray(value)) return value.map(text).filter(Boolean).join(VALUE_SEPARATOR);\n if (typeof value === \"object\") return \"\";\n return String(value).trim();\n}\n\nfunction stringArray(value: unknown): string[] {\n if (typeof value === \"string\") return [value];\n if (!Array.isArray(value)) return [];\n return value.filter((v): v is string => typeof v === \"string\" && !!v);\n}\n\nfunction summaryParts(value: unknown): Array<string | ArrayItemSummaryPart> {\n if (!Array.isArray(value)) return [];\n return (value as unknown[]).flatMap((part): Array<string | ArrayItemSummaryPart> => {\n if (typeof part === \"string\" && part) return [part];\n if (isPlainObject(part) && typeof part.property === \"string\" && part.property) {\n return [\n {\n property: part.property,\n ...(typeof part.pattern === \"string\" && part.pattern ? { pattern: part.pattern } : {}),\n } satisfies ArrayItemSummaryPart,\n ];\n }\n return [];\n });\n}\n\nfunction firstNonEmpty(values: Array<string | undefined>): string | undefined {\n for (const value of values) {\n const trimmed = typeof value === \"string\" ? value.trim() : \"\";\n if (trimmed) return trimmed;\n }\n return undefined;\n}\n"],"names":[],"mappings":";;AAWA,MAAM,qBAAqB,CAAC,SAAS,QAAQ,SAAS,MAAM,KAAK;AAEjE,MAAM,oBAAoB;AAC1B,MAAM,kBAAkB;AAMjB,SAAS,gBACd,aACA,YACe;AACf,QAAM,MAAM,cAAc,YAAY,QAAQ,CAAC,IAC1C,YAAY,QAAQ,IACrB,CAAA;AACJ,QAAM,QAAQ,YAAY,IAAI,KAAK;AACnC,QAAM,UAAU,aAAa,IAAI,OAAO;AACxC,QAAM,QAAQ,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ,aAAa,UAAU;AACjF,SAAO;AAAA,IACL,OAAO,MAAM,SAAS,IAAI,QAAQ;AAAA,IAClC,GAAI,OAAO,IAAI,aAAa,YAAY,IAAI,WAAW,EAAE,UAAU,IAAI,SAAA,IAAa,CAAA;AAAA,IACpF,GAAI,QAAQ,SAAS,IAAI,EAAE,QAAA,IAAY,CAAA;AAAA,IACvC,GAAI,QAAQ,EAAE,MAAA,IAAU,CAAA;AAAA,IACxB,GAAI,OAAO,IAAI,UAAU,YAAY,IAAI,QAAQ,EAAE,OAAO,IAAI,MAAA,IAAU,CAAA;AAAA,IACxE,GAAI,OAAO,IAAI,SAAS,YAAY,IAAI,OAAO,EAAE,MAAM,IAAI,KAAA,IAAS,CAAA;AAAA,IACpE,MAAM,cAAc,CAAC,IAAI,MAAM,yCAAY,KAAK,CAAC,KAAK;AAAA,IACtD,YAAY,cAAc,CAAC,IAAI,YAAY,YAAY,KAAK,CAAC,KAAK;AAAA,IAClE,GAAI,OAAO,IAAI,UAAU,YAAY,IAAI,QAAQ,EAAE,OAAO,IAAI,UAAU,CAAA;AAAA,EAAC;AAE7E;AAKA,SAAS,aAAa,YAAgE;AACpF,aAAW,CAAC,KAAK,IAAI,KAAK,OAAO,SAAQ,yCAAY,eAAc,CAAA,CAAE,GAAG;AACtE,UAAM,QAAQ,KAAK,cAAc;AACjC,QAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,SAAS,OAAO,KAAK,KAAK,EAAE,SAAS,EAAG,QAAO;AAAA,EACjF;AACA,SAAO;AACT;AAKO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKqB;;AACnB,QAAM,MAAM,cAAc,IAAI,IAAI,OAAO,CAAA;AACzC,QAAM,SAAQ,yCAAY,eAAc,CAAA;AAExC,QAAM,QACJ,eAAe,KAAK,SAAS,oBAAoB,IAAI,CAAC,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAC7E,KAAK,YACL,QAAQ,QAAQ,CAAC;AAEnB,QAAM,WAAW,KAAK,WAAW,CAAA,GAC9B,IAAI,CAAC,SAAS,YAAY,KAAK,IAAI,CAAC,EACpC,OAAO,CAAC,MAAmB,CAAC,CAAC,CAAC,EAC9B,KAAK,iBAAiB;AAEzB,QAAM,aAAa,KAAK,QAAQ,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI;AACxD,QAAM,YAAY,KAAK,QAAQ,MAAM,KAAK,KAAK,IAAI;AACnD,QAAM,aAAa,KAAK,QAAQ,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI;AACxD,QAAM,YAAY,KAAK,QAAQ,MAAM,KAAK,KAAK,IAAI;AACnD,QAAM,aAAY,4CAAY,oBAAZ,mBAA8B;AAEhD,SAAO;AAAA,IACL;AAAA,IACA,GAAI,UAAU,EAAE,QAAA,IAAY,CAAA;AAAA,IAC5B,GAAI,KAAK,QACL;AAAA,MACE,OAAO;AAAA,QACL,KAAI,4CAAY,oBAAZ,mBAA8B,eAC9B,EAAE,MAAM,UAAU,cAAc,EAAE,UAAU,EAAA,IAC5C,CAAA;AAAA,QACJ,MAAM,eAAc,4CAAY,oBAAZ,mBAA8B,WAAW;AAAA,QAC7D,GAAI,aAAa,EAAE,OAAO,UAAU,WAAW,UAAU,MAAM,CAAA;AAAA,MAAC;AAAA,IAClE,IAEF,CAAA;AAAA,IACJ,GAAI,aACA;AAAA,MACE,OAAO;AAAA,QACL,GAAI,YAAY,EAAE,MAAM,UAAA,IAAc,CAAA;AAAA,QACtC,OAAO,UAAU,WAAW,UAAU;AAAA,MAAA;AAAA,IACxC,IAEF,CAAA;AAAA,IACJ,GAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,OAAO,EAAE,SAAS,SAAS,CAAA;AAAA,EAAC;AAEpE;AAIO,SAAS,aAAa,MAA6B;AACxD,SAAO,OAAO,KAAK,QAAQ,MAAM;AACnC;AAEO,SAAS,eAAe,MAAqB,OAAuB;AACzE,SAAO,UAAU,IACb,KAAK,KAAK,QAAQ,MAAM,KACxB,GAAG,KAAK,IAAI,KAAK,cAAc,OAAO;AAC5C;AAIO,SAAS,eACd,MACA,aACoB;AACpB,MAAI,KAAK,MAAO,QAAO,KAAK;AAC5B,QAAM,cAAc,OAAO,YAAY,gBAAgB,WAAW,YAAY,YAAY,SAAS;AACnG,SAAO,eAAe;AACxB;AAEO,SAAS,aAAa,MAA6B;AACxD,SAAO,MAAM,KAAK,cAAc,OAAO;AACzC;AAKA,SAAS,YACP,KACA,MACoB;AACpB,QAAM,EAAE,UAAU,QAAA,IAAY,OAAO,SAAS,WAAW,EAAE,UAAU,MAAM,SAAS,OAAA,IAAc;AAClG,QAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AAChC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,UAAU,QAAQ,QAAQ,MAAM,KAAK,IAAI;AAClD;AAMA,SAAS,UAAU,MAAsC,OAAuB;;AAC9E,QAAM,SAAQ,kCAAO,qBAAP,mBAA0B;AACxC,SAAO,OAAO,UAAU,YAAY,QAAQ,QAAQ;AACtD;AAIA,SAAS,KAAK,OAAwB;AACpC,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,IAAI,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,eAAe;AACrF,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,SAAO,OAAO,KAAK,EAAE,KAAA;AACvB;AAEA,SAAS,YAAY,OAA0B;AAC7C,MAAI,OAAO,UAAU,SAAU,QAAO,CAAC,KAAK;AAC5C,MAAI,CAAC,MAAM,QAAQ,KAAK,UAAU,CAAA;AAClC,SAAO,MAAM,OAAO,CAAC,MAAmB,OAAO,MAAM,YAAY,CAAC,CAAC,CAAC;AACtE;AAEA,SAAS,aAAa,OAAsD;AAC1E,MAAI,CAAC,MAAM,QAAQ,KAAK,UAAU,CAAA;AAClC,SAAQ,MAAoB,QAAQ,CAAC,SAA+C;AAClF,QAAI,OAAO,SAAS,YAAY,KAAM,QAAO,CAAC,IAAI;AAClD,QAAI,cAAc,IAAI,KAAK,OAAO,KAAK,aAAa,YAAY,KAAK,UAAU;AAC7E,aAAO;AAAA,QACL;AAAA,UACE,UAAU,KAAK;AAAA,UACf,GAAI,OAAO,KAAK,YAAY,YAAY,KAAK,UAAU,EAAE,SAAS,KAAK,YAAY,CAAA;AAAA,QAAC;AAAA,MACtF;AAAA,IAEJ;AACA,WAAO,CAAA;AAAA,EACT,CAAC;AACH;AAEA,SAAS,cAAc,QAAuD;AAC5E,aAAW,SAAS,QAAQ;AAC1B,UAAM,UAAU,OAAO,UAAU,WAAW,MAAM,SAAS;AAC3D,QAAI,QAAS,QAAO;AAAA,EACtB;AACA,SAAO;AACT;"}
|
|
1
|
+
{"version":3,"file":"json-schema-form-item-summary.js","sources":["../../src/components/json-schema-form-item-summary.ts"],"sourcesContent":["import { isPlainObject } from \"../lib/collections\";\nimport { normalizeTone } from \"./json-schema-form-tone\";\nimport type {\n ArrayItemAction,\n ArrayItemSpec,\n ArrayItemSummary,\n ArrayItemSummaryPart,\n JsonSchemaProperty,\n} from \"./json-schema-form-types\";\n\n// Property names worth trying for a row title when the schema does not say.\n// Ordered most-human-readable first.\nconst DEFAULT_TITLE_KEYS = [\"title\", \"name\", \"label\", \"id\", \"key\"];\n\nconst SUMMARY_SEPARATOR = \" · \";\nconst VALUE_SEPARATOR = \", \";\n\n// resolveItemSpec reads the array's `x-item` and fills in every default, so the\n// renderer never has to ask whether a key was supplied. With no `x-item` at all\n// the result reproduces today's behaviour exactly: an `Item <n>` title and an\n// \"Add item\" button.\nexport function resolveItemSpec(\n arraySchema: JsonSchemaProperty,\n itemSchema: JsonSchemaProperty | undefined,\n): ArrayItemSpec {\n const raw = isPlainObject(arraySchema[\"x-item\"])\n ? (arraySchema[\"x-item\"] as ArrayItemSpec)\n : {};\n const title = stringArray(raw.title);\n const summary = summaryParts(raw.summary);\n const glyph = typeof raw.glyph === \"string\" ? raw.glyph : autoGlyphKey(itemSchema);\n return {\n title: title.length > 0 ? title : DEFAULT_TITLE_KEYS,\n ...(typeof raw.fallback === \"string\" && raw.fallback ? { fallback: raw.fallback } : {}),\n ...(summary.length > 0 ? { summary } : {}),\n ...(glyph ? { glyph } : {}),\n ...(typeof raw.badge === \"string\" && raw.badge ? { badge: raw.badge } : {}),\n ...(typeof raw.flag === \"string\" && raw.flag ? { flag: raw.flag } : {}),\n // Only carried when the schema actually said something: an absent key means\n // every action, while an explicit empty list means none, and those two\n // cannot be told apart once the default has been filled in.\n ...(Array.isArray(raw.actions) ? { actions: itemActions(raw.actions) } : {}),\n noun: firstNonEmpty([raw.noun, itemSchema?.title]) ?? \"item\",\n nounPlural: firstNonEmpty([raw.nounPlural, arraySchema.title]) ?? \"items\",\n ...(typeof raw.empty === \"string\" && raw.empty ? { empty: raw.empty } : {}),\n };\n}\n\nconst ITEM_ACTIONS: ArrayItemAction[] = [\"reorder\", \"duplicate\", \"remove\"];\n\nfunction itemActions(value: unknown[]): ArrayItemAction[] {\n return value.filter((entry): entry is ArrayItemAction =>\n ITEM_ACTIONS.includes(entry as ArrayItemAction),\n );\n}\n\n// itemActionsAllow is the one question every array display asks of `x-item`, so\n// the accordion and the cards never disagree about what a schema permitted.\nexport function itemActionsAllow(spec: ArrayItemSpec, action: ArrayItemAction): boolean {\n return spec.actions ? spec.actions.includes(action) : true;\n}\n\n// autoGlyphKey picks the item property that can colour a row without being told:\n// the first enum carrying per-value icons. Keeps a schema that already declares\n// x-enum-icons from having to repeat itself in x-item.\nfunction autoGlyphKey(itemSchema: JsonSchemaProperty | undefined): string | undefined {\n for (const [key, prop] of Object.entries(itemSchema?.properties ?? {})) {\n const icons = prop[\"x-enum-icons\"];\n if (Array.isArray(prop.enum) && icons && Object.keys(icons).length > 0) return key;\n }\n return undefined;\n}\n\n// itemSummaryFor derives one collapsed row from the item's raw VALUE — never\n// from its rendered fields. A consumer pre-extension may hide a property's\n// control entirely (returning null) and still have it appear in the summary.\nexport function itemSummaryFor({\n item,\n index,\n spec,\n itemSchema,\n}: {\n item: unknown;\n index: number;\n spec: ArrayItemSpec;\n itemSchema: JsonSchemaProperty | undefined;\n}): ArrayItemSummary {\n const obj = isPlainObject(item) ? item : {};\n const props = itemSchema?.properties ?? {};\n\n const title =\n firstNonEmpty((spec.title ?? DEFAULT_TITLE_KEYS).map((key) => text(obj[key]))) ??\n spec.fallback ??\n `Item ${index + 1}`;\n\n const summary = (spec.summary ?? [])\n .map((part) => summaryPart(obj, part))\n .filter((s): s is string => !!s)\n .join(SUMMARY_SEPARATOR);\n\n const glyphValue = spec.glyph ? text(obj[spec.glyph]) : \"\";\n const glyphProp = spec.glyph ? props[spec.glyph] : undefined;\n const badgeValue = spec.badge ? text(obj[spec.badge]) : \"\";\n const badgeProp = spec.badge ? props[spec.badge] : undefined;\n const badgeIcon = badgeProp?.[\"x-enum-icons\"]?.[badgeValue];\n\n return {\n title,\n ...(summary ? { summary } : {}),\n ...(spec.glyph\n ? {\n glyph: {\n ...(glyphProp?.[\"x-enum-icons\"]?.[glyphValue]\n ? { icon: glyphProp[\"x-enum-icons\"][glyphValue] }\n : {}),\n tone: normalizeTone(glyphProp?.[\"x-enum-tones\"]?.[glyphValue]),\n ...(glyphValue ? { label: enumLabel(glyphProp, glyphValue) } : {}),\n },\n }\n : {}),\n ...(badgeValue\n ? {\n badge: {\n ...(badgeIcon ? { icon: badgeIcon } : {}),\n label: enumLabel(badgeProp, badgeValue),\n },\n }\n : {}),\n ...(spec.flag && obj[spec.flag] === true ? { flagged: true } : {}),\n };\n}\n\n// The add row's button text — \"Add parameter\" when the schema names its noun,\n// and the historical \"Add item\" when it does not.\nexport function addItemLabel(spec: ArrayItemSpec): string {\n return `Add ${spec.noun ?? \"item\"}`;\n}\n\nexport function itemCountLabel(spec: ArrayItemSpec, count: number): string {\n return count === 1\n ? `1 ${spec.noun ?? \"item\"}`\n : `${count} ${spec.nounPlural ?? \"items\"}`;\n}\n\n// The zero-item explanation. Falls back to the array's own description, so a\n// schema that already documents the field gets the empty state for free.\nexport function emptyItemsCopy(\n spec: ArrayItemSpec,\n arraySchema: JsonSchemaProperty,\n): string | undefined {\n if (spec.empty) return spec.empty;\n const description = typeof arraySchema.description === \"string\" ? arraySchema.description.trim() : \"\";\n return description || undefined;\n}\n\nexport function noItemsLabel(spec: ArrayItemSpec): string {\n return `No ${spec.nounPlural ?? \"items\"} yet`;\n}\n\n// summaryPart renders one part, substituting the value into a single literal\n// `{}` in the pattern. A pattern without `{}` renders as-is (it is a literal),\n// and a missing value drops the part rather than leaving a dangling separator.\nfunction summaryPart(\n obj: Record<string, unknown>,\n part: string | ArrayItemSummaryPart,\n): string | undefined {\n const { property, pattern } = typeof part === \"string\" ? { property: part, pattern: undefined } : part;\n const value = text(obj[property]);\n if (!value) return undefined;\n return pattern ? pattern.replace(\"{}\", value) : value;\n}\n\n// enumLabel prefers the human label the schema declares for a code, falling back\n// to the code itself. Unlike the combobox option list this does NOT render\n// \"Label (code)\" — a chip has room for one of the two, and the label is the one\n// worth reading.\nfunction enumLabel(prop: JsonSchemaProperty | undefined, value: string): string {\n const label = prop?.[\"x-enum-labels\"]?.[value];\n return typeof label === \"string\" && label ? label : value;\n}\n\n// text flattens a value to its display string. Arrays join, so a list-valued\n// property still reads as one line.\nfunction text(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n if (Array.isArray(value)) return value.map(text).filter(Boolean).join(VALUE_SEPARATOR);\n if (typeof value === \"object\") return \"\";\n return String(value).trim();\n}\n\nfunction stringArray(value: unknown): string[] {\n if (typeof value === \"string\") return [value];\n if (!Array.isArray(value)) return [];\n return value.filter((v): v is string => typeof v === \"string\" && !!v);\n}\n\nfunction summaryParts(value: unknown): Array<string | ArrayItemSummaryPart> {\n if (!Array.isArray(value)) return [];\n return (value as unknown[]).flatMap((part): Array<string | ArrayItemSummaryPart> => {\n if (typeof part === \"string\" && part) return [part];\n if (isPlainObject(part) && typeof part.property === \"string\" && part.property) {\n return [\n {\n property: part.property,\n ...(typeof part.pattern === \"string\" && part.pattern ? { pattern: part.pattern } : {}),\n } satisfies ArrayItemSummaryPart,\n ];\n }\n return [];\n });\n}\n\nfunction firstNonEmpty(values: Array<string | undefined>): string | undefined {\n for (const value of values) {\n const trimmed = typeof value === \"string\" ? value.trim() : \"\";\n if (trimmed) return trimmed;\n }\n return undefined;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ const Icon = require("../data/Icon.cjs");
|
|
|
6
6
|
const pathTree = require("../lib/path-tree.cjs");
|
|
7
7
|
const utils = require("../lib/utils.cjs");
|
|
8
8
|
const TreePickerField = require("./TreePickerField.cjs");
|
|
9
|
+
const jsonSchemaFormUtils = require("./json-schema-form-utils.cjs");
|
|
9
10
|
const UiClose = require("../icons/components/UiClose.cjs");
|
|
10
11
|
const UiAdd = require("../icons/components/UiAdd.cjs");
|
|
11
12
|
function optionOf(node) {
|
|
@@ -17,10 +18,6 @@ function treeFrom(options, hierarchy) {
|
|
|
17
18
|
(option) => pathTree.splitPath(option.label || option.value, hierarchy.delimiters)
|
|
18
19
|
);
|
|
19
20
|
}
|
|
20
|
-
function toValues(value) {
|
|
21
|
-
if (!Array.isArray(value)) return [];
|
|
22
|
-
return value.filter((entry) => typeof entry === "string");
|
|
23
|
-
}
|
|
24
21
|
function OptionRow({ node }) {
|
|
25
22
|
const option = optionOf(node);
|
|
26
23
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -77,7 +74,7 @@ function LookupTreeControl({
|
|
|
77
74
|
}
|
|
78
75
|
) });
|
|
79
76
|
}
|
|
80
|
-
const values =
|
|
77
|
+
const values = jsonSchemaFormUtils.toStringArray(field.value);
|
|
81
78
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { id: fieldId, "data-jsf-input": true, className: "flex flex-col gap-1.5", children: [
|
|
82
79
|
values.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-wrap gap-1", children: values.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
83
80
|
"li",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-form-lookup-tree.cjs","sources":["../../src/components/json-schema-form-lookup-tree.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiClose } from \"../icons\";\nimport {\n buildPathTree,\n splitPath,\n type PathTreeNode,\n} from \"../lib/path-tree\";\nimport { cn } from \"../lib/utils\";\nimport { TreePickerField } from \"./TreePickerField\";\nimport type { FormSize } from \"./json-schema-form-size\";\nimport type {\n FieldControl,\n FieldOption,\n LookupHierarchy,\n} from \"./json-schema-form-types\";\n\ntype OptionNode = PathTreeNode<FieldOption>;\n\n// optionOf returns the option a node commits, or undefined for a pure folder —\n// an intermediate segment (`logs` in `logs.api`) that no option itself names.\nfunction optionOf(node: OptionNode): FieldOption | undefined {\n return node.items[0];\n}\n\nfunction treeFrom(\n options: FieldOption[],\n hierarchy: LookupHierarchy,\n): OptionNode[] {\n return buildPathTree(options, (option) =>\n splitPath(option.label || option.value, hierarchy.delimiters),\n );\n}\n\n// toValues normalises the committed value of a multi lookup. The schema type is\n// an array of strings, but a form mid-edit can hold anything, so anything that\n// is not a usable string is dropped rather than rendered as a broken chip.\nfunction toValues(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.filter((entry): entry is string => typeof entry === \"string\");\n}\n\nfunction OptionRow({ node }: { node: OptionNode }) {\n const option = optionOf(node);\n return (\n <span\n className={cn(\n \"min-w-0 flex-1 truncate text-sm\",\n option ? \"text-foreground\" : \"text-muted-foreground\",\n )}\n >\n {node.label}\n </span>\n );\n}\n\n/**\n * LookupTreeControl is the hierarchical form of the entity-reference picker: it\n * browses the fetched options as a tree rather than scrolling one long flat\n * list. Reached when the lookup descriptor declares `hierarchy`.\n *\n * Only the *presentation* is hierarchical — the committed value is always the\n * option's own value, never a path. Folder-only nodes are not selectable, but\n * an option whose label is a prefix of others (a node that is both folder and\n * leaf) stays selectable.\n */\nexport function LookupTreeControl({\n field,\n fieldId,\n readOnly,\n size,\n options,\n loading,\n hierarchy,\n}: {\n field: FieldControl;\n fieldId: string;\n readOnly: boolean;\n size: FormSize;\n options: FieldOption[];\n loading: boolean;\n hierarchy: LookupHierarchy;\n}) {\n const roots = useMemo(\n () => treeFrom(options, hierarchy),\n [options, hierarchy],\n );\n const multi = field.lookup?.multi === true;\n const placeholder = loading ? \"Loading…\" : \"Select…\";\n\n if (!multi) {\n const value = typeof field.value === \"string\" ? field.value : \"\";\n const selected =\n findByValue(roots, value) ?? (null as OptionNode | null);\n return (\n <div id={fieldId} data-jsf-input>\n <TreePickerField<OptionNode>\n roots={roots}\n getKey={(node) => node.key}\n getChildren={(node) => node.children}\n getSearchText={(node) => node.key}\n // Every branch starts closed — the tree exists to keep a long option\n // list scannable, which a pre-expanded first level undoes.\n defaultOpen={() => false}\n renderRow={({ node }) => <OptionRow node={node} />}\n isSelectable={(node) => optionOf(node) !== undefined}\n onSelect={(node) => field.onChange(optionOf(node)?.value)}\n selected={selected}\n revealSelected\n ariaLabel={field.label}\n disabled={readOnly}\n size={size}\n placeholder={placeholder}\n {...(value ? { label: value } : {})}\n />\n </div>\n );\n }\n\n const values = toValues(field.value);\n return (\n <div id={fieldId} data-jsf-input className=\"flex flex-col gap-1.5\">\n {values.length > 0 && (\n <ul className=\"flex flex-wrap gap-1\">\n {values.map((entry) => (\n <li\n key={entry}\n className=\"inline-flex items-center gap-1 rounded-md border border-border bg-muted/40 py-0.5 pl-2 pr-1 text-xs\"\n >\n <span className=\"truncate\">{entry}</span>\n {!readOnly && (\n <button\n type=\"button\"\n aria-label={`Remove ${entry}`}\n onClick={() =>\n field.onChange(values.filter((kept) => kept !== entry))\n }\n className=\"rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon icon={UiClose} className=\"text-[0.7rem]\" />\n </button>\n )}\n </li>\n ))}\n </ul>\n )}\n {!readOnly && (\n <TreePickerField<OptionNode>\n roots={roots}\n getKey={(node) => node.key}\n getChildren={(node) => node.children}\n getSearchText={(node) => node.key}\n // Every branch starts closed — the tree exists to keep a long option\n // list scannable, which a pre-expanded first level undoes.\n defaultOpen={() => false}\n renderRow={({ node }) => <OptionRow node={node} />}\n // Already-chosen values stay visible but inert, so the list does not\n // reshuffle underneath the pointer mid-selection.\n isSelectable={(node) => {\n const option = optionOf(node);\n return option !== undefined && !values.includes(option.value);\n }}\n onSelect={(node) => {\n const option = optionOf(node);\n if (option) field.onChange([...values, option.value]);\n }}\n ariaLabel={field.label}\n size={size}\n renderTrigger={({ triggerRef, toggle }) => (\n <button\n ref={triggerRef}\n type=\"button\"\n onClick={toggle}\n className=\"inline-flex w-fit items-center gap-1.5 rounded-md border border-dashed border-input px-2 py-1 text-xs text-muted-foreground transition-colors hover:border-input hover:text-foreground\"\n >\n <Icon icon={UiAdd} className=\"text-[0.7rem]\" />\n {loading ? \"Loading…\" : `Add ${field.label ?? \"value\"}`}\n </button>\n )}\n />\n )}\n </div>\n );\n}\n\nfunction findByValue(nodes: OptionNode[], value: string): OptionNode | null {\n if (!value) return null;\n for (const node of nodes) {\n if (optionOf(node)?.value === value) return node;\n const nested = findByValue(node.children, value);\n if (nested) return nested;\n }\n return null;\n}\n"],"names":["buildPathTree","splitPath","jsx","cn","useMemo","TreePickerField","_a","jsxs","Icon","UiClose","UiAdd"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-schema-form-lookup-tree.cjs","sources":["../../src/components/json-schema-form-lookup-tree.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiClose } from \"../icons\";\nimport {\n buildPathTree,\n splitPath,\n type PathTreeNode,\n} from \"../lib/path-tree\";\nimport { cn } from \"../lib/utils\";\nimport { TreePickerField } from \"./TreePickerField\";\nimport { toStringArray } from \"./json-schema-form-utils\";\nimport type { FormSize } from \"./json-schema-form-size\";\nimport type {\n FieldControl,\n FieldOption,\n LookupHierarchy,\n} from \"./json-schema-form-types\";\n\ntype OptionNode = PathTreeNode<FieldOption>;\n\n// optionOf returns the option a node commits, or undefined for a pure folder —\n// an intermediate segment (`logs` in `logs.api`) that no option itself names.\nfunction optionOf(node: OptionNode): FieldOption | undefined {\n return node.items[0];\n}\n\nfunction treeFrom(\n options: FieldOption[],\n hierarchy: LookupHierarchy,\n): OptionNode[] {\n return buildPathTree(options, (option) =>\n splitPath(option.label || option.value, hierarchy.delimiters),\n );\n}\n\nfunction OptionRow({ node }: { node: OptionNode }) {\n const option = optionOf(node);\n return (\n <span\n className={cn(\n \"min-w-0 flex-1 truncate text-sm\",\n option ? \"text-foreground\" : \"text-muted-foreground\",\n )}\n >\n {node.label}\n </span>\n );\n}\n\n/**\n * LookupTreeControl is the hierarchical form of the entity-reference picker: it\n * browses the fetched options as a tree rather than scrolling one long flat\n * list. Reached when the lookup descriptor declares `hierarchy`.\n *\n * Only the *presentation* is hierarchical — the committed value is always the\n * option's own value, never a path. Folder-only nodes are not selectable, but\n * an option whose label is a prefix of others (a node that is both folder and\n * leaf) stays selectable.\n */\nexport function LookupTreeControl({\n field,\n fieldId,\n readOnly,\n size,\n options,\n loading,\n hierarchy,\n}: {\n field: FieldControl;\n fieldId: string;\n readOnly: boolean;\n size: FormSize;\n options: FieldOption[];\n loading: boolean;\n hierarchy: LookupHierarchy;\n}) {\n const roots = useMemo(\n () => treeFrom(options, hierarchy),\n [options, hierarchy],\n );\n const multi = field.lookup?.multi === true;\n const placeholder = loading ? \"Loading…\" : \"Select…\";\n\n if (!multi) {\n const value = typeof field.value === \"string\" ? field.value : \"\";\n const selected =\n findByValue(roots, value) ?? (null as OptionNode | null);\n return (\n <div id={fieldId} data-jsf-input>\n <TreePickerField<OptionNode>\n roots={roots}\n getKey={(node) => node.key}\n getChildren={(node) => node.children}\n getSearchText={(node) => node.key}\n // Every branch starts closed — the tree exists to keep a long option\n // list scannable, which a pre-expanded first level undoes.\n defaultOpen={() => false}\n renderRow={({ node }) => <OptionRow node={node} />}\n isSelectable={(node) => optionOf(node) !== undefined}\n onSelect={(node) => field.onChange(optionOf(node)?.value)}\n selected={selected}\n revealSelected\n ariaLabel={field.label}\n disabled={readOnly}\n size={size}\n placeholder={placeholder}\n {...(value ? { label: value } : {})}\n />\n </div>\n );\n }\n\n const values = toStringArray(field.value);\n return (\n <div id={fieldId} data-jsf-input className=\"flex flex-col gap-1.5\">\n {values.length > 0 && (\n <ul className=\"flex flex-wrap gap-1\">\n {values.map((entry) => (\n <li\n key={entry}\n className=\"inline-flex items-center gap-1 rounded-md border border-border bg-muted/40 py-0.5 pl-2 pr-1 text-xs\"\n >\n <span className=\"truncate\">{entry}</span>\n {!readOnly && (\n <button\n type=\"button\"\n aria-label={`Remove ${entry}`}\n onClick={() =>\n field.onChange(values.filter((kept) => kept !== entry))\n }\n className=\"rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon icon={UiClose} className=\"text-[0.7rem]\" />\n </button>\n )}\n </li>\n ))}\n </ul>\n )}\n {!readOnly && (\n <TreePickerField<OptionNode>\n roots={roots}\n getKey={(node) => node.key}\n getChildren={(node) => node.children}\n getSearchText={(node) => node.key}\n // Every branch starts closed — the tree exists to keep a long option\n // list scannable, which a pre-expanded first level undoes.\n defaultOpen={() => false}\n renderRow={({ node }) => <OptionRow node={node} />}\n // Already-chosen values stay visible but inert, so the list does not\n // reshuffle underneath the pointer mid-selection.\n isSelectable={(node) => {\n const option = optionOf(node);\n return option !== undefined && !values.includes(option.value);\n }}\n onSelect={(node) => {\n const option = optionOf(node);\n if (option) field.onChange([...values, option.value]);\n }}\n ariaLabel={field.label}\n size={size}\n renderTrigger={({ triggerRef, toggle }) => (\n <button\n ref={triggerRef}\n type=\"button\"\n onClick={toggle}\n className=\"inline-flex w-fit items-center gap-1.5 rounded-md border border-dashed border-input px-2 py-1 text-xs text-muted-foreground transition-colors hover:border-input hover:text-foreground\"\n >\n <Icon icon={UiAdd} className=\"text-[0.7rem]\" />\n {loading ? \"Loading…\" : `Add ${field.label ?? \"value\"}`}\n </button>\n )}\n />\n )}\n </div>\n );\n}\n\nfunction findByValue(nodes: OptionNode[], value: string): OptionNode | null {\n if (!value) return null;\n for (const node of nodes) {\n if (optionOf(node)?.value === value) return node;\n const nested = findByValue(node.children, value);\n if (nested) return nested;\n }\n return null;\n}\n"],"names":["buildPathTree","splitPath","jsx","cn","useMemo","TreePickerField","_a","toStringArray","jsxs","Icon","UiClose","UiAdd"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-form-lookup-tree.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-lookup-tree.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-schema-form-lookup-tree.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-lookup-tree.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAiClC;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,OAAO,EACP,SAAS,GACV,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,eAAe,CAAC;CAC5B,2CAqGA"}
|
|
@@ -4,6 +4,7 @@ import { Icon } from "../data/Icon.js";
|
|
|
4
4
|
import { buildPathTree, splitPath } from "../lib/path-tree.js";
|
|
5
5
|
import { cn } from "../lib/utils.js";
|
|
6
6
|
import { TreePickerField } from "./TreePickerField.js";
|
|
7
|
+
import { toStringArray } from "./json-schema-form-utils.js";
|
|
7
8
|
import { UiClose } from "../icons/components/UiClose.js";
|
|
8
9
|
import { UiAdd } from "../icons/components/UiAdd.js";
|
|
9
10
|
function optionOf(node) {
|
|
@@ -15,10 +16,6 @@ function treeFrom(options, hierarchy) {
|
|
|
15
16
|
(option) => splitPath(option.label || option.value, hierarchy.delimiters)
|
|
16
17
|
);
|
|
17
18
|
}
|
|
18
|
-
function toValues(value) {
|
|
19
|
-
if (!Array.isArray(value)) return [];
|
|
20
|
-
return value.filter((entry) => typeof entry === "string");
|
|
21
|
-
}
|
|
22
19
|
function OptionRow({ node }) {
|
|
23
20
|
const option = optionOf(node);
|
|
24
21
|
return /* @__PURE__ */ jsx(
|
|
@@ -75,7 +72,7 @@ function LookupTreeControl({
|
|
|
75
72
|
}
|
|
76
73
|
) });
|
|
77
74
|
}
|
|
78
|
-
const values =
|
|
75
|
+
const values = toStringArray(field.value);
|
|
79
76
|
return /* @__PURE__ */ jsxs("div", { id: fieldId, "data-jsf-input": true, className: "flex flex-col gap-1.5", children: [
|
|
80
77
|
values.length > 0 && /* @__PURE__ */ jsx("ul", { className: "flex flex-wrap gap-1", children: values.map((entry) => /* @__PURE__ */ jsxs(
|
|
81
78
|
"li",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-form-lookup-tree.js","sources":["../../src/components/json-schema-form-lookup-tree.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiClose } from \"../icons\";\nimport {\n buildPathTree,\n splitPath,\n type PathTreeNode,\n} from \"../lib/path-tree\";\nimport { cn } from \"../lib/utils\";\nimport { TreePickerField } from \"./TreePickerField\";\nimport type { FormSize } from \"./json-schema-form-size\";\nimport type {\n FieldControl,\n FieldOption,\n LookupHierarchy,\n} from \"./json-schema-form-types\";\n\ntype OptionNode = PathTreeNode<FieldOption>;\n\n// optionOf returns the option a node commits, or undefined for a pure folder —\n// an intermediate segment (`logs` in `logs.api`) that no option itself names.\nfunction optionOf(node: OptionNode): FieldOption | undefined {\n return node.items[0];\n}\n\nfunction treeFrom(\n options: FieldOption[],\n hierarchy: LookupHierarchy,\n): OptionNode[] {\n return buildPathTree(options, (option) =>\n splitPath(option.label || option.value, hierarchy.delimiters),\n );\n}\n\
|
|
1
|
+
{"version":3,"file":"json-schema-form-lookup-tree.js","sources":["../../src/components/json-schema-form-lookup-tree.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiClose } from \"../icons\";\nimport {\n buildPathTree,\n splitPath,\n type PathTreeNode,\n} from \"../lib/path-tree\";\nimport { cn } from \"../lib/utils\";\nimport { TreePickerField } from \"./TreePickerField\";\nimport { toStringArray } from \"./json-schema-form-utils\";\nimport type { FormSize } from \"./json-schema-form-size\";\nimport type {\n FieldControl,\n FieldOption,\n LookupHierarchy,\n} from \"./json-schema-form-types\";\n\ntype OptionNode = PathTreeNode<FieldOption>;\n\n// optionOf returns the option a node commits, or undefined for a pure folder —\n// an intermediate segment (`logs` in `logs.api`) that no option itself names.\nfunction optionOf(node: OptionNode): FieldOption | undefined {\n return node.items[0];\n}\n\nfunction treeFrom(\n options: FieldOption[],\n hierarchy: LookupHierarchy,\n): OptionNode[] {\n return buildPathTree(options, (option) =>\n splitPath(option.label || option.value, hierarchy.delimiters),\n );\n}\n\nfunction OptionRow({ node }: { node: OptionNode }) {\n const option = optionOf(node);\n return (\n <span\n className={cn(\n \"min-w-0 flex-1 truncate text-sm\",\n option ? \"text-foreground\" : \"text-muted-foreground\",\n )}\n >\n {node.label}\n </span>\n );\n}\n\n/**\n * LookupTreeControl is the hierarchical form of the entity-reference picker: it\n * browses the fetched options as a tree rather than scrolling one long flat\n * list. Reached when the lookup descriptor declares `hierarchy`.\n *\n * Only the *presentation* is hierarchical — the committed value is always the\n * option's own value, never a path. Folder-only nodes are not selectable, but\n * an option whose label is a prefix of others (a node that is both folder and\n * leaf) stays selectable.\n */\nexport function LookupTreeControl({\n field,\n fieldId,\n readOnly,\n size,\n options,\n loading,\n hierarchy,\n}: {\n field: FieldControl;\n fieldId: string;\n readOnly: boolean;\n size: FormSize;\n options: FieldOption[];\n loading: boolean;\n hierarchy: LookupHierarchy;\n}) {\n const roots = useMemo(\n () => treeFrom(options, hierarchy),\n [options, hierarchy],\n );\n const multi = field.lookup?.multi === true;\n const placeholder = loading ? \"Loading…\" : \"Select…\";\n\n if (!multi) {\n const value = typeof field.value === \"string\" ? field.value : \"\";\n const selected =\n findByValue(roots, value) ?? (null as OptionNode | null);\n return (\n <div id={fieldId} data-jsf-input>\n <TreePickerField<OptionNode>\n roots={roots}\n getKey={(node) => node.key}\n getChildren={(node) => node.children}\n getSearchText={(node) => node.key}\n // Every branch starts closed — the tree exists to keep a long option\n // list scannable, which a pre-expanded first level undoes.\n defaultOpen={() => false}\n renderRow={({ node }) => <OptionRow node={node} />}\n isSelectable={(node) => optionOf(node) !== undefined}\n onSelect={(node) => field.onChange(optionOf(node)?.value)}\n selected={selected}\n revealSelected\n ariaLabel={field.label}\n disabled={readOnly}\n size={size}\n placeholder={placeholder}\n {...(value ? { label: value } : {})}\n />\n </div>\n );\n }\n\n const values = toStringArray(field.value);\n return (\n <div id={fieldId} data-jsf-input className=\"flex flex-col gap-1.5\">\n {values.length > 0 && (\n <ul className=\"flex flex-wrap gap-1\">\n {values.map((entry) => (\n <li\n key={entry}\n className=\"inline-flex items-center gap-1 rounded-md border border-border bg-muted/40 py-0.5 pl-2 pr-1 text-xs\"\n >\n <span className=\"truncate\">{entry}</span>\n {!readOnly && (\n <button\n type=\"button\"\n aria-label={`Remove ${entry}`}\n onClick={() =>\n field.onChange(values.filter((kept) => kept !== entry))\n }\n className=\"rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon icon={UiClose} className=\"text-[0.7rem]\" />\n </button>\n )}\n </li>\n ))}\n </ul>\n )}\n {!readOnly && (\n <TreePickerField<OptionNode>\n roots={roots}\n getKey={(node) => node.key}\n getChildren={(node) => node.children}\n getSearchText={(node) => node.key}\n // Every branch starts closed — the tree exists to keep a long option\n // list scannable, which a pre-expanded first level undoes.\n defaultOpen={() => false}\n renderRow={({ node }) => <OptionRow node={node} />}\n // Already-chosen values stay visible but inert, so the list does not\n // reshuffle underneath the pointer mid-selection.\n isSelectable={(node) => {\n const option = optionOf(node);\n return option !== undefined && !values.includes(option.value);\n }}\n onSelect={(node) => {\n const option = optionOf(node);\n if (option) field.onChange([...values, option.value]);\n }}\n ariaLabel={field.label}\n size={size}\n renderTrigger={({ triggerRef, toggle }) => (\n <button\n ref={triggerRef}\n type=\"button\"\n onClick={toggle}\n className=\"inline-flex w-fit items-center gap-1.5 rounded-md border border-dashed border-input px-2 py-1 text-xs text-muted-foreground transition-colors hover:border-input hover:text-foreground\"\n >\n <Icon icon={UiAdd} className=\"text-[0.7rem]\" />\n {loading ? \"Loading…\" : `Add ${field.label ?? \"value\"}`}\n </button>\n )}\n />\n )}\n </div>\n );\n}\n\nfunction findByValue(nodes: OptionNode[], value: string): OptionNode | null {\n if (!value) return null;\n for (const node of nodes) {\n if (optionOf(node)?.value === value) return node;\n const nested = findByValue(node.children, value);\n if (nested) return nested;\n }\n return null;\n}\n"],"names":["_a"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
require("react");
|
|
5
|
+
const collections = require("../lib/collections.cjs");
|
|
5
6
|
const utils = require("../lib/utils.cjs");
|
|
6
7
|
const Icon = require("../data/Icon.cjs");
|
|
7
8
|
const button = require("./button.cjs");
|
|
@@ -13,7 +14,7 @@ const jsonSchemaFormSize = require("./json-schema-form-size.cjs");
|
|
|
13
14
|
const UiTrash = require("../icons/components/UiTrash.cjs");
|
|
14
15
|
const UiAdd = require("../icons/components/UiAdd.cjs");
|
|
15
16
|
function ObjectControl({ field, ctx }) {
|
|
16
|
-
const obj =
|
|
17
|
+
const obj = collections.isPlainObject(field.value) ? field.value : {};
|
|
17
18
|
const subSchema = {
|
|
18
19
|
type: "object",
|
|
19
20
|
properties: field.objectProperties ?? {},
|
|
@@ -47,7 +48,7 @@ function ObjectControl({ field, ctx }) {
|
|
|
47
48
|
}
|
|
48
49
|
function StringMapControl({ field, ctx }) {
|
|
49
50
|
const readOnly = ctx.readOnly || field.readOnly === true;
|
|
50
|
-
const map =
|
|
51
|
+
const map = collections.isPlainObject(field.value) ? field.value : {};
|
|
51
52
|
const known = field.knownProperties ?? {};
|
|
52
53
|
const knownKeys = Object.keys(known);
|
|
53
54
|
const extraKeys = Object.keys(map).filter((k) => !(k in known));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-form-object.cjs","sources":["../../src/components/json-schema-form-object.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiTrash } from \"../icons\";\nimport { Button } from \"./button\";\nimport { Combobox } from \"./Combobox\";\nimport type { FieldControl, JsonSchemaObject, JsonSchemaProperty, RenderContext } from \"./json-schema-form-types\";\nimport {\n cssLength,\n DEFAULT_COLUMN_MIN_WIDTH,\n fieldInputId,\n inputClass,\n isPlainObject,\n keyPickerOptions,\n normalizeColumns,\n} from \"./json-schema-form-utils\";\nimport { FieldsGrid } from \"./json-schema-form-layout\";\nimport { appendInstancePath } from \"./json-schema-form-errors\";\nimport { controlHeightClass, fieldInnerGapClass, inputSizeClass } from \"./json-schema-form-size\";\n\n// ObjectControl renders a nested structured object as a sub-form: its own\n// properties, required markers, if/then, soft errors — all via the shared\n// recursive renderer (ctx.render), so pre/post extensions apply at this depth too.\nexport function ObjectControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n const obj = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const subSchema: JsonSchemaObject = {\n type: \"object\",\n properties: field.objectProperties ?? {},\n ...(field.objectRequired ? { required: field.objectRequired } : {}),\n ...(Array.isArray(field.schema.allOf) ? { allOf: field.schema.allOf } : {}),\n ...(Array.isArray(field.schema[\"x-order\"]) ? { \"x-order\": field.schema[\"x-order\"] } : {}),\n // Every object-level layout keyword must be copied here or it works at the\n // top level and silently dies one level down — which is exactly where these\n // matter (an array item's body is a nested object).\n ...(typeof field.schema[\"x-columns\"] === \"number\" || field.schema[\"x-columns\"] === \"auto\"\n ? { \"x-columns\": field.schema[\"x-columns\"] }\n : {}),\n ...(typeof field.schema[\"x-column-min-width\"] === \"string\"\n ? { \"x-column-min-width\": field.schema[\"x-column-min-width\"] }\n : {}),\n ...(typeof field.schema[\"x-columns-max-width\"] === \"string\"\n ? { \"x-columns-max-width\": field.schema[\"x-columns-max-width\"] }\n : {}),\n ...(typeof field.schema[\"x-classes\"] === \"string\" ? { \"x-classes\": field.schema[\"x-classes\"] } : {}),\n };\n // No border/box: nested objects render as flat headed sections (see\n // ObjectSection in renderFieldRow) rather than progressively indented\n // sub-forms, so deep schemas stay readable as a single column.\n // A read-only object marks its whole subtree non-editable: recurse with\n // form-level readOnly on so child inputs are disabled (and any child the\n // schema marks readOnly still renders as a value span).\n return (\n <FieldsGrid\n layout={ctx.layout}\n size={ctx.size}\n columns={normalizeColumns(subSchema[\"x-columns\"])}\n columnMinWidth={cssLength(subSchema[\"x-column-min-width\"], DEFAULT_COLUMN_MIN_WIDTH)}\n {...(typeof subSchema[\"x-columns-max-width\"] === \"string\"\n ? { columnsMaxWidth: subSchema[\"x-columns-max-width\"] }\n : {})}\n {...(typeof subSchema[\"x-classes\"] === \"string\" ? { className: subSchema[\"x-classes\"] } : {})}\n >\n {ctx.render.renderObjectFields(subSchema, obj, (next) => field.onChange(next), {\n ...ctx,\n readOnly: ctx.readOnly || field.readOnly === true,\n depth: ctx.depth + 1,\n })}\n </FieldsGrid>\n );\n}\n\n// StringMapControl edits an object as key/value rows. Known properties (from the\n// schema) render first with derived value controls; unknown keys render as\n// editable key/value pairs. \"Add field\" appears when extra keys are allowed.\n// Values recurse through the shared pipeline, so a value that is itself an object\n// or array renders structurally and pre/post extensions apply to it.\nexport function StringMapControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n // A read-only map marks its whole subtree non-editable: no rename/remove/add\n // and value inputs disabled.\n const readOnly = ctx.readOnly || field.readOnly === true;\n const map = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const known = field.knownProperties ?? {};\n const knownKeys = Object.keys(known);\n const extraKeys = Object.keys(map).filter((k) => !(k in known));\n const childCtx: RenderContext = { ...ctx, readOnly, depth: ctx.depth + 1 };\n // What the map key IS (e.g. \"Address Role\"), from the key-constraint schema.\n const pn = field.schema.propertyNames as JsonSchemaProperty | undefined;\n const keyTitle = typeof pn?.title === \"string\" && pn.title ? pn.title : undefined;\n\n // valueSchemaForKey picks an entry's value schema: the first patternProperties\n // entry whose regex matches the key, else the `additionalProperties` schema,\n // else a bare string. Lets the value form vary by key (e.g. House vs Apartment).\n function valueSchemaForKey(key: string): JsonSchemaProperty {\n for (const { pattern, schema } of field.valuePatternSchemas ?? []) {\n let re: RegExp | undefined;\n try {\n re = new RegExp(pattern);\n } catch {\n re = undefined; // a malformed pattern simply never matches\n }\n if (re?.test(key)) return schema;\n }\n return field.valueSchema ?? { type: \"string\" };\n }\n\n // When the entry value opts into a stacked layout (`x-layout: \"stack\"`), the\n // key+value render as one full-width stacked unit instead of a key column\n // beside the value. Resolved per key, since pattern schemas may differ.\n function entryIsStacked(key: string): boolean {\n return valueSchemaForKey(key)[\"x-layout\"] === \"stack\";\n }\n\n function setEntry(key: string, next: unknown) {\n field.onChange({ ...map, [key]: next });\n }\n function renameEntry(oldKey: string, newKey: string) {\n if (newKey === oldKey) return;\n const next: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(map)) next[k === oldKey ? newKey : k] = v;\n field.onChange(next);\n }\n function removeEntry(key: string) {\n const next = { ...map };\n delete next[key];\n field.onChange(next);\n }\n function addEntry() {\n if (\"\" in map) return;\n field.onChange({ ...map, \"\": \"\" });\n }\n\n function valueControlFor(key: string, valueSchema: JsonSchemaProperty): ReactNode {\n const nodes = ctx.render.renderFieldNodes(\n {\n key,\n prop: valueSchema,\n required: false,\n value: map[key] ?? \"\",\n onChange: (next) => setEntry(key, next),\n instancePath: appendInstancePath(ctx.instancePath, key),\n },\n childCtx,\n );\n return nodes?.value ?? null;\n }\n\n // valueControlForKey resolves the per-key value schema (patternProperties /\n // additionalProperties) before rendering, so the form varies by key.\n function valueControlForKey(key: string): ReactNode {\n return valueControlFor(key, valueSchemaForKey(key));\n }\n\n return (\n <div className={cn(\"flex flex-col rounded-md border border-input p-2\", fieldInnerGapClass[childCtx.size])}>\n {knownKeys.map((key) => (\n <div key={`known-${key}`} className=\"grid grid-cols-[10rem_1fr] items-center gap-2\">\n <label\n htmlFor={fieldInputId(appendInstancePath(ctx.instancePath, key), childCtx.idPrefix)}\n className=\"truncate text-xs text-muted-foreground\"\n title={key}\n >\n {key}\n </label>\n <div className=\"min-w-0\">{valueControlFor(key, known[key] ?? { type: \"string\" })}</div>\n </div>\n ))}\n {extraKeys.map((key) => {\n const keyControl = field.keyOptions ? (\n <Combobox\n options={keyPickerOptions(field.keyOptions, extraKeys, key)}\n value={key}\n disabled={readOnly}\n size={childCtx.size}\n allowCustomValue={false}\n onChange={(next) => renameEntry(key, next)}\n placeholder=\"Select…\"\n />\n ) : (\n <input\n type=\"text\"\n aria-label=\"Field name\"\n className={cn(inputClass(childCtx.size), \"font-mono\")}\n value={key}\n disabled={readOnly}\n onChange={(e) => renameEntry(key, e.target.value)}\n />\n );\n const removeButton = !readOnly ? (\n <button\n type=\"button\"\n aria-label={`Remove ${key}`}\n className={cn(\n \"inline-flex aspect-square shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground\",\n controlHeightClass[childCtx.size],\n )}\n onClick={() => removeEntry(key)}\n >\n <Icon icon={UiTrash} className=\"text-sm\" />\n </button>\n ) : null;\n // When the value is stacked (`x-layout: \"stack\"` on the entry schema),\n // the key joins the stack: it sits full-width above its value as one\n // unit, rather than cramped in a fixed key column beside it. The key\n // picker is labelled from `propertyNames.title` so a constrained key\n // (e.g. an AsCode role) says what it is.\n if (entryIsStacked(key)) {\n return (\n <div key={`extra-${key}`} className=\"space-y-1.5 rounded-md border border-input p-2\">\n {keyTitle && <span className=\"block text-xs font-medium text-muted-foreground\">{keyTitle}</span>}\n <div className=\"flex items-center gap-2\">\n <div className=\"min-w-0 flex-1\">{keyControl}</div>\n {removeButton}\n </div>\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n </div>\n );\n }\n return (\n <div key={`extra-${key}`} className=\"grid grid-cols-[10rem_1fr_auto] items-center gap-2\">\n {keyControl}\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n {removeButton}\n </div>\n );\n })}\n {!readOnly && field.allowExtraKeys !== false && (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={addEntry}\n className={cn(\"gap-1.5\", inputSizeClass[childCtx.size])}\n >\n <Icon icon={UiAdd} className=\"text-sm\" />\n Add field\n </Button>\n )}\n </div>\n );\n}\n"],"names":["isPlainObject","jsx","FieldsGrid","normalizeColumns","cssLength","DEFAULT_COLUMN_MIN_WIDTH","appendInstancePath","jsxs","cn","fieldInnerGapClass","fieldInputId","Combobox","keyPickerOptions","inputClass","controlHeightClass","Icon","UiTrash","Button","inputSizeClass","UiAdd"],"mappings":";;;;;;;;;;;;;;AAuBO,SAAS,cAAc,EAAE,OAAO,OAAoD;AACzF,QAAM,MAAMA,oBAAAA,cAAc,MAAM,KAAK,IAAK,MAAM,QAAoC,CAAA;AACpF,QAAM,YAA8B;AAAA,IAClC,MAAM;AAAA,IACN,YAAY,MAAM,oBAAoB,CAAA;AAAA,IACtC,GAAI,MAAM,iBAAiB,EAAE,UAAU,MAAM,eAAA,IAAmB,CAAA;AAAA,IAChE,GAAI,MAAM,QAAQ,MAAM,OAAO,KAAK,IAAI,EAAE,OAAO,MAAM,OAAO,MAAA,IAAU,CAAA;AAAA,IACxE,GAAI,MAAM,QAAQ,MAAM,OAAO,SAAS,CAAC,IAAI,EAAE,WAAW,MAAM,OAAO,SAAS,EAAA,IAAM,CAAA;AAAA;AAAA;AAAA;AAAA,IAItF,GAAI,OAAO,MAAM,OAAO,WAAW,MAAM,YAAY,MAAM,OAAO,WAAW,MAAM,SAC/E,EAAE,aAAa,MAAM,OAAO,WAAW,EAAA,IACvC,CAAA;AAAA,IACJ,GAAI,OAAO,MAAM,OAAO,oBAAoB,MAAM,WAC9C,EAAE,sBAAsB,MAAM,OAAO,oBAAoB,EAAA,IACzD,CAAA;AAAA,IACJ,GAAI,OAAO,MAAM,OAAO,qBAAqB,MAAM,WAC/C,EAAE,uBAAuB,MAAM,OAAO,qBAAqB,EAAA,IAC3D,CAAA;AAAA,IACJ,GAAI,OAAO,MAAM,OAAO,WAAW,MAAM,WAAW,EAAE,aAAa,MAAM,OAAO,WAAW,EAAA,IAAM,CAAA;AAAA,EAAC;AAQpG,SACEC,2BAAAA;AAAAA,IAACC,qBAAAA;AAAAA,IAAA;AAAA,MACC,QAAQ,IAAI;AAAA,MACZ,MAAM,IAAI;AAAA,MACV,SAASC,oBAAAA,iBAAiB,UAAU,WAAW,CAAC;AAAA,MAChD,gBAAgBC,oBAAAA,UAAU,UAAU,oBAAoB,GAAGC,oBAAAA,wBAAwB;AAAA,MAClF,GAAI,OAAO,UAAU,qBAAqB,MAAM,WAC7C,EAAE,iBAAiB,UAAU,qBAAqB,EAAA,IAClD,CAAA;AAAA,MACH,GAAI,OAAO,UAAU,WAAW,MAAM,WAAW,EAAE,WAAW,UAAU,WAAW,EAAA,IAAM,CAAA;AAAA,MAEzF,UAAA,IAAI,OAAO,mBAAmB,WAAW,KAAK,CAAC,SAAS,MAAM,SAAS,IAAI,GAAG;AAAA,QAC7E,GAAG;AAAA,QACH,UAAU,IAAI,YAAY,MAAM,aAAa;AAAA,QAC7C,OAAO,IAAI,QAAQ;AAAA,MAAA,CACpB;AAAA,IAAA;AAAA,EAAA;AAGP;AAOO,SAAS,iBAAiB,EAAE,OAAO,OAAoD;AAG5F,QAAM,WAAW,IAAI,YAAY,MAAM,aAAa;AACpD,QAAM,MAAML,oBAAAA,cAAc,MAAM,KAAK,IAAK,MAAM,QAAoC,CAAA;AACpF,QAAM,QAAQ,MAAM,mBAAmB,CAAA;AACvC,QAAM,YAAY,OAAO,KAAK,KAAK;AACnC,QAAM,YAAY,OAAO,KAAK,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,MAAM;AAC9D,QAAM,WAA0B,EAAE,GAAG,KAAK,UAAU,OAAO,IAAI,QAAQ,EAAA;AAEvE,QAAM,KAAK,MAAM,OAAO;AACxB,QAAM,WAAW,QAAO,yBAAI,WAAU,YAAY,GAAG,QAAQ,GAAG,QAAQ;AAKxE,WAAS,kBAAkB,KAAiC;AAC1D,eAAW,EAAE,SAAS,OAAA,KAAY,MAAM,uBAAuB,IAAI;AACjE,UAAI;AACJ,UAAI;AACF,aAAK,IAAI,OAAO,OAAO;AAAA,MACzB,QAAQ;AACN,aAAK;AAAA,MACP;AACA,UAAI,yBAAI,KAAK,KAAM,QAAO;AAAA,IAC5B;AACA,WAAO,MAAM,eAAe,EAAE,MAAM,SAAA;AAAA,EACtC;AAKA,WAAS,eAAe,KAAsB;AAC5C,WAAO,kBAAkB,GAAG,EAAE,UAAU,MAAM;AAAA,EAChD;AAEA,WAAS,SAAS,KAAa,MAAe;AAC5C,UAAM,SAAS,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM;AAAA,EACxC;AACA,WAAS,YAAY,QAAgB,QAAgB;AACnD,QAAI,WAAW,OAAQ;AACvB,UAAM,OAAgC,CAAA;AACtC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,GAAG,EAAG,MAAK,MAAM,SAAS,SAAS,CAAC,IAAI;AAC5E,UAAM,SAAS,IAAI;AAAA,EACrB;AACA,WAAS,YAAY,KAAa;AAChC,UAAM,OAAO,EAAE,GAAG,IAAA;AAClB,WAAO,KAAK,GAAG;AACf,UAAM,SAAS,IAAI;AAAA,EACrB;AACA,WAAS,WAAW;AAClB,QAAI,MAAM,IAAK;AACf,UAAM,SAAS,EAAE,GAAG,KAAK,IAAI,IAAI;AAAA,EACnC;AAEA,WAAS,gBAAgB,KAAa,aAA4C;AAChF,UAAM,QAAQ,IAAI,OAAO;AAAA,MACvB;AAAA,QACE;AAAA,QACA,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO,IAAI,GAAG,KAAK;AAAA,QACnB,UAAU,CAAC,SAAS,SAAS,KAAK,IAAI;AAAA,QACtC,cAAcM,qBAAAA,mBAAmB,IAAI,cAAc,GAAG;AAAA,MAAA;AAAA,MAExD;AAAA,IAAA;AAEF,YAAO,+BAAO,UAAS;AAAA,EACzB;AAIA,WAAS,mBAAmB,KAAwB;AAClD,WAAO,gBAAgB,KAAK,kBAAkB,GAAG,CAAC;AAAA,EACpD;AAEA,SACEC,gCAAC,SAAI,WAAWC,MAAAA,GAAG,oDAAoDC,mBAAAA,mBAAmB,SAAS,IAAI,CAAC,GACrG,UAAA;AAAA,IAAA,UAAU,IAAI,CAAC,QACdF,2BAAAA,KAAC,OAAA,EAAyB,WAAU,iDAClC,UAAA;AAAA,MAAAN,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASS,oBAAAA,aAAaJ,qBAAAA,mBAAmB,IAAI,cAAc,GAAG,GAAG,SAAS,QAAQ;AAAA,UAClF,WAAU;AAAA,UACV,OAAO;AAAA,UAEN,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAEHL,2BAAAA,IAAC,OAAA,EAAI,WAAU,WAAW,UAAA,gBAAgB,KAAK,MAAM,GAAG,KAAK,EAAE,MAAM,SAAA,CAAU,EAAA,CAAE;AAAA,IAAA,EAAA,GARzE,SAAS,GAAG,EAStB,CACD;AAAA,IACA,UAAU,IAAI,CAAC,QAAQ;AACtB,YAAM,aAAa,MAAM,aACvBA,2BAAAA;AAAAA,QAACU,SAAAA;AAAAA,QAAA;AAAA,UACC,SAASC,oBAAAA,iBAAiB,MAAM,YAAY,WAAW,GAAG;AAAA,UAC1D,OAAO;AAAA,UACP,UAAU;AAAA,UACV,MAAM,SAAS;AAAA,UACf,kBAAkB;AAAA,UAClB,UAAU,CAAC,SAAS,YAAY,KAAK,IAAI;AAAA,UACzC,aAAY;AAAA,QAAA;AAAA,MAAA,IAGdX,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAW;AAAA,UACX,WAAWO,MAAAA,GAAGK,oBAAAA,WAAW,SAAS,IAAI,GAAG,WAAW;AAAA,UACpD,OAAO;AAAA,UACP,UAAU;AAAA,UACV,UAAU,CAAC,MAAM,YAAY,KAAK,EAAE,OAAO,KAAK;AAAA,QAAA;AAAA,MAAA;AAGpD,YAAM,eAAe,CAAC,WACpBZ,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAY,UAAU,GAAG;AAAA,UACzB,WAAWO,MAAAA;AAAAA,YACT;AAAA,YACAM,mBAAAA,mBAAmB,SAAS,IAAI;AAAA,UAAA;AAAA,UAElC,SAAS,MAAM,YAAY,GAAG;AAAA,UAE9B,UAAAb,2BAAAA,IAACc,WAAA,EAAK,MAAMC,QAAAA,SAAS,WAAU,UAAA,CAAU;AAAA,QAAA;AAAA,MAAA,IAEzC;AAMJ,UAAI,eAAe,GAAG,GAAG;AACvB,eACET,2BAAAA,KAAC,OAAA,EAAyB,WAAU,kDACjC,UAAA;AAAA,UAAA,YAAYN,2BAAAA,IAAC,QAAA,EAAK,WAAU,mDAAmD,UAAA,UAAS;AAAA,UACzFM,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,YAAAN,2BAAAA,IAAC,OAAA,EAAI,WAAU,kBAAkB,UAAA,YAAW;AAAA,YAC3C;AAAA,UAAA,GACH;AAAA,yCACC,OAAA,EAAI,WAAU,WAAW,UAAA,mBAAmB,GAAG,EAAA,CAAE;AAAA,QAAA,EAAA,GAN1C,SAAS,GAAG,EAOtB;AAAA,MAEJ;AACA,aACEM,2BAAAA,KAAC,OAAA,EAAyB,WAAU,sDACjC,UAAA;AAAA,QAAA;AAAA,uCACA,OAAA,EAAI,WAAU,WAAW,UAAA,mBAAmB,GAAG,GAAE;AAAA,QACjD;AAAA,MAAA,EAAA,GAHO,SAAS,GAAG,EAItB;AAAA,IAEJ,CAAC;AAAA,IACA,CAAC,YAAY,MAAM,mBAAmB,SACrCA,2BAAAA;AAAAA,MAACU,OAAAA;AAAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAWT,MAAAA,GAAG,WAAWU,mBAAAA,eAAe,SAAS,IAAI,CAAC;AAAA,QAEtD,UAAA;AAAA,UAAAjB,2BAAAA,IAACc,KAAAA,MAAA,EAAK,MAAMI,MAAAA,OAAO,WAAU,WAAU;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAE3C,GAEJ;AAEJ;;;"}
|
|
1
|
+
{"version":3,"file":"json-schema-form-object.cjs","sources":["../../src/components/json-schema-form-object.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { isPlainObject } from \"../lib/collections\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiTrash } from \"../icons\";\nimport { Button } from \"./button\";\nimport { Combobox } from \"./Combobox\";\nimport type { FieldControl, JsonSchemaObject, JsonSchemaProperty, RenderContext } from \"./json-schema-form-types\";\nimport {\n cssLength,\n DEFAULT_COLUMN_MIN_WIDTH,\n fieldInputId,\n inputClass,\n keyPickerOptions,\n normalizeColumns,\n} from \"./json-schema-form-utils\";\nimport { FieldsGrid } from \"./json-schema-form-layout\";\nimport { appendInstancePath } from \"./json-schema-form-errors\";\nimport { controlHeightClass, fieldInnerGapClass, inputSizeClass } from \"./json-schema-form-size\";\n\n// ObjectControl renders a nested structured object as a sub-form: its own\n// properties, required markers, if/then, soft errors — all via the shared\n// recursive renderer (ctx.render), so pre/post extensions apply at this depth too.\nexport function ObjectControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n const obj = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const subSchema: JsonSchemaObject = {\n type: \"object\",\n properties: field.objectProperties ?? {},\n ...(field.objectRequired ? { required: field.objectRequired } : {}),\n ...(Array.isArray(field.schema.allOf) ? { allOf: field.schema.allOf } : {}),\n ...(Array.isArray(field.schema[\"x-order\"]) ? { \"x-order\": field.schema[\"x-order\"] } : {}),\n // Every object-level layout keyword must be copied here or it works at the\n // top level and silently dies one level down — which is exactly where these\n // matter (an array item's body is a nested object).\n ...(typeof field.schema[\"x-columns\"] === \"number\" || field.schema[\"x-columns\"] === \"auto\"\n ? { \"x-columns\": field.schema[\"x-columns\"] }\n : {}),\n ...(typeof field.schema[\"x-column-min-width\"] === \"string\"\n ? { \"x-column-min-width\": field.schema[\"x-column-min-width\"] }\n : {}),\n ...(typeof field.schema[\"x-columns-max-width\"] === \"string\"\n ? { \"x-columns-max-width\": field.schema[\"x-columns-max-width\"] }\n : {}),\n ...(typeof field.schema[\"x-classes\"] === \"string\" ? { \"x-classes\": field.schema[\"x-classes\"] } : {}),\n };\n // No border/box: nested objects render as flat headed sections (see\n // ObjectSection in renderFieldRow) rather than progressively indented\n // sub-forms, so deep schemas stay readable as a single column.\n // A read-only object marks its whole subtree non-editable: recurse with\n // form-level readOnly on so child inputs are disabled (and any child the\n // schema marks readOnly still renders as a value span).\n return (\n <FieldsGrid\n layout={ctx.layout}\n size={ctx.size}\n columns={normalizeColumns(subSchema[\"x-columns\"])}\n columnMinWidth={cssLength(subSchema[\"x-column-min-width\"], DEFAULT_COLUMN_MIN_WIDTH)}\n {...(typeof subSchema[\"x-columns-max-width\"] === \"string\"\n ? { columnsMaxWidth: subSchema[\"x-columns-max-width\"] }\n : {})}\n {...(typeof subSchema[\"x-classes\"] === \"string\" ? { className: subSchema[\"x-classes\"] } : {})}\n >\n {ctx.render.renderObjectFields(subSchema, obj, (next) => field.onChange(next), {\n ...ctx,\n readOnly: ctx.readOnly || field.readOnly === true,\n depth: ctx.depth + 1,\n })}\n </FieldsGrid>\n );\n}\n\n// StringMapControl edits an object as key/value rows. Known properties (from the\n// schema) render first with derived value controls; unknown keys render as\n// editable key/value pairs. \"Add field\" appears when extra keys are allowed.\n// Values recurse through the shared pipeline, so a value that is itself an object\n// or array renders structurally and pre/post extensions apply to it.\nexport function StringMapControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n // A read-only map marks its whole subtree non-editable: no rename/remove/add\n // and value inputs disabled.\n const readOnly = ctx.readOnly || field.readOnly === true;\n const map = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const known = field.knownProperties ?? {};\n const knownKeys = Object.keys(known);\n const extraKeys = Object.keys(map).filter((k) => !(k in known));\n const childCtx: RenderContext = { ...ctx, readOnly, depth: ctx.depth + 1 };\n // What the map key IS (e.g. \"Address Role\"), from the key-constraint schema.\n const pn = field.schema.propertyNames as JsonSchemaProperty | undefined;\n const keyTitle = typeof pn?.title === \"string\" && pn.title ? pn.title : undefined;\n\n // valueSchemaForKey picks an entry's value schema: the first patternProperties\n // entry whose regex matches the key, else the `additionalProperties` schema,\n // else a bare string. Lets the value form vary by key (e.g. House vs Apartment).\n function valueSchemaForKey(key: string): JsonSchemaProperty {\n for (const { pattern, schema } of field.valuePatternSchemas ?? []) {\n let re: RegExp | undefined;\n try {\n re = new RegExp(pattern);\n } catch {\n re = undefined; // a malformed pattern simply never matches\n }\n if (re?.test(key)) return schema;\n }\n return field.valueSchema ?? { type: \"string\" };\n }\n\n // When the entry value opts into a stacked layout (`x-layout: \"stack\"`), the\n // key+value render as one full-width stacked unit instead of a key column\n // beside the value. Resolved per key, since pattern schemas may differ.\n function entryIsStacked(key: string): boolean {\n return valueSchemaForKey(key)[\"x-layout\"] === \"stack\";\n }\n\n function setEntry(key: string, next: unknown) {\n field.onChange({ ...map, [key]: next });\n }\n function renameEntry(oldKey: string, newKey: string) {\n if (newKey === oldKey) return;\n const next: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(map)) next[k === oldKey ? newKey : k] = v;\n field.onChange(next);\n }\n function removeEntry(key: string) {\n const next = { ...map };\n delete next[key];\n field.onChange(next);\n }\n function addEntry() {\n if (\"\" in map) return;\n field.onChange({ ...map, \"\": \"\" });\n }\n\n function valueControlFor(key: string, valueSchema: JsonSchemaProperty): ReactNode {\n const nodes = ctx.render.renderFieldNodes(\n {\n key,\n prop: valueSchema,\n required: false,\n value: map[key] ?? \"\",\n onChange: (next) => setEntry(key, next),\n instancePath: appendInstancePath(ctx.instancePath, key),\n },\n childCtx,\n );\n return nodes?.value ?? null;\n }\n\n // valueControlForKey resolves the per-key value schema (patternProperties /\n // additionalProperties) before rendering, so the form varies by key.\n function valueControlForKey(key: string): ReactNode {\n return valueControlFor(key, valueSchemaForKey(key));\n }\n\n return (\n <div className={cn(\"flex flex-col rounded-md border border-input p-2\", fieldInnerGapClass[childCtx.size])}>\n {knownKeys.map((key) => (\n <div key={`known-${key}`} className=\"grid grid-cols-[10rem_1fr] items-center gap-2\">\n <label\n htmlFor={fieldInputId(appendInstancePath(ctx.instancePath, key), childCtx.idPrefix)}\n className=\"truncate text-xs text-muted-foreground\"\n title={key}\n >\n {key}\n </label>\n <div className=\"min-w-0\">{valueControlFor(key, known[key] ?? { type: \"string\" })}</div>\n </div>\n ))}\n {extraKeys.map((key) => {\n const keyControl = field.keyOptions ? (\n <Combobox\n options={keyPickerOptions(field.keyOptions, extraKeys, key)}\n value={key}\n disabled={readOnly}\n size={childCtx.size}\n allowCustomValue={false}\n onChange={(next) => renameEntry(key, next)}\n placeholder=\"Select…\"\n />\n ) : (\n <input\n type=\"text\"\n aria-label=\"Field name\"\n className={cn(inputClass(childCtx.size), \"font-mono\")}\n value={key}\n disabled={readOnly}\n onChange={(e) => renameEntry(key, e.target.value)}\n />\n );\n const removeButton = !readOnly ? (\n <button\n type=\"button\"\n aria-label={`Remove ${key}`}\n className={cn(\n \"inline-flex aspect-square shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground\",\n controlHeightClass[childCtx.size],\n )}\n onClick={() => removeEntry(key)}\n >\n <Icon icon={UiTrash} className=\"text-sm\" />\n </button>\n ) : null;\n // When the value is stacked (`x-layout: \"stack\"` on the entry schema),\n // the key joins the stack: it sits full-width above its value as one\n // unit, rather than cramped in a fixed key column beside it. The key\n // picker is labelled from `propertyNames.title` so a constrained key\n // (e.g. an AsCode role) says what it is.\n if (entryIsStacked(key)) {\n return (\n <div key={`extra-${key}`} className=\"space-y-1.5 rounded-md border border-input p-2\">\n {keyTitle && <span className=\"block text-xs font-medium text-muted-foreground\">{keyTitle}</span>}\n <div className=\"flex items-center gap-2\">\n <div className=\"min-w-0 flex-1\">{keyControl}</div>\n {removeButton}\n </div>\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n </div>\n );\n }\n return (\n <div key={`extra-${key}`} className=\"grid grid-cols-[10rem_1fr_auto] items-center gap-2\">\n {keyControl}\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n {removeButton}\n </div>\n );\n })}\n {!readOnly && field.allowExtraKeys !== false && (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={addEntry}\n className={cn(\"gap-1.5\", inputSizeClass[childCtx.size])}\n >\n <Icon icon={UiAdd} className=\"text-sm\" />\n Add field\n </Button>\n )}\n </div>\n );\n}\n"],"names":["isPlainObject","jsx","FieldsGrid","normalizeColumns","cssLength","DEFAULT_COLUMN_MIN_WIDTH","appendInstancePath","jsxs","cn","fieldInnerGapClass","fieldInputId","Combobox","keyPickerOptions","inputClass","controlHeightClass","Icon","UiTrash","Button","inputSizeClass","UiAdd"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-form-object.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-object.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-schema-form-object.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-object.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAwC,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAgBlH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,2CA8CxF;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,2CAkK3F"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
+
import { isPlainObject } from "../lib/collections.js";
|
|
3
4
|
import { cn } from "../lib/utils.js";
|
|
4
5
|
import { Icon } from "../data/Icon.js";
|
|
5
6
|
import { Button } from "./button.js";
|
|
6
7
|
import { Combobox } from "./Combobox.js";
|
|
7
|
-
import {
|
|
8
|
+
import { fieldInputId, keyPickerOptions, inputClass, cssLength, DEFAULT_COLUMN_MIN_WIDTH, normalizeColumns } from "./json-schema-form-utils.js";
|
|
8
9
|
import { FieldsGrid } from "./json-schema-form-layout.js";
|
|
9
10
|
import { appendInstancePath } from "./json-schema-form-errors.js";
|
|
10
11
|
import { controlHeightClass, inputSizeClass, fieldInnerGapClass } from "./json-schema-form-size.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-form-object.js","sources":["../../src/components/json-schema-form-object.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiTrash } from \"../icons\";\nimport { Button } from \"./button\";\nimport { Combobox } from \"./Combobox\";\nimport type { FieldControl, JsonSchemaObject, JsonSchemaProperty, RenderContext } from \"./json-schema-form-types\";\nimport {\n cssLength,\n DEFAULT_COLUMN_MIN_WIDTH,\n fieldInputId,\n inputClass,\n isPlainObject,\n keyPickerOptions,\n normalizeColumns,\n} from \"./json-schema-form-utils\";\nimport { FieldsGrid } from \"./json-schema-form-layout\";\nimport { appendInstancePath } from \"./json-schema-form-errors\";\nimport { controlHeightClass, fieldInnerGapClass, inputSizeClass } from \"./json-schema-form-size\";\n\n// ObjectControl renders a nested structured object as a sub-form: its own\n// properties, required markers, if/then, soft errors — all via the shared\n// recursive renderer (ctx.render), so pre/post extensions apply at this depth too.\nexport function ObjectControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n const obj = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const subSchema: JsonSchemaObject = {\n type: \"object\",\n properties: field.objectProperties ?? {},\n ...(field.objectRequired ? { required: field.objectRequired } : {}),\n ...(Array.isArray(field.schema.allOf) ? { allOf: field.schema.allOf } : {}),\n ...(Array.isArray(field.schema[\"x-order\"]) ? { \"x-order\": field.schema[\"x-order\"] } : {}),\n // Every object-level layout keyword must be copied here or it works at the\n // top level and silently dies one level down — which is exactly where these\n // matter (an array item's body is a nested object).\n ...(typeof field.schema[\"x-columns\"] === \"number\" || field.schema[\"x-columns\"] === \"auto\"\n ? { \"x-columns\": field.schema[\"x-columns\"] }\n : {}),\n ...(typeof field.schema[\"x-column-min-width\"] === \"string\"\n ? { \"x-column-min-width\": field.schema[\"x-column-min-width\"] }\n : {}),\n ...(typeof field.schema[\"x-columns-max-width\"] === \"string\"\n ? { \"x-columns-max-width\": field.schema[\"x-columns-max-width\"] }\n : {}),\n ...(typeof field.schema[\"x-classes\"] === \"string\" ? { \"x-classes\": field.schema[\"x-classes\"] } : {}),\n };\n // No border/box: nested objects render as flat headed sections (see\n // ObjectSection in renderFieldRow) rather than progressively indented\n // sub-forms, so deep schemas stay readable as a single column.\n // A read-only object marks its whole subtree non-editable: recurse with\n // form-level readOnly on so child inputs are disabled (and any child the\n // schema marks readOnly still renders as a value span).\n return (\n <FieldsGrid\n layout={ctx.layout}\n size={ctx.size}\n columns={normalizeColumns(subSchema[\"x-columns\"])}\n columnMinWidth={cssLength(subSchema[\"x-column-min-width\"], DEFAULT_COLUMN_MIN_WIDTH)}\n {...(typeof subSchema[\"x-columns-max-width\"] === \"string\"\n ? { columnsMaxWidth: subSchema[\"x-columns-max-width\"] }\n : {})}\n {...(typeof subSchema[\"x-classes\"] === \"string\" ? { className: subSchema[\"x-classes\"] } : {})}\n >\n {ctx.render.renderObjectFields(subSchema, obj, (next) => field.onChange(next), {\n ...ctx,\n readOnly: ctx.readOnly || field.readOnly === true,\n depth: ctx.depth + 1,\n })}\n </FieldsGrid>\n );\n}\n\n// StringMapControl edits an object as key/value rows. Known properties (from the\n// schema) render first with derived value controls; unknown keys render as\n// editable key/value pairs. \"Add field\" appears when extra keys are allowed.\n// Values recurse through the shared pipeline, so a value that is itself an object\n// or array renders structurally and pre/post extensions apply to it.\nexport function StringMapControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n // A read-only map marks its whole subtree non-editable: no rename/remove/add\n // and value inputs disabled.\n const readOnly = ctx.readOnly || field.readOnly === true;\n const map = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const known = field.knownProperties ?? {};\n const knownKeys = Object.keys(known);\n const extraKeys = Object.keys(map).filter((k) => !(k in known));\n const childCtx: RenderContext = { ...ctx, readOnly, depth: ctx.depth + 1 };\n // What the map key IS (e.g. \"Address Role\"), from the key-constraint schema.\n const pn = field.schema.propertyNames as JsonSchemaProperty | undefined;\n const keyTitle = typeof pn?.title === \"string\" && pn.title ? pn.title : undefined;\n\n // valueSchemaForKey picks an entry's value schema: the first patternProperties\n // entry whose regex matches the key, else the `additionalProperties` schema,\n // else a bare string. Lets the value form vary by key (e.g. House vs Apartment).\n function valueSchemaForKey(key: string): JsonSchemaProperty {\n for (const { pattern, schema } of field.valuePatternSchemas ?? []) {\n let re: RegExp | undefined;\n try {\n re = new RegExp(pattern);\n } catch {\n re = undefined; // a malformed pattern simply never matches\n }\n if (re?.test(key)) return schema;\n }\n return field.valueSchema ?? { type: \"string\" };\n }\n\n // When the entry value opts into a stacked layout (`x-layout: \"stack\"`), the\n // key+value render as one full-width stacked unit instead of a key column\n // beside the value. Resolved per key, since pattern schemas may differ.\n function entryIsStacked(key: string): boolean {\n return valueSchemaForKey(key)[\"x-layout\"] === \"stack\";\n }\n\n function setEntry(key: string, next: unknown) {\n field.onChange({ ...map, [key]: next });\n }\n function renameEntry(oldKey: string, newKey: string) {\n if (newKey === oldKey) return;\n const next: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(map)) next[k === oldKey ? newKey : k] = v;\n field.onChange(next);\n }\n function removeEntry(key: string) {\n const next = { ...map };\n delete next[key];\n field.onChange(next);\n }\n function addEntry() {\n if (\"\" in map) return;\n field.onChange({ ...map, \"\": \"\" });\n }\n\n function valueControlFor(key: string, valueSchema: JsonSchemaProperty): ReactNode {\n const nodes = ctx.render.renderFieldNodes(\n {\n key,\n prop: valueSchema,\n required: false,\n value: map[key] ?? \"\",\n onChange: (next) => setEntry(key, next),\n instancePath: appendInstancePath(ctx.instancePath, key),\n },\n childCtx,\n );\n return nodes?.value ?? null;\n }\n\n // valueControlForKey resolves the per-key value schema (patternProperties /\n // additionalProperties) before rendering, so the form varies by key.\n function valueControlForKey(key: string): ReactNode {\n return valueControlFor(key, valueSchemaForKey(key));\n }\n\n return (\n <div className={cn(\"flex flex-col rounded-md border border-input p-2\", fieldInnerGapClass[childCtx.size])}>\n {knownKeys.map((key) => (\n <div key={`known-${key}`} className=\"grid grid-cols-[10rem_1fr] items-center gap-2\">\n <label\n htmlFor={fieldInputId(appendInstancePath(ctx.instancePath, key), childCtx.idPrefix)}\n className=\"truncate text-xs text-muted-foreground\"\n title={key}\n >\n {key}\n </label>\n <div className=\"min-w-0\">{valueControlFor(key, known[key] ?? { type: \"string\" })}</div>\n </div>\n ))}\n {extraKeys.map((key) => {\n const keyControl = field.keyOptions ? (\n <Combobox\n options={keyPickerOptions(field.keyOptions, extraKeys, key)}\n value={key}\n disabled={readOnly}\n size={childCtx.size}\n allowCustomValue={false}\n onChange={(next) => renameEntry(key, next)}\n placeholder=\"Select…\"\n />\n ) : (\n <input\n type=\"text\"\n aria-label=\"Field name\"\n className={cn(inputClass(childCtx.size), \"font-mono\")}\n value={key}\n disabled={readOnly}\n onChange={(e) => renameEntry(key, e.target.value)}\n />\n );\n const removeButton = !readOnly ? (\n <button\n type=\"button\"\n aria-label={`Remove ${key}`}\n className={cn(\n \"inline-flex aspect-square shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground\",\n controlHeightClass[childCtx.size],\n )}\n onClick={() => removeEntry(key)}\n >\n <Icon icon={UiTrash} className=\"text-sm\" />\n </button>\n ) : null;\n // When the value is stacked (`x-layout: \"stack\"` on the entry schema),\n // the key joins the stack: it sits full-width above its value as one\n // unit, rather than cramped in a fixed key column beside it. The key\n // picker is labelled from `propertyNames.title` so a constrained key\n // (e.g. an AsCode role) says what it is.\n if (entryIsStacked(key)) {\n return (\n <div key={`extra-${key}`} className=\"space-y-1.5 rounded-md border border-input p-2\">\n {keyTitle && <span className=\"block text-xs font-medium text-muted-foreground\">{keyTitle}</span>}\n <div className=\"flex items-center gap-2\">\n <div className=\"min-w-0 flex-1\">{keyControl}</div>\n {removeButton}\n </div>\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n </div>\n );\n }\n return (\n <div key={`extra-${key}`} className=\"grid grid-cols-[10rem_1fr_auto] items-center gap-2\">\n {keyControl}\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n {removeButton}\n </div>\n );\n })}\n {!readOnly && field.allowExtraKeys !== false && (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={addEntry}\n className={cn(\"gap-1.5\", inputSizeClass[childCtx.size])}\n >\n <Icon icon={UiAdd} className=\"text-sm\" />\n Add field\n </Button>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-schema-form-object.js","sources":["../../src/components/json-schema-form-object.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { isPlainObject } from \"../lib/collections\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiTrash } from \"../icons\";\nimport { Button } from \"./button\";\nimport { Combobox } from \"./Combobox\";\nimport type { FieldControl, JsonSchemaObject, JsonSchemaProperty, RenderContext } from \"./json-schema-form-types\";\nimport {\n cssLength,\n DEFAULT_COLUMN_MIN_WIDTH,\n fieldInputId,\n inputClass,\n keyPickerOptions,\n normalizeColumns,\n} from \"./json-schema-form-utils\";\nimport { FieldsGrid } from \"./json-schema-form-layout\";\nimport { appendInstancePath } from \"./json-schema-form-errors\";\nimport { controlHeightClass, fieldInnerGapClass, inputSizeClass } from \"./json-schema-form-size\";\n\n// ObjectControl renders a nested structured object as a sub-form: its own\n// properties, required markers, if/then, soft errors — all via the shared\n// recursive renderer (ctx.render), so pre/post extensions apply at this depth too.\nexport function ObjectControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n const obj = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const subSchema: JsonSchemaObject = {\n type: \"object\",\n properties: field.objectProperties ?? {},\n ...(field.objectRequired ? { required: field.objectRequired } : {}),\n ...(Array.isArray(field.schema.allOf) ? { allOf: field.schema.allOf } : {}),\n ...(Array.isArray(field.schema[\"x-order\"]) ? { \"x-order\": field.schema[\"x-order\"] } : {}),\n // Every object-level layout keyword must be copied here or it works at the\n // top level and silently dies one level down — which is exactly where these\n // matter (an array item's body is a nested object).\n ...(typeof field.schema[\"x-columns\"] === \"number\" || field.schema[\"x-columns\"] === \"auto\"\n ? { \"x-columns\": field.schema[\"x-columns\"] }\n : {}),\n ...(typeof field.schema[\"x-column-min-width\"] === \"string\"\n ? { \"x-column-min-width\": field.schema[\"x-column-min-width\"] }\n : {}),\n ...(typeof field.schema[\"x-columns-max-width\"] === \"string\"\n ? { \"x-columns-max-width\": field.schema[\"x-columns-max-width\"] }\n : {}),\n ...(typeof field.schema[\"x-classes\"] === \"string\" ? { \"x-classes\": field.schema[\"x-classes\"] } : {}),\n };\n // No border/box: nested objects render as flat headed sections (see\n // ObjectSection in renderFieldRow) rather than progressively indented\n // sub-forms, so deep schemas stay readable as a single column.\n // A read-only object marks its whole subtree non-editable: recurse with\n // form-level readOnly on so child inputs are disabled (and any child the\n // schema marks readOnly still renders as a value span).\n return (\n <FieldsGrid\n layout={ctx.layout}\n size={ctx.size}\n columns={normalizeColumns(subSchema[\"x-columns\"])}\n columnMinWidth={cssLength(subSchema[\"x-column-min-width\"], DEFAULT_COLUMN_MIN_WIDTH)}\n {...(typeof subSchema[\"x-columns-max-width\"] === \"string\"\n ? { columnsMaxWidth: subSchema[\"x-columns-max-width\"] }\n : {})}\n {...(typeof subSchema[\"x-classes\"] === \"string\" ? { className: subSchema[\"x-classes\"] } : {})}\n >\n {ctx.render.renderObjectFields(subSchema, obj, (next) => field.onChange(next), {\n ...ctx,\n readOnly: ctx.readOnly || field.readOnly === true,\n depth: ctx.depth + 1,\n })}\n </FieldsGrid>\n );\n}\n\n// StringMapControl edits an object as key/value rows. Known properties (from the\n// schema) render first with derived value controls; unknown keys render as\n// editable key/value pairs. \"Add field\" appears when extra keys are allowed.\n// Values recurse through the shared pipeline, so a value that is itself an object\n// or array renders structurally and pre/post extensions apply to it.\nexport function StringMapControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n // A read-only map marks its whole subtree non-editable: no rename/remove/add\n // and value inputs disabled.\n const readOnly = ctx.readOnly || field.readOnly === true;\n const map = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const known = field.knownProperties ?? {};\n const knownKeys = Object.keys(known);\n const extraKeys = Object.keys(map).filter((k) => !(k in known));\n const childCtx: RenderContext = { ...ctx, readOnly, depth: ctx.depth + 1 };\n // What the map key IS (e.g. \"Address Role\"), from the key-constraint schema.\n const pn = field.schema.propertyNames as JsonSchemaProperty | undefined;\n const keyTitle = typeof pn?.title === \"string\" && pn.title ? pn.title : undefined;\n\n // valueSchemaForKey picks an entry's value schema: the first patternProperties\n // entry whose regex matches the key, else the `additionalProperties` schema,\n // else a bare string. Lets the value form vary by key (e.g. House vs Apartment).\n function valueSchemaForKey(key: string): JsonSchemaProperty {\n for (const { pattern, schema } of field.valuePatternSchemas ?? []) {\n let re: RegExp | undefined;\n try {\n re = new RegExp(pattern);\n } catch {\n re = undefined; // a malformed pattern simply never matches\n }\n if (re?.test(key)) return schema;\n }\n return field.valueSchema ?? { type: \"string\" };\n }\n\n // When the entry value opts into a stacked layout (`x-layout: \"stack\"`), the\n // key+value render as one full-width stacked unit instead of a key column\n // beside the value. Resolved per key, since pattern schemas may differ.\n function entryIsStacked(key: string): boolean {\n return valueSchemaForKey(key)[\"x-layout\"] === \"stack\";\n }\n\n function setEntry(key: string, next: unknown) {\n field.onChange({ ...map, [key]: next });\n }\n function renameEntry(oldKey: string, newKey: string) {\n if (newKey === oldKey) return;\n const next: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(map)) next[k === oldKey ? newKey : k] = v;\n field.onChange(next);\n }\n function removeEntry(key: string) {\n const next = { ...map };\n delete next[key];\n field.onChange(next);\n }\n function addEntry() {\n if (\"\" in map) return;\n field.onChange({ ...map, \"\": \"\" });\n }\n\n function valueControlFor(key: string, valueSchema: JsonSchemaProperty): ReactNode {\n const nodes = ctx.render.renderFieldNodes(\n {\n key,\n prop: valueSchema,\n required: false,\n value: map[key] ?? \"\",\n onChange: (next) => setEntry(key, next),\n instancePath: appendInstancePath(ctx.instancePath, key),\n },\n childCtx,\n );\n return nodes?.value ?? null;\n }\n\n // valueControlForKey resolves the per-key value schema (patternProperties /\n // additionalProperties) before rendering, so the form varies by key.\n function valueControlForKey(key: string): ReactNode {\n return valueControlFor(key, valueSchemaForKey(key));\n }\n\n return (\n <div className={cn(\"flex flex-col rounded-md border border-input p-2\", fieldInnerGapClass[childCtx.size])}>\n {knownKeys.map((key) => (\n <div key={`known-${key}`} className=\"grid grid-cols-[10rem_1fr] items-center gap-2\">\n <label\n htmlFor={fieldInputId(appendInstancePath(ctx.instancePath, key), childCtx.idPrefix)}\n className=\"truncate text-xs text-muted-foreground\"\n title={key}\n >\n {key}\n </label>\n <div className=\"min-w-0\">{valueControlFor(key, known[key] ?? { type: \"string\" })}</div>\n </div>\n ))}\n {extraKeys.map((key) => {\n const keyControl = field.keyOptions ? (\n <Combobox\n options={keyPickerOptions(field.keyOptions, extraKeys, key)}\n value={key}\n disabled={readOnly}\n size={childCtx.size}\n allowCustomValue={false}\n onChange={(next) => renameEntry(key, next)}\n placeholder=\"Select…\"\n />\n ) : (\n <input\n type=\"text\"\n aria-label=\"Field name\"\n className={cn(inputClass(childCtx.size), \"font-mono\")}\n value={key}\n disabled={readOnly}\n onChange={(e) => renameEntry(key, e.target.value)}\n />\n );\n const removeButton = !readOnly ? (\n <button\n type=\"button\"\n aria-label={`Remove ${key}`}\n className={cn(\n \"inline-flex aspect-square shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground\",\n controlHeightClass[childCtx.size],\n )}\n onClick={() => removeEntry(key)}\n >\n <Icon icon={UiTrash} className=\"text-sm\" />\n </button>\n ) : null;\n // When the value is stacked (`x-layout: \"stack\"` on the entry schema),\n // the key joins the stack: it sits full-width above its value as one\n // unit, rather than cramped in a fixed key column beside it. The key\n // picker is labelled from `propertyNames.title` so a constrained key\n // (e.g. an AsCode role) says what it is.\n if (entryIsStacked(key)) {\n return (\n <div key={`extra-${key}`} className=\"space-y-1.5 rounded-md border border-input p-2\">\n {keyTitle && <span className=\"block text-xs font-medium text-muted-foreground\">{keyTitle}</span>}\n <div className=\"flex items-center gap-2\">\n <div className=\"min-w-0 flex-1\">{keyControl}</div>\n {removeButton}\n </div>\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n </div>\n );\n }\n return (\n <div key={`extra-${key}`} className=\"grid grid-cols-[10rem_1fr_auto] items-center gap-2\">\n {keyControl}\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n {removeButton}\n </div>\n );\n })}\n {!readOnly && field.allowExtraKeys !== false && (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={addEntry}\n className={cn(\"gap-1.5\", inputSizeClass[childCtx.size])}\n >\n <Icon icon={UiAdd} className=\"text-sm\" />\n Add field\n </Button>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -213,7 +213,10 @@ function rendersFullWidth(prop) {
|
|
|
213
213
|
if (jsonSchemaFormResolve.schemaRendersAsObject(prop) && (prop.properties !== void 0 || Object.keys(fixedProperties).length > 0)) {
|
|
214
214
|
return true;
|
|
215
215
|
}
|
|
216
|
-
|
|
216
|
+
if (jsonSchemaFormUtils.hasObjectItemProperties(prop.items) && prop["x-array-display"] !== "stacked") {
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
return prop["x-layout"] === "table";
|
|
217
220
|
}
|
|
218
221
|
const renderApi = {
|
|
219
222
|
renderFieldNodes,
|