@flanksource/clicky-ui 0.3.34 → 0.3.36
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/README.md +4 -0
- package/dist/ai.cjs +4 -0
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +4 -0
- package/dist/ai.js.map +1 -1
- package/dist/comments/CommentCard.d.ts +1 -1
- package/dist/comments/CommentProvider.d.ts +1 -1
- package/dist/comments/CommentThread.d.ts +1 -1
- package/dist/comments/CommentThreadList.d.ts +1 -1
- package/dist/comments/MentionTextarea.d.ts +1 -1
- package/dist/comments/comment-context.d.ts +4 -4
- package/dist/comments/comment-fixtures.d.ts +1 -1
- package/dist/comments/comment-types.d.ts +1 -1
- package/dist/components/AccordionList.d.ts +1 -1
- package/dist/components/ComboboxControl.d.ts +1 -1
- package/dist/components/ComboboxMenu.d.ts +2 -2
- package/dist/components/ComboboxTags.cjs +41 -11
- package/dist/components/ComboboxTags.cjs.map +1 -1
- package/dist/components/ComboboxTags.d.ts +6 -0
- package/dist/components/ComboboxTags.d.ts.map +1 -1
- package/dist/components/ComboboxTags.js +41 -11
- package/dist/components/ComboboxTags.js.map +1 -1
- package/dist/components/DateField.d.ts +3 -3
- package/dist/components/DatePicker.d.ts +3 -3
- package/dist/components/DateTimePicker.d.ts +3 -3
- package/dist/components/ErrorWrapper.d.ts +2 -2
- package/dist/components/Field.d.ts +1 -1
- package/dist/components/FilterBar.d.ts +1 -1
- package/dist/components/FormLookupProvider.d.ts +1 -1
- package/dist/components/FormatOptionsDropdown.d.ts +1 -1
- package/dist/components/IconButton.d.ts +3 -3
- package/dist/components/InputField.d.ts +2 -2
- package/dist/components/ItemActions.d.ts +1 -1
- package/dist/components/JsonSchemaForm.cjs +17 -36
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +17 -36
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/ListMenu.d.ts +1 -1
- package/dist/components/MultiSelect.d.ts +1 -1
- package/dist/components/SearchInput.d.ts +1 -1
- package/dist/components/SegmentedControl.d.ts +1 -1
- package/dist/components/SplitButton.d.ts +1 -1
- package/dist/components/Switch.d.ts +1 -1
- package/dist/components/TreePickerField.cjs +11 -2
- package/dist/components/TreePickerField.cjs.map +1 -1
- package/dist/components/TreePickerField.d.ts +13 -4
- package/dist/components/TreePickerField.d.ts.map +1 -1
- package/dist/components/TreePickerField.js +11 -2
- package/dist/components/TreePickerField.js.map +1 -1
- package/dist/components/UnitStepControls.d.ts +1 -1
- package/dist/components/button.d.ts +3 -3
- package/dist/components/combobox-types.d.ts +1 -1
- package/dist/components/density-switcher.d.ts +1 -1
- package/dist/components/filter-bar-context.d.ts +1 -1
- package/dist/components/filter-bar-field-utils.d.ts +2 -2
- package/dist/components/form-lookup-context.d.ts +1 -1
- package/dist/components/icon-menu-picker.d.ts +1 -1
- package/dist/components/json-schema-form-accordion-array.cjs +44 -21
- 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 +47 -24
- package/dist/components/json-schema-form-accordion-array.js.map +1 -1
- package/dist/components/json-schema-form-array.cjs +53 -30
- 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 +54 -31
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-cards-array.cjs +32 -22
- 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 +33 -23
- package/dist/components/json-schema-form-cards-array.js.map +1 -1
- package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +44 -0
- package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts.map +1 -0
- package/dist/components/json-schema-form-discriminator.d.ts +1 -1
- package/dist/components/json-schema-form-errors.cjs +5 -1
- package/dist/components/json-schema-form-errors.cjs.map +1 -1
- package/dist/components/json-schema-form-errors.d.ts +2 -1
- package/dist/components/json-schema-form-errors.d.ts.map +1 -1
- package/dist/components/json-schema-form-errors.js +6 -2
- package/dist/components/json-schema-form-errors.js.map +1 -1
- package/dist/components/json-schema-form-extensions.d.ts +1 -1
- package/dist/components/json-schema-form-filter-input.cjs +50 -0
- package/dist/components/json-schema-form-filter-input.cjs.map +1 -0
- package/dist/components/json-schema-form-filter-input.d.ts +5 -0
- package/dist/components/json-schema-form-filter-input.d.ts.map +1 -0
- package/dist/components/json-schema-form-filter-input.js +50 -0
- package/dist/components/json-schema-form-filter-input.js.map +1 -0
- package/dist/components/json-schema-form-filter.cjs +49 -0
- package/dist/components/json-schema-form-filter.cjs.map +1 -0
- package/dist/components/json-schema-form-filter.d.ts +8 -0
- package/dist/components/json-schema-form-filter.d.ts.map +1 -0
- package/dist/components/json-schema-form-filter.js +49 -0
- package/dist/components/json-schema-form-filter.js.map +1 -0
- package/dist/components/json-schema-form-layout.cjs +84 -17
- package/dist/components/json-schema-form-layout.cjs.map +1 -1
- package/dist/components/json-schema-form-layout.d.ts +1 -1
- package/dist/components/json-schema-form-layout.d.ts.map +1 -1
- package/dist/components/json-schema-form-layout.js +84 -17
- package/dist/components/json-schema-form-layout.js.map +1 -1
- package/dist/components/json-schema-form-list-array.cjs +16 -5
- package/dist/components/json-schema-form-list-array.cjs.map +1 -1
- package/dist/components/json-schema-form-list-array.d.ts +2 -1
- package/dist/components/json-schema-form-list-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-list-array.js +16 -5
- package/dist/components/json-schema-form-list-array.js.map +1 -1
- package/dist/components/json-schema-form-object.cjs +239 -85
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts +2 -2
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +241 -87
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-preferences.cjs +1 -1
- package/dist/components/json-schema-form-preferences.cjs.map +1 -1
- package/dist/components/json-schema-form-preferences.d.ts +1 -1
- package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
- package/dist/components/json-schema-form-preferences.js +1 -1
- package/dist/components/json-schema-form-preferences.js.map +1 -1
- package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +14 -0
- package/dist/components/json-schema-form-properties-errors.fixtures.d.ts.map +1 -0
- package/dist/components/json-schema-form-properties-size.cjs +19 -0
- package/dist/components/json-schema-form-properties-size.cjs.map +1 -0
- package/dist/components/json-schema-form-properties-size.d.ts +4 -0
- package/dist/components/json-schema-form-properties-size.d.ts.map +1 -0
- package/dist/components/json-schema-form-properties-size.js +19 -0
- package/dist/components/json-schema-form-properties-size.js.map +1 -0
- package/dist/components/json-schema-form-properties.cjs +305 -0
- package/dist/components/json-schema-form-properties.cjs.map +1 -0
- package/dist/components/json-schema-form-properties.d.ts +20 -0
- package/dist/components/json-schema-form-properties.d.ts.map +1 -0
- package/dist/components/json-schema-form-properties.fixtures.d.ts +157 -0
- package/dist/components/json-schema-form-properties.fixtures.d.ts.map +1 -0
- package/dist/components/json-schema-form-properties.js +305 -0
- package/dist/components/json-schema-form-properties.js.map +1 -0
- package/dist/components/json-schema-form-property-actions-context.cjs +6 -0
- package/dist/components/json-schema-form-property-actions-context.cjs.map +1 -0
- package/dist/components/json-schema-form-property-actions-context.d.ts +2 -0
- package/dist/components/json-schema-form-property-actions-context.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-actions-context.js +6 -0
- package/dist/components/json-schema-form-property-actions-context.js.map +1 -0
- package/dist/components/json-schema-form-property-collection.cjs +31 -0
- package/dist/components/json-schema-form-property-collection.cjs.map +1 -0
- package/dist/components/json-schema-form-property-collection.d.ts +6 -0
- package/dist/components/json-schema-form-property-collection.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-collection.js +31 -0
- package/dist/components/json-schema-form-property-collection.js.map +1 -0
- package/dist/components/json-schema-form-property-draft.cjs +45 -0
- package/dist/components/json-schema-form-property-draft.cjs.map +1 -0
- package/dist/components/json-schema-form-property-draft.d.ts +8 -0
- package/dist/components/json-schema-form-property-draft.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-draft.js +45 -0
- package/dist/components/json-schema-form-property-draft.js.map +1 -0
- package/dist/components/json-schema-form-property-preview.cjs +68 -0
- package/dist/components/json-schema-form-property-preview.cjs.map +1 -0
- package/dist/components/json-schema-form-property-preview.d.ts +7 -0
- package/dist/components/json-schema-form-property-preview.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-preview.js +68 -0
- package/dist/components/json-schema-form-property-preview.js.map +1 -0
- package/dist/components/json-schema-form-property-selection.cjs +89 -0
- package/dist/components/json-schema-form-property-selection.cjs.map +1 -0
- package/dist/components/json-schema-form-property-selection.d.ts +6 -0
- package/dist/components/json-schema-form-property-selection.d.ts.map +1 -0
- package/dist/components/json-schema-form-property-selection.js +89 -0
- package/dist/components/json-schema-form-property-selection.js.map +1 -0
- package/dist/components/json-schema-form-render.cjs +41 -4
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +42 -5
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +2 -0
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +2 -0
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-runtime-types.d.ts +222 -0
- package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -0
- package/dist/components/json-schema-form-table-array.cjs +82 -51
- 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 +84 -53
- package/dist/components/json-schema-form-table-array.js.map +1 -1
- package/dist/components/json-schema-form-template-menu.d.ts +1 -1
- package/dist/components/json-schema-form-template.d.ts +1 -1
- package/dist/components/json-schema-form-types.d.ts +7 -179
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +10 -9
- package/dist/components/json-schema-form-utils.cjs.map +1 -1
- package/dist/components/json-schema-form-utils.d.ts +11 -1
- package/dist/components/json-schema-form-utils.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.js +10 -9
- package/dist/components/json-schema-form-utils.js.map +1 -1
- package/dist/components/loading.d.ts +4 -4
- package/dist/components/mdx-editor-callout.d.ts +1 -1
- package/dist/components/mdx-editor-options.d.ts +1 -1
- package/dist/components/select.d.ts +3 -3
- package/dist/components/theme-switcher.d.ts +1 -1
- package/dist/components/use-list-menu-selection.d.ts +1 -1
- package/dist/components/useComboboxLayout.d.ts +1 -1
- package/dist/components/workload-picker-utils.d.ts +1 -1
- package/dist/data/Avatar.d.ts +1 -1
- package/dist/data/AvatarBadge.d.ts +1 -1
- package/dist/data/Badge.d.ts +1 -1
- package/dist/data/Callout.d.ts +1 -1
- package/dist/data/DataTable.cjs +575 -435
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +21 -13
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.grouping.d.ts +1 -1
- package/dist/data/DataTable.js +575 -435
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/ExecutionTree.d.ts +1 -1
- package/dist/data/FilterPill.d.ts +1 -1
- package/dist/data/FixtureEditor/RawFenceEditor.d.ts +1 -1
- package/dist/data/FixtureEditor/types.d.ts +1 -1
- package/dist/data/Gauge.d.ts +1 -1
- package/dist/data/GaugeHoverCard.d.ts +1 -1
- package/dist/data/Icon.d.ts +1 -1
- package/dist/data/KeyValueList.d.ts +1 -1
- package/dist/data/MarkdownEditor.d.ts +1 -1
- package/dist/data/MatrixTable.d.ts +1 -1
- package/dist/data/ObjectGraph.d.ts +1 -1
- package/dist/data/ProgressBars.d.ts +1 -1
- package/dist/data/Properties.cjs +86 -35
- package/dist/data/Properties.cjs.map +1 -1
- package/dist/data/Properties.d.ts +2 -2
- package/dist/data/Properties.d.ts.map +1 -1
- package/dist/data/Properties.js +87 -36
- package/dist/data/Properties.js.map +1 -1
- package/dist/data/RadialGauge.d.ts +1 -1
- package/dist/data/SchemaViewer.d.ts +1 -1
- package/dist/data/SortableHeader.d.ts +1 -1
- package/dist/data/StatStrip.d.ts +1 -1
- package/dist/data/StatusBreakdown.d.ts +1 -1
- package/dist/data/TabButton.d.ts +1 -1
- package/dist/data/TaskHeaderExtras.cjs +35 -0
- package/dist/data/TaskHeaderExtras.cjs.map +1 -0
- package/dist/data/TaskHeaderExtras.d.ts +27 -0
- package/dist/data/TaskHeaderExtras.d.ts.map +1 -0
- package/dist/data/TaskHeaderExtras.js +35 -0
- package/dist/data/TaskHeaderExtras.js.map +1 -0
- package/dist/data/TaskManager.cjs +27 -23
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts +13 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +27 -23
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +17 -34
- package/dist/data/TaskManagerButton.cjs.map +1 -1
- package/dist/data/TaskManagerButton.d.ts.map +1 -1
- package/dist/data/TaskManagerButton.js +18 -35
- package/dist/data/TaskManagerButton.js.map +1 -1
- package/dist/data/TaskProcessDetails.cjs +7 -25
- package/dist/data/TaskProcessDetails.cjs.map +1 -1
- package/dist/data/TaskProcessDetails.d.ts +2 -1
- package/dist/data/TaskProcessDetails.d.ts.map +1 -1
- package/dist/data/TaskProcessDetails.js +7 -25
- package/dist/data/TaskProcessDetails.js.map +1 -1
- package/dist/data/TaskProcessMetadata.cjs +50 -0
- package/dist/data/TaskProcessMetadata.cjs.map +1 -0
- package/dist/data/TaskProcessMetadata.d.ts +20 -0
- package/dist/data/TaskProcessMetadata.d.ts.map +1 -0
- package/dist/data/TaskProcessMetadata.js +50 -0
- package/dist/data/TaskProcessMetadata.js.map +1 -0
- package/dist/data/TaskProgress.cjs +41 -41
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +15 -1
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +41 -41
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskResourceReadings.cjs +42 -0
- package/dist/data/TaskResourceReadings.cjs.map +1 -0
- package/dist/data/TaskResourceReadings.d.ts +6 -0
- package/dist/data/TaskResourceReadings.d.ts.map +1 -0
- package/dist/data/TaskResourceReadings.js +42 -0
- package/dist/data/TaskResourceReadings.js.map +1 -0
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +36 -1
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/TaskStreamTabs.cjs +78 -0
- package/dist/data/TaskStreamTabs.cjs.map +1 -0
- package/dist/data/TaskStreamTabs.d.ts +35 -0
- package/dist/data/TaskStreamTabs.d.ts.map +1 -0
- package/dist/data/TaskStreamTabs.js +78 -0
- package/dist/data/TaskStreamTabs.js.map +1 -0
- package/dist/data/Timeline.d.ts +1 -1
- package/dist/data/Tree.d.ts +1 -1
- package/dist/data/TreeGroupHeader.d.ts +1 -1
- package/dist/data/TreeNode.d.ts +1 -1
- package/dist/data/Version.d.ts +3 -3
- package/dist/data/ai/ChatWindow.cjs +22 -12
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +22 -12
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
- package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.types.d.ts +1 -1
- package/dist/data/ai/ChatWindowManager.cjs +2 -0
- package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
- package/dist/data/ai/ChatWindowManager.d.ts +1 -1
- package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
- package/dist/data/ai/ChatWindowManager.js +2 -0
- package/dist/data/ai/ChatWindowManager.js.map +1 -1
- package/dist/data/ai/PolicyTree.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +4 -0
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/SessionChatComposer.d.ts +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.cjs +9 -0
- package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.approvals-model.d.ts +17 -0
- package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.approvals-model.js +9 -0
- package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -0
- package/dist/data/ai/SessionInspector.approvals.cjs +143 -0
- package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.approvals.d.ts +13 -0
- package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.approvals.js +143 -0
- package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +21 -8
- package/dist/data/ai/SessionInspector.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.d.ts +6 -2
- package/dist/data/ai/SessionInspector.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
- package/dist/data/ai/SessionInspector.js +21 -8
- package/dist/data/ai/SessionInspector.js.map +1 -1
- package/dist/data/ai/SessionInspector.panel-parts.cjs +34 -0
- package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panel-parts.d.ts +19 -0
- package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panel-parts.js +34 -0
- package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
- package/dist/data/ai/SessionInspector.panel-values.cjs +18 -0
- package/dist/data/ai/SessionInspector.panel-values.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panel-values.d.ts +13 -0
- package/dist/data/ai/SessionInspector.panel-values.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panel-values.js +18 -0
- package/dist/data/ai/SessionInspector.panel-values.js.map +1 -0
- package/dist/data/ai/SessionInspector.panels.cjs +41 -99
- package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
- package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.panels.js +13 -71
- package/dist/data/ai/SessionInspector.panels.js.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
- package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/chat-window-context.cjs +1 -0
- package/dist/data/ai/chat-window-context.cjs.map +1 -1
- package/dist/data/ai/chat-window-context.d.ts +13 -5
- package/dist/data/ai/chat-window-context.d.ts.map +1 -1
- package/dist/data/ai/chat-window-context.js +1 -0
- package/dist/data/ai/chat-window-context.js.map +1 -1
- package/dist/data/ai/index.d.ts +3 -1
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/use-session-scroll.d.ts +1 -1
- package/dist/data/cache-browser/adapter.d.ts +1 -1
- package/dist/data/cells/CellFilterActions.d.ts +1 -1
- package/dist/data/cells/EntityCell.d.ts +1 -1
- package/dist/data/cells/tag-utils.d.ts +1 -1
- package/dist/data/chat/Chat.cjs +42 -46
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +16 -5
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +43 -47
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts +1 -1
- package/dist/data/chat/PromptInput.cjs +13 -0
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.d.ts +8 -2
- package/dist/data/chat/PromptInput.d.ts.map +1 -1
- package/dist/data/chat/PromptInput.js +14 -1
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
- package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
- package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
- package/dist/data/chat/tool-render/adapter.d.ts +1 -1
- package/dist/data/chat/tool-render/context.d.ts +1 -1
- package/dist/data/chat/tool-render/defaults.d.ts +1 -1
- package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
- package/dist/data/chat/tool-render/summary.d.ts +1 -1
- package/dist/data/chat/types.d.ts +1 -1
- package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
- package/dist/data/data-table-server-filters.d.ts +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
- package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
- package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
- package/dist/data/git/GitChangeList.d.ts +1 -1
- package/dist/data/icon-fallback.d.ts +1 -1
- package/dist/data/properties-context.cjs +6 -0
- package/dist/data/properties-context.cjs.map +1 -0
- package/dist/data/properties-context.d.ts +7 -0
- package/dist/data/properties-context.d.ts.map +1 -0
- package/dist/data/properties-context.js +6 -0
- package/dist/data/properties-context.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
- package/dist/data/runtime/RuntimeBar.cjs +7 -3
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.js +7 -3
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/task-copy.cjs +1 -1
- package/dist/data/task-copy.cjs.map +1 -1
- package/dist/data/task-copy.js +1 -1
- package/dist/data/task-copy.js.map +1 -1
- package/dist/data/task-metadata.cjs +36 -0
- package/dist/data/task-metadata.cjs.map +1 -0
- package/dist/data/task-metadata.d.ts +39 -0
- package/dist/data/task-metadata.d.ts.map +1 -0
- package/dist/data/task-metadata.js +36 -0
- package/dist/data/task-metadata.js.map +1 -0
- package/dist/data/task-resource-summary.cjs +30 -0
- package/dist/data/task-resource-summary.cjs.map +1 -0
- package/dist/data/task-resource-summary.d.ts +15 -0
- package/dist/data/task-resource-summary.d.ts.map +1 -0
- package/dist/data/task-resource-summary.js +30 -0
- package/dist/data/task-resource-summary.js.map +1 -0
- package/dist/data/task-status.cjs +8 -2
- package/dist/data/task-status.cjs.map +1 -1
- package/dist/data/task-status.d.ts +3 -0
- package/dist/data/task-status.d.ts.map +1 -1
- package/dist/data/task-status.js +8 -2
- package/dist/data/task-status.js.map +1 -1
- package/dist/data/task-streams.cjs +39 -0
- package/dist/data/task-streams.cjs.map +1 -0
- package/dist/data/task-streams.d.ts +60 -0
- package/dist/data/task-streams.d.ts.map +1 -0
- package/dist/data/task-streams.js +39 -0
- package/dist/data/task-streams.js.map +1 -0
- package/dist/data/task-work-progress.cjs +24 -0
- package/dist/data/task-work-progress.cjs.map +1 -0
- package/dist/data/task-work-progress.d.ts +21 -0
- package/dist/data/task-work-progress.d.ts.map +1 -0
- package/dist/data/task-work-progress.js +24 -0
- package/dist/data/task-work-progress.js.map +1 -0
- package/dist/data/test-runner/TestRunner.d.ts +1 -1
- package/dist/data/test-runner/adapter.d.ts +1 -1
- package/dist/data/test-runner/context.d.ts +1 -1
- package/dist/data/use-data-table-virtual.cjs +73 -0
- package/dist/data/use-data-table-virtual.cjs.map +1 -0
- package/dist/data/use-data-table-virtual.d.ts +40 -0
- package/dist/data/use-data-table-virtual.d.ts.map +1 -0
- package/dist/data/use-data-table-virtual.js +73 -0
- package/dist/data/use-data-table-virtual.js.map +1 -0
- package/dist/data/verification/VerificationResults.d.ts +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +14 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +6 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +14 -0
- package/dist/data.js.map +1 -1
- package/dist/expressions/lang/attributes.cjs +56 -0
- package/dist/expressions/lang/attributes.cjs.map +1 -0
- package/dist/expressions/lang/attributes.d.ts +22 -0
- package/dist/expressions/lang/attributes.d.ts.map +1 -0
- package/dist/expressions/lang/attributes.js +56 -0
- package/dist/expressions/lang/attributes.js.map +1 -0
- package/dist/expressions/lang/completion.cjs +164 -0
- package/dist/expressions/lang/completion.cjs.map +1 -0
- package/dist/expressions/lang/completion.d.ts +29 -0
- package/dist/expressions/lang/completion.d.ts.map +1 -0
- package/dist/expressions/lang/completion.js +164 -0
- package/dist/expressions/lang/completion.js.map +1 -0
- package/dist/expressions/lang/environment.cjs +115 -0
- package/dist/expressions/lang/environment.cjs.map +1 -0
- package/dist/expressions/lang/environment.d.ts +54 -0
- package/dist/expressions/lang/environment.d.ts.map +1 -0
- package/dist/expressions/lang/environment.js +115 -0
- package/dist/expressions/lang/environment.js.map +1 -0
- package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
- package/dist/expressions/lang/generated/index.cjs +18 -0
- package/dist/expressions/lang/generated/index.cjs.map +1 -0
- package/dist/expressions/lang/generated/index.d.ts +9 -0
- package/dist/expressions/lang/generated/index.d.ts.map +1 -0
- package/dist/expressions/lang/generated/index.js +18 -0
- package/dist/expressions/lang/generated/index.js.map +1 -0
- package/dist/expressions/lang/generated/languages.json.cjs +18 -0
- package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
- package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
- package/dist/expressions/lang/generated/languages.json.js +18 -0
- package/dist/expressions/lang/generated/languages.json.js.map +1 -0
- package/dist/expressions/lang/generated/spec.json.cjs +12 -0
- package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
- package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
- package/dist/expressions/lang/generated/spec.json.js +12 -0
- package/dist/expressions/lang/generated/spec.json.js.map +1 -0
- package/dist/expressions/lang/hover.cjs +106 -0
- package/dist/expressions/lang/hover.cjs.map +1 -0
- package/dist/expressions/lang/hover.d.ts +54 -0
- package/dist/expressions/lang/hover.d.ts.map +1 -0
- package/dist/expressions/lang/hover.js +106 -0
- package/dist/expressions/lang/hover.js.map +1 -0
- package/dist/expressions/lang/index.cjs +87 -0
- package/dist/expressions/lang/index.cjs.map +1 -0
- package/dist/expressions/lang/index.d.ts +65 -0
- package/dist/expressions/lang/index.d.ts.map +1 -0
- package/dist/expressions/lang/index.js +90 -0
- package/dist/expressions/lang/index.js.map +1 -0
- package/dist/expressions/lang/merge.cjs +52 -0
- package/dist/expressions/lang/merge.cjs.map +1 -0
- package/dist/expressions/lang/merge.d.ts +12 -0
- package/dist/expressions/lang/merge.d.ts.map +1 -0
- package/dist/expressions/lang/merge.js +52 -0
- package/dist/expressions/lang/merge.js.map +1 -0
- package/dist/expressions/lang/prefix.cjs +91 -0
- package/dist/expressions/lang/prefix.cjs.map +1 -0
- package/dist/expressions/lang/prefix.d.ts +36 -0
- package/dist/expressions/lang/prefix.d.ts.map +1 -0
- package/dist/expressions/lang/prefix.js +91 -0
- package/dist/expressions/lang/prefix.js.map +1 -0
- package/dist/expressions/lang/spec.d.ts +13 -0
- package/dist/expressions/lang/spec.d.ts.map +1 -0
- package/dist/expressions/lang/theme.cjs +97 -0
- package/dist/expressions/lang/theme.cjs.map +1 -0
- package/dist/expressions/lang/theme.d.ts +6 -0
- package/dist/expressions/lang/theme.d.ts.map +1 -0
- package/dist/expressions/lang/theme.js +97 -0
- package/dist/expressions/lang/theme.js.map +1 -0
- package/dist/expressions/lang/types.d.ts +81 -0
- package/dist/expressions/lang/types.d.ts.map +1 -0
- package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
- package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
- package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
- package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
- package/dist/expressions/playground/ExpressionPlayground.js +291 -0
- package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
- package/dist/expressions/playground/RunControls.cjs +51 -0
- package/dist/expressions/playground/RunControls.cjs.map +1 -0
- package/dist/expressions/playground/RunControls.d.ts +7 -0
- package/dist/expressions/playground/RunControls.d.ts.map +1 -0
- package/dist/expressions/playground/RunControls.js +51 -0
- package/dist/expressions/playground/RunControls.js.map +1 -0
- package/dist/expressions/playground/VerticalSplit.cjs +109 -0
- package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
- package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
- package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
- package/dist/expressions/playground/VerticalSplit.js +109 -0
- package/dist/expressions/playground/VerticalSplit.js.map +1 -0
- package/dist/expressions/playground/api.cjs +49 -0
- package/dist/expressions/playground/api.cjs.map +1 -0
- package/dist/expressions/playground/api.d.ts +53 -0
- package/dist/expressions/playground/api.d.ts.map +1 -0
- package/dist/expressions/playground/api.js +49 -0
- package/dist/expressions/playground/api.js.map +1 -0
- package/dist/expressions/playground/languages.cjs +88 -0
- package/dist/expressions/playground/languages.cjs.map +1 -0
- package/dist/expressions/playground/languages.d.ts +43 -0
- package/dist/expressions/playground/languages.d.ts.map +1 -0
- package/dist/expressions/playground/languages.js +88 -0
- package/dist/expressions/playground/languages.js.map +1 -0
- package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
- package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
- package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
- package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
- package/dist/expressions/playground/panels/GraphPanel.js +72 -0
- package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
- package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
- package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
- package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
- package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
- package/dist/expressions/playground/panels/ResultPanel.js +82 -0
- package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
- package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
- package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
- package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
- package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
- package/dist/expressions/playground/panels/SpecPanel.js +76 -0
- package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
- package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
- package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
- package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
- package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
- package/dist/expressions/playground/panels/TokensPanel.js +72 -0
- package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
- package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
- package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
- package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
- package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
- package/dist/expressions/playground/panels/graphNodes.js +35 -0
- package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
- package/dist/expressions/playground/runAction.cjs +12 -0
- package/dist/expressions/playground/runAction.cjs.map +1 -0
- package/dist/expressions/playground/runAction.d.ts +15 -0
- package/dist/expressions/playground/runAction.d.ts.map +1 -0
- package/dist/expressions/playground/runAction.js +12 -0
- package/dist/expressions/playground/runAction.js.map +1 -0
- package/dist/expressions/playground/runShortcut.cjs +9 -0
- package/dist/expressions/playground/runShortcut.cjs.map +1 -0
- package/dist/expressions/playground/runShortcut.d.ts +2 -0
- package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
- package/dist/expressions/playground/runShortcut.js +9 -0
- package/dist/expressions/playground/runShortcut.js.map +1 -0
- package/dist/expressions/playground/useEditorTheme.cjs +40 -0
- package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
- package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
- package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
- package/dist/expressions/playground/useEditorTheme.js +23 -0
- package/dist/expressions/playground/useEditorTheme.js.map +1 -0
- package/dist/expressions/playground/useEvaluator.cjs +72 -0
- package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
- package/dist/expressions/playground/useEvaluator.d.ts +25 -0
- package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
- package/dist/expressions/playground/useEvaluator.js +72 -0
- package/dist/expressions/playground/useEvaluator.js.map +1 -0
- package/dist/expressions/playground/useParsedInput.cjs +22 -0
- package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
- package/dist/expressions/playground/useParsedInput.d.ts +20 -0
- package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
- package/dist/expressions/playground/useParsedInput.js +22 -0
- package/dist/expressions/playground/useParsedInput.js.map +1 -0
- package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
- package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
- package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
- package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
- package/dist/expressions/playground/verticalSplitModel.js +11 -0
- package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
- package/dist/expressions/playground.cjs +18 -0
- package/dist/expressions/playground.cjs.map +1 -0
- package/dist/expressions/playground.d.ts +18 -0
- package/dist/expressions/playground.d.ts.map +1 -0
- package/dist/expressions/playground.js +18 -0
- package/dist/expressions/playground.js.map +1 -0
- package/dist/expressions.cjs +28 -0
- package/dist/expressions.cjs.map +1 -0
- package/dist/expressions.d.ts +10 -0
- package/dist/expressions.d.ts.map +1 -0
- package/dist/expressions.js +28 -0
- package/dist/expressions.js.map +1 -0
- package/dist/hooks/density-provider.d.ts +1 -1
- package/dist/hooks/theme-provider.d.ts +1 -1
- package/dist/hooks/use-density.d.ts +1 -1
- package/dist/hooks/use-resource-clock.cjs +14 -0
- package/dist/hooks/use-resource-clock.cjs.map +1 -0
- package/dist/hooks/use-resource-clock.d.ts +2 -0
- package/dist/hooks/use-resource-clock.d.ts.map +1 -0
- package/dist/hooks/use-resource-clock.js +14 -0
- package/dist/hooks/use-resource-clock.js.map +1 -0
- package/dist/hooks/use-task-run.cjs +25 -18
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +26 -19
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/hooks/use-theme.d.ts +1 -1
- package/dist/icons/registry.d.ts +1 -1
- package/dist/icons/types.d.ts +1 -1
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.d.ts +1 -1
- package/dist/layout/AppShell.nav.drag.d.ts +1 -1
- package/dist/layout/AppSidebar.d.ts +1 -1
- package/dist/layout/Panel.d.ts +1 -1
- package/dist/layout/PanelFrame.d.ts +1 -1
- package/dist/layout/Section.d.ts +1 -1
- package/dist/layout/SplitPane.d.ts +1 -1
- package/dist/layout/Tabs.d.ts +1 -1
- package/dist/layout/Workspace.d.ts +1 -1
- package/dist/layout/Workspace.model.d.ts +1 -1
- package/dist/lib/combobox-values.d.ts +1 -1
- package/dist/monaco/MonacoEditor.cjs +3 -3
- package/dist/monaco/MonacoEditor.cjs.map +1 -1
- package/dist/monaco/MonacoEditor.js +2 -2
- package/dist/monaco/MonacoEditor.js.map +1 -1
- package/dist/monaco/types.d.ts +1 -1
- package/dist/monaco/use-monaco-worker.d.ts +1 -1
- package/dist/overlay/CellActions.d.ts +1 -1
- package/dist/overlay/CommandPalette.d.ts +2 -2
- package/dist/overlay/CommandPalette.model.d.ts +1 -1
- package/dist/overlay/CommandPaletteList.d.ts +1 -1
- package/dist/overlay/DropdownMenu.d.ts +1 -1
- package/dist/overlay/HoverCard.d.ts +1 -1
- package/dist/overlay/Modal.d.ts +2 -2
- package/dist/overlay/Toast.d.ts +1 -1
- package/dist/overlay/TourCard.d.ts +1 -1
- package/dist/overlay/TourProvider.d.ts +1 -1
- package/dist/overlay/dropdownMenuContext.d.ts +1 -1
- package/dist/overlay/toast-context.d.ts +2 -2
- package/dist/overlay/tour-context.d.ts +1 -1
- package/dist/overlay/tour-types.d.ts +1 -1
- package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
- package/dist/profiles/editor/profileBuilder.d.ts +1 -1
- package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
- package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
- package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
- package/dist/profiles/fields/profileFieldState.d.ts +1 -1
- package/dist/profiles/query/jsonPathSample.d.ts +1 -1
- package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
- package/dist/profiles/query/prometheusResults.d.ts +2 -2
- package/dist/rpc/EndpointList.d.ts +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts +1 -1
- package/dist/rpc/OperationCatalog.d.ts +1 -1
- package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
- package/dist/rpc/OperationEntityPage.d.ts +1 -1
- package/dist/rpc/OperationResultView.d.ts +1 -1
- package/dist/rpc/RouterProvider.d.ts +1 -1
- package/dist/rpc/SchemaActionForm.d.ts +1 -1
- package/dist/rpc/formMetadata.d.ts +1 -1
- package/dist/rpc/router.d.ts +1 -1
- package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
- package/dist/styles.css +1 -1
- package/package.json +21 -2
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState, useEffect, useCallback } from "react";
|
|
3
|
+
import { EDITOR_LINE_HEIGHT, rowsToPaneHeight } from "./verticalSplitModel.js";
|
|
4
|
+
function VerticalSplit({
|
|
5
|
+
top,
|
|
6
|
+
bottom,
|
|
7
|
+
defaultTopHeight,
|
|
8
|
+
minTop = rowsToPaneHeight(2),
|
|
9
|
+
minBottom = 96,
|
|
10
|
+
storageKey
|
|
11
|
+
}) {
|
|
12
|
+
const container = useRef(null);
|
|
13
|
+
const [topHeight, setTopHeight] = useState(
|
|
14
|
+
() => readStored(storageKey) ?? defaultTopHeight
|
|
15
|
+
);
|
|
16
|
+
const [dragging, setDragging] = useState(false);
|
|
17
|
+
const hasStoredSize = useRef(readStored(storageKey) !== null);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!hasStoredSize.current) setTopHeight(defaultTopHeight);
|
|
20
|
+
}, [defaultTopHeight]);
|
|
21
|
+
const clamp = useCallback(
|
|
22
|
+
(height) => {
|
|
23
|
+
var _a;
|
|
24
|
+
const available = ((_a = container.current) == null ? void 0 : _a.getBoundingClientRect().height) ?? 0;
|
|
25
|
+
const upperBound = Math.max(minTop, available - minBottom);
|
|
26
|
+
return Math.round(Math.max(minTop, Math.min(upperBound, height)));
|
|
27
|
+
},
|
|
28
|
+
[minTop, minBottom]
|
|
29
|
+
);
|
|
30
|
+
const commit = useCallback(
|
|
31
|
+
(height) => {
|
|
32
|
+
const next = clamp(height);
|
|
33
|
+
setTopHeight(next);
|
|
34
|
+
hasStoredSize.current = true;
|
|
35
|
+
if (storageKey) window.localStorage.setItem(storageKey, String(next));
|
|
36
|
+
},
|
|
37
|
+
[clamp, storageKey]
|
|
38
|
+
);
|
|
39
|
+
const onPointerDown = useCallback(
|
|
40
|
+
(event) => {
|
|
41
|
+
var _a;
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
const rect = (_a = container.current) == null ? void 0 : _a.getBoundingClientRect();
|
|
44
|
+
if (!rect) return;
|
|
45
|
+
setDragging(true);
|
|
46
|
+
const onMove = (moveEvent) => commit(moveEvent.clientY - rect.top);
|
|
47
|
+
const onUp = () => {
|
|
48
|
+
setDragging(false);
|
|
49
|
+
document.removeEventListener("pointermove", onMove);
|
|
50
|
+
document.removeEventListener("pointerup", onUp);
|
|
51
|
+
};
|
|
52
|
+
document.addEventListener("pointermove", onMove);
|
|
53
|
+
document.addEventListener("pointerup", onUp);
|
|
54
|
+
},
|
|
55
|
+
[commit]
|
|
56
|
+
);
|
|
57
|
+
const onKeyDown = useCallback(
|
|
58
|
+
(event) => {
|
|
59
|
+
const step = event.shiftKey ? EDITOR_LINE_HEIGHT * 5 : EDITOR_LINE_HEIGHT;
|
|
60
|
+
if (event.key === "ArrowUp") {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
commit(topHeight - step);
|
|
63
|
+
} else if (event.key === "ArrowDown") {
|
|
64
|
+
event.preventDefault();
|
|
65
|
+
commit(topHeight + step);
|
|
66
|
+
} else if (event.key === "Home") {
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
commit(minTop);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
[commit, topHeight, minTop]
|
|
72
|
+
);
|
|
73
|
+
return /* @__PURE__ */ jsxs("div", { ref: container, className: "flex h-full min-h-0 flex-col", children: [
|
|
74
|
+
/* @__PURE__ */ jsx(
|
|
75
|
+
"div",
|
|
76
|
+
{
|
|
77
|
+
className: "min-h-0 shrink-0 overflow-hidden",
|
|
78
|
+
style: { height: topHeight },
|
|
79
|
+
children: top
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
/* @__PURE__ */ jsx(
|
|
83
|
+
"div",
|
|
84
|
+
{
|
|
85
|
+
role: "separator",
|
|
86
|
+
"aria-orientation": "horizontal",
|
|
87
|
+
"aria-label": "Resize the expression editor",
|
|
88
|
+
"aria-valuenow": topHeight,
|
|
89
|
+
tabIndex: 0,
|
|
90
|
+
onPointerDown,
|
|
91
|
+
onKeyDown,
|
|
92
|
+
className: `group relative h-1.5 shrink-0 cursor-row-resize bg-border transition-colors hover:bg-primary/40 focus-visible:bg-primary/60 focus-visible:outline-none ${dragging ? "bg-primary/60" : ""}`,
|
|
93
|
+
children: /* @__PURE__ */ jsx("span", { className: "absolute inset-x-0 -top-1 -bottom-1" })
|
|
94
|
+
}
|
|
95
|
+
),
|
|
96
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: bottom })
|
|
97
|
+
] });
|
|
98
|
+
}
|
|
99
|
+
function readStored(key) {
|
|
100
|
+
if (!key || typeof window === "undefined") return null;
|
|
101
|
+
const raw = window.localStorage.getItem(key);
|
|
102
|
+
if (raw === null) return null;
|
|
103
|
+
const parsed = Number.parseInt(raw, 10);
|
|
104
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
VerticalSplit
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=VerticalSplit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerticalSplit.js","sources":["../../../src/expressions/playground/VerticalSplit.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\nimport { EDITOR_LINE_HEIGHT, rowsToPaneHeight } from \"./verticalSplitModel\";\n\nexport interface VerticalSplitProps {\n top: ReactNode;\n bottom: ReactNode;\n /** Top-pane height in pixels, used until the reader drags the divider. */\n defaultTopHeight: number;\n /** Smallest the top pane may be dragged. Defaults to two rows. */\n minTop?: number;\n /** Smallest the bottom pane may be dragged. */\n minBottom?: number;\n /** localStorage key persisting the dragged height. */\n storageKey?: string;\n}\n\n/**\n * A vertically stacked, resizable pair of panes.\n *\n * clicky-ui's SplitPane only splits horizontally, and the two editors stack, so\n * the divider here is its own component. Sizing is in pixels rather than a\n * percentage because the useful size of the expression editor is a number of\n * rows, which a percentage of a varying viewport does not express.\n */\nexport function VerticalSplit({\n top,\n bottom,\n defaultTopHeight,\n minTop = rowsToPaneHeight(2),\n minBottom = 96,\n storageKey,\n}: VerticalSplitProps) {\n const container = useRef<HTMLDivElement>(null);\n const [topHeight, setTopHeight] = useState(\n () => readStored(storageKey) ?? defaultTopHeight,\n );\n const [dragging, setDragging] = useState(false);\n\n // Only follow the language's default while the reader has not chosen a size:\n // a dragged divider is a decision, and switching language should not undo it.\n const hasStoredSize = useRef(readStored(storageKey) !== null);\n useEffect(() => {\n if (!hasStoredSize.current) setTopHeight(defaultTopHeight);\n }, [defaultTopHeight]);\n\n const clamp = useCallback(\n (height: number) => {\n const available = container.current?.getBoundingClientRect().height ?? 0;\n const upperBound = Math.max(minTop, available - minBottom);\n return Math.round(Math.max(minTop, Math.min(upperBound, height)));\n },\n [minTop, minBottom],\n );\n\n const commit = useCallback(\n (height: number) => {\n const next = clamp(height);\n setTopHeight(next);\n hasStoredSize.current = true;\n if (storageKey) window.localStorage.setItem(storageKey, String(next));\n },\n [clamp, storageKey],\n );\n\n const onPointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n event.preventDefault();\n const rect = container.current?.getBoundingClientRect();\n if (!rect) return;\n\n setDragging(true);\n const onMove = (moveEvent: PointerEvent) =>\n commit(moveEvent.clientY - rect.top);\n const onUp = () => {\n setDragging(false);\n document.removeEventListener(\"pointermove\", onMove);\n document.removeEventListener(\"pointerup\", onUp);\n };\n document.addEventListener(\"pointermove\", onMove);\n document.addEventListener(\"pointerup\", onUp);\n },\n [commit],\n );\n\n // A separator that can only be dragged is unusable without a mouse, and this\n // one gates access to the input editor.\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n const step = event.shiftKey ? EDITOR_LINE_HEIGHT * 5 : EDITOR_LINE_HEIGHT;\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n commit(topHeight - step);\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n commit(topHeight + step);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commit(minTop);\n }\n },\n [commit, topHeight, minTop],\n );\n\n return (\n <div ref={container} className=\"flex h-full min-h-0 flex-col\">\n <div\n className=\"min-h-0 shrink-0 overflow-hidden\"\n style={{ height: topHeight }}\n >\n {top}\n </div>\n\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n aria-label=\"Resize the expression editor\"\n aria-valuenow={topHeight}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n className={`group relative h-1.5 shrink-0 cursor-row-resize bg-border transition-colors hover:bg-primary/40 focus-visible:bg-primary/60 focus-visible:outline-none ${\n dragging ? \"bg-primary/60\" : \"\"\n }`}\n >\n {/* A 6px strip is a small target; widen the grab area without moving\n anything by overflowing an invisible band above and below it. */}\n <span className=\"absolute inset-x-0 -top-1 -bottom-1\" />\n </div>\n\n <div className=\"min-h-0 flex-1 overflow-hidden\">{bottom}</div>\n </div>\n );\n}\n\nfunction readStored(key: string | undefined): number | null {\n if (!key || typeof window === \"undefined\") return null;\n const raw = window.localStorage.getItem(key);\n if (raw === null) return null;\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) ? parsed : null;\n}\n"],"names":[],"mappings":";;;AA+BO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,iBAAiB,CAAC;AAAA,EAC3B,YAAY;AAAA,EACZ;AACF,GAAuB;AACrB,QAAM,YAAY,OAAuB,IAAI;AAC7C,QAAM,CAAC,WAAW,YAAY,IAAI;AAAA,IAChC,MAAM,WAAW,UAAU,KAAK;AAAA,EAAA;AAElC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAI9C,QAAM,gBAAgB,OAAO,WAAW,UAAU,MAAM,IAAI;AAC5D,YAAU,MAAM;AACd,QAAI,CAAC,cAAc,QAAS,cAAa,gBAAgB;AAAA,EAC3D,GAAG,CAAC,gBAAgB,CAAC;AAErB,QAAM,QAAQ;AAAA,IACZ,CAAC,WAAmB;;AAClB,YAAM,cAAY,eAAU,YAAV,mBAAmB,wBAAwB,WAAU;AACvE,YAAM,aAAa,KAAK,IAAI,QAAQ,YAAY,SAAS;AACzD,aAAO,KAAK,MAAM,KAAK,IAAI,QAAQ,KAAK,IAAI,YAAY,MAAM,CAAC,CAAC;AAAA,IAClE;AAAA,IACA,CAAC,QAAQ,SAAS;AAAA,EAAA;AAGpB,QAAM,SAAS;AAAA,IACb,CAAC,WAAmB;AAClB,YAAM,OAAO,MAAM,MAAM;AACzB,mBAAa,IAAI;AACjB,oBAAc,UAAU;AACxB,UAAI,WAAY,QAAO,aAAa,QAAQ,YAAY,OAAO,IAAI,CAAC;AAAA,IACtE;AAAA,IACA,CAAC,OAAO,UAAU;AAAA,EAAA;AAGpB,QAAM,gBAAgB;AAAA,IACpB,CAAC,UAA8C;;AAC7C,YAAM,eAAA;AACN,YAAM,QAAO,eAAU,YAAV,mBAAmB;AAChC,UAAI,CAAC,KAAM;AAEX,kBAAY,IAAI;AAChB,YAAM,SAAS,CAAC,cACd,OAAO,UAAU,UAAU,KAAK,GAAG;AACrC,YAAM,OAAO,MAAM;AACjB,oBAAY,KAAK;AACjB,iBAAS,oBAAoB,eAAe,MAAM;AAClD,iBAAS,oBAAoB,aAAa,IAAI;AAAA,MAChD;AACA,eAAS,iBAAiB,eAAe,MAAM;AAC/C,eAAS,iBAAiB,aAAa,IAAI;AAAA,IAC7C;AAAA,IACA,CAAC,MAAM;AAAA,EAAA;AAKT,QAAM,YAAY;AAAA,IAChB,CAAC,UAA8C;AAC7C,YAAM,OAAO,MAAM,WAAW,qBAAqB,IAAI;AACvD,UAAI,MAAM,QAAQ,WAAW;AAC3B,cAAM,eAAA;AACN,eAAO,YAAY,IAAI;AAAA,MACzB,WAAW,MAAM,QAAQ,aAAa;AACpC,cAAM,eAAA;AACN,eAAO,YAAY,IAAI;AAAA,MACzB,WAAW,MAAM,QAAQ,QAAQ;AAC/B,cAAM,eAAA;AACN,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,WAAW,MAAM;AAAA,EAAA;AAG5B,SACE,qBAAC,OAAA,EAAI,KAAK,WAAW,WAAU,gCAC7B,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,QAAQ,UAAA;AAAA,QAEhB,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,oBAAiB;AAAA,QACjB,cAAW;AAAA,QACX,iBAAe;AAAA,QACf,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA,WAAW,0JACT,WAAW,kBAAkB,EAC/B;AAAA,QAIA,UAAA,oBAAC,QAAA,EAAK,WAAU,sCAAA,CAAsC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGxD,oBAAC,OAAA,EAAI,WAAU,kCAAkC,UAAA,OAAA,CAAO;AAAA,EAAA,GAC1D;AAEJ;AAEA,SAAS,WAAW,KAAwC;AAC1D,MAAI,CAAC,OAAO,OAAO,WAAW,YAAa,QAAO;AAClD,QAAM,MAAM,OAAO,aAAa,QAAQ,GAAG;AAC3C,MAAI,QAAQ,KAAM,QAAO;AACzB,QAAM,SAAS,OAAO,SAAS,KAAK,EAAE;AACtC,SAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const DEFAULT_API_BASE = "/api";
|
|
4
|
+
async function evaluate(apiBase, request, signal) {
|
|
5
|
+
let response;
|
|
6
|
+
try {
|
|
7
|
+
response = await fetch(`${apiBase}/eval`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: { "Content-Type": "application/json" },
|
|
10
|
+
body: JSON.stringify(request),
|
|
11
|
+
...signal ? { signal } : {}
|
|
12
|
+
});
|
|
13
|
+
} catch (cause) {
|
|
14
|
+
if (signal == null ? void 0 : signal.aborted) throw cause;
|
|
15
|
+
return {
|
|
16
|
+
result: "",
|
|
17
|
+
durationMs: 0,
|
|
18
|
+
error: { message: `could not reach the evaluation server: ${String(cause)}` }
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (!response.ok && response.status !== 400) {
|
|
22
|
+
return {
|
|
23
|
+
result: "",
|
|
24
|
+
durationMs: 0,
|
|
25
|
+
error: { message: `evaluation server returned ${response.status} ${response.statusText}` }
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return await response.json();
|
|
29
|
+
}
|
|
30
|
+
async function fetchSpec(apiBase, signal) {
|
|
31
|
+
return fetchJSON(`${apiBase}/spec`, signal);
|
|
32
|
+
}
|
|
33
|
+
async function fetchExamples(apiBase, signal) {
|
|
34
|
+
return fetchJSON(`${apiBase}/examples`, signal);
|
|
35
|
+
}
|
|
36
|
+
async function fetchJSON(url, signal) {
|
|
37
|
+
try {
|
|
38
|
+
const response = await fetch(url, signal ? { signal } : {});
|
|
39
|
+
if (!response.ok) return void 0;
|
|
40
|
+
return await response.json();
|
|
41
|
+
} catch {
|
|
42
|
+
return void 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.DEFAULT_API_BASE = DEFAULT_API_BASE;
|
|
46
|
+
exports.evaluate = evaluate;
|
|
47
|
+
exports.fetchExamples = fetchExamples;
|
|
48
|
+
exports.fetchSpec = fetchSpec;
|
|
49
|
+
//# sourceMappingURL=api.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.cjs","sources":["../../../src/expressions/playground/api.ts"],"sourcesContent":["import type { GomplateSpec } from \"../lang/index.ts\";\nimport type { EvalLanguage } from \"./languages.ts\";\n\nexport interface EvalRequest {\n language: EvalLanguage;\n source: string;\n input?: string;\n leftDelim?: string;\n rightDelim?: string;\n}\n\nexport interface EvalError {\n message: string;\n line?: number;\n column?: number;\n}\n\nexport interface EvalResponse {\n result: string;\n value?: unknown;\n type?: string;\n error?: EvalError;\n durationMs: number;\n}\n\n/** One sample an author can load, as `GET /api/examples` returns it. */\nexport interface Example {\n name: string;\n language: EvalLanguage;\n source: string;\n input: string;\n}\n\n/**\n * Where the host mounted the playground API.\n *\n * A host serves it under its own prefix -- mission-control behind an\n * authenticated route group -- so nothing here may assume `/api`.\n */\nexport const DEFAULT_API_BASE = \"/api\";\n\n/**\n * Evaluates against the host's Go server.\n *\n * A transport failure is surfaced as an error result rather than thrown: the\n * usual cause is the server not running yet, and the playground should say so\n * rather than blank out.\n */\nexport async function evaluate(\n apiBase: string,\n request: EvalRequest,\n signal?: AbortSignal,\n): Promise<EvalResponse> {\n let response: Response;\n try {\n response = await fetch(`${apiBase}/eval`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(request),\n ...(signal ? { signal } : {}),\n });\n } catch (cause) {\n if (signal?.aborted) throw cause;\n return {\n result: \"\",\n durationMs: 0,\n error: { message: `could not reach the evaluation server: ${String(cause)}` },\n };\n }\n\n if (!response.ok && response.status !== 400) {\n return {\n result: \"\",\n durationMs: 0,\n error: { message: `evaluation server returned ${response.status} ${response.statusText}` },\n };\n }\n return (await response.json()) as EvalResponse;\n}\n\n/**\n * The catalogue the running server can actually evaluate.\n *\n * Wider than the one this package ships whenever the host registers functions\n * of its own. Undefined on any failure, which leaves the packaged catalogue in\n * place -- right when the server is simply not up yet.\n */\nexport async function fetchSpec(\n apiBase: string,\n signal?: AbortSignal,\n): Promise<GomplateSpec | undefined> {\n return fetchJSON<GomplateSpec>(`${apiBase}/spec`, signal);\n}\n\nexport async function fetchExamples(\n apiBase: string,\n signal?: AbortSignal,\n): Promise<Example[] | undefined> {\n return fetchJSON<Example[]>(`${apiBase}/examples`, signal);\n}\n\nasync function fetchJSON<T>(url: string, signal?: AbortSignal): Promise<T | undefined> {\n try {\n const response = await fetch(url, signal ? { signal } : {});\n if (!response.ok) return undefined;\n return (await response.json()) as T;\n } catch {\n return undefined;\n }\n}\n"],"names":[],"mappings":";;AAuCO,MAAM,mBAAmB;AAShC,eAAsB,SACpB,SACA,SACA,QACuB;AACvB,MAAI;AACJ,MAAI;AACF,eAAW,MAAM,MAAM,GAAG,OAAO,SAAS;AAAA,MACxC,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM,KAAK,UAAU,OAAO;AAAA,MAC5B,GAAI,SAAS,EAAE,WAAW,CAAA;AAAA,IAAC,CAC5B;AAAA,EACH,SAAS,OAAO;AACd,QAAI,iCAAQ,QAAS,OAAM;AAC3B,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO,EAAE,SAAS,0CAA0C,OAAO,KAAK,CAAC,GAAA;AAAA,IAAG;AAAA,EAEhF;AAEA,MAAI,CAAC,SAAS,MAAM,SAAS,WAAW,KAAK;AAC3C,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO,EAAE,SAAS,8BAA8B,SAAS,MAAM,IAAI,SAAS,UAAU,GAAA;AAAA,IAAG;AAAA,EAE7F;AACA,SAAQ,MAAM,SAAS,KAAA;AACzB;AASA,eAAsB,UACpB,SACA,QACmC;AACnC,SAAO,UAAwB,GAAG,OAAO,SAAS,MAAM;AAC1D;AAEA,eAAsB,cACpB,SACA,QACgC;AAChC,SAAO,UAAqB,GAAG,OAAO,aAAa,MAAM;AAC3D;AAEA,eAAe,UAAa,KAAa,QAA8C;AACrF,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,KAAK,SAAS,EAAE,OAAA,IAAW,EAAE;AAC1D,QAAI,CAAC,SAAS,GAAI,QAAO;AACzB,WAAQ,MAAM,SAAS,KAAA;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;;;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { GomplateSpec } from '../lang/index.ts';
|
|
2
|
+
import { EvalLanguage } from './languages.ts';
|
|
3
|
+
export interface EvalRequest {
|
|
4
|
+
language: EvalLanguage;
|
|
5
|
+
source: string;
|
|
6
|
+
input?: string;
|
|
7
|
+
leftDelim?: string;
|
|
8
|
+
rightDelim?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface EvalError {
|
|
11
|
+
message: string;
|
|
12
|
+
line?: number;
|
|
13
|
+
column?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface EvalResponse {
|
|
16
|
+
result: string;
|
|
17
|
+
value?: unknown;
|
|
18
|
+
type?: string;
|
|
19
|
+
error?: EvalError;
|
|
20
|
+
durationMs: number;
|
|
21
|
+
}
|
|
22
|
+
/** One sample an author can load, as `GET /api/examples` returns it. */
|
|
23
|
+
export interface Example {
|
|
24
|
+
name: string;
|
|
25
|
+
language: EvalLanguage;
|
|
26
|
+
source: string;
|
|
27
|
+
input: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Where the host mounted the playground API.
|
|
31
|
+
*
|
|
32
|
+
* A host serves it under its own prefix -- mission-control behind an
|
|
33
|
+
* authenticated route group -- so nothing here may assume `/api`.
|
|
34
|
+
*/
|
|
35
|
+
export declare const DEFAULT_API_BASE = "/api";
|
|
36
|
+
/**
|
|
37
|
+
* Evaluates against the host's Go server.
|
|
38
|
+
*
|
|
39
|
+
* A transport failure is surfaced as an error result rather than thrown: the
|
|
40
|
+
* usual cause is the server not running yet, and the playground should say so
|
|
41
|
+
* rather than blank out.
|
|
42
|
+
*/
|
|
43
|
+
export declare function evaluate(apiBase: string, request: EvalRequest, signal?: AbortSignal): Promise<EvalResponse>;
|
|
44
|
+
/**
|
|
45
|
+
* The catalogue the running server can actually evaluate.
|
|
46
|
+
*
|
|
47
|
+
* Wider than the one this package ships whenever the host registers functions
|
|
48
|
+
* of its own. Undefined on any failure, which leaves the packaged catalogue in
|
|
49
|
+
* place -- right when the server is simply not up yet.
|
|
50
|
+
*/
|
|
51
|
+
export declare function fetchSpec(apiBase: string, signal?: AbortSignal): Promise<GomplateSpec | undefined>;
|
|
52
|
+
export declare function fetchExamples(apiBase: string, signal?: AbortSignal): Promise<Example[] | undefined>;
|
|
53
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/expressions/playground/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wEAAwE;AACxE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAEnC;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAEhC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const DEFAULT_API_BASE = "/api";
|
|
2
|
+
async function evaluate(apiBase, request, signal) {
|
|
3
|
+
let response;
|
|
4
|
+
try {
|
|
5
|
+
response = await fetch(`${apiBase}/eval`, {
|
|
6
|
+
method: "POST",
|
|
7
|
+
headers: { "Content-Type": "application/json" },
|
|
8
|
+
body: JSON.stringify(request),
|
|
9
|
+
...signal ? { signal } : {}
|
|
10
|
+
});
|
|
11
|
+
} catch (cause) {
|
|
12
|
+
if (signal == null ? void 0 : signal.aborted) throw cause;
|
|
13
|
+
return {
|
|
14
|
+
result: "",
|
|
15
|
+
durationMs: 0,
|
|
16
|
+
error: { message: `could not reach the evaluation server: ${String(cause)}` }
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (!response.ok && response.status !== 400) {
|
|
20
|
+
return {
|
|
21
|
+
result: "",
|
|
22
|
+
durationMs: 0,
|
|
23
|
+
error: { message: `evaluation server returned ${response.status} ${response.statusText}` }
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return await response.json();
|
|
27
|
+
}
|
|
28
|
+
async function fetchSpec(apiBase, signal) {
|
|
29
|
+
return fetchJSON(`${apiBase}/spec`, signal);
|
|
30
|
+
}
|
|
31
|
+
async function fetchExamples(apiBase, signal) {
|
|
32
|
+
return fetchJSON(`${apiBase}/examples`, signal);
|
|
33
|
+
}
|
|
34
|
+
async function fetchJSON(url, signal) {
|
|
35
|
+
try {
|
|
36
|
+
const response = await fetch(url, signal ? { signal } : {});
|
|
37
|
+
if (!response.ok) return void 0;
|
|
38
|
+
return await response.json();
|
|
39
|
+
} catch {
|
|
40
|
+
return void 0;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
DEFAULT_API_BASE,
|
|
45
|
+
evaluate,
|
|
46
|
+
fetchExamples,
|
|
47
|
+
fetchSpec
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sources":["../../../src/expressions/playground/api.ts"],"sourcesContent":["import type { GomplateSpec } from \"../lang/index.ts\";\nimport type { EvalLanguage } from \"./languages.ts\";\n\nexport interface EvalRequest {\n language: EvalLanguage;\n source: string;\n input?: string;\n leftDelim?: string;\n rightDelim?: string;\n}\n\nexport interface EvalError {\n message: string;\n line?: number;\n column?: number;\n}\n\nexport interface EvalResponse {\n result: string;\n value?: unknown;\n type?: string;\n error?: EvalError;\n durationMs: number;\n}\n\n/** One sample an author can load, as `GET /api/examples` returns it. */\nexport interface Example {\n name: string;\n language: EvalLanguage;\n source: string;\n input: string;\n}\n\n/**\n * Where the host mounted the playground API.\n *\n * A host serves it under its own prefix -- mission-control behind an\n * authenticated route group -- so nothing here may assume `/api`.\n */\nexport const DEFAULT_API_BASE = \"/api\";\n\n/**\n * Evaluates against the host's Go server.\n *\n * A transport failure is surfaced as an error result rather than thrown: the\n * usual cause is the server not running yet, and the playground should say so\n * rather than blank out.\n */\nexport async function evaluate(\n apiBase: string,\n request: EvalRequest,\n signal?: AbortSignal,\n): Promise<EvalResponse> {\n let response: Response;\n try {\n response = await fetch(`${apiBase}/eval`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(request),\n ...(signal ? { signal } : {}),\n });\n } catch (cause) {\n if (signal?.aborted) throw cause;\n return {\n result: \"\",\n durationMs: 0,\n error: { message: `could not reach the evaluation server: ${String(cause)}` },\n };\n }\n\n if (!response.ok && response.status !== 400) {\n return {\n result: \"\",\n durationMs: 0,\n error: { message: `evaluation server returned ${response.status} ${response.statusText}` },\n };\n }\n return (await response.json()) as EvalResponse;\n}\n\n/**\n * The catalogue the running server can actually evaluate.\n *\n * Wider than the one this package ships whenever the host registers functions\n * of its own. Undefined on any failure, which leaves the packaged catalogue in\n * place -- right when the server is simply not up yet.\n */\nexport async function fetchSpec(\n apiBase: string,\n signal?: AbortSignal,\n): Promise<GomplateSpec | undefined> {\n return fetchJSON<GomplateSpec>(`${apiBase}/spec`, signal);\n}\n\nexport async function fetchExamples(\n apiBase: string,\n signal?: AbortSignal,\n): Promise<Example[] | undefined> {\n return fetchJSON<Example[]>(`${apiBase}/examples`, signal);\n}\n\nasync function fetchJSON<T>(url: string, signal?: AbortSignal): Promise<T | undefined> {\n try {\n const response = await fetch(url, signal ? { signal } : {});\n if (!response.ok) return undefined;\n return (await response.json()) as T;\n } catch {\n return undefined;\n }\n}\n"],"names":[],"mappings":"AAuCO,MAAM,mBAAmB;AAShC,eAAsB,SACpB,SACA,SACA,QACuB;AACvB,MAAI;AACJ,MAAI;AACF,eAAW,MAAM,MAAM,GAAG,OAAO,SAAS;AAAA,MACxC,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM,KAAK,UAAU,OAAO;AAAA,MAC5B,GAAI,SAAS,EAAE,WAAW,CAAA;AAAA,IAAC,CAC5B;AAAA,EACH,SAAS,OAAO;AACd,QAAI,iCAAQ,QAAS,OAAM;AAC3B,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO,EAAE,SAAS,0CAA0C,OAAO,KAAK,CAAC,GAAA;AAAA,IAAG;AAAA,EAEhF;AAEA,MAAI,CAAC,SAAS,MAAM,SAAS,WAAW,KAAK;AAC3C,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO,EAAE,SAAS,8BAA8B,SAAS,MAAM,IAAI,SAAS,UAAU,GAAA;AAAA,IAAG;AAAA,EAE7F;AACA,SAAQ,MAAM,SAAS,KAAA;AACzB;AASA,eAAsB,UACpB,SACA,QACmC;AACnC,SAAO,UAAwB,GAAG,OAAO,SAAS,MAAM;AAC1D;AAEA,eAAsB,cACpB,SACA,QACgC;AAChC,SAAO,UAAqB,GAAG,OAAO,aAAa,MAAM;AAC3D;AAEA,eAAe,UAAa,KAAa,QAA8C;AACrF,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,KAAK,SAAS,EAAE,OAAA,IAAW,EAAE;AAC1D,QAAI,CAAC,SAAS,GAAI,QAAO;AACzB,WAAQ,MAAM,SAAS,KAAA;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const UiFunction = require("../../icons/components/UiFunction.cjs");
|
|
4
|
+
const UiBraces = require("../../icons/components/UiBraces.cjs");
|
|
5
|
+
const UiCode2 = require("../../icons/components/UiCode2.cjs");
|
|
6
|
+
const UiFileCode = require("../../icons/components/UiFileCode.cjs");
|
|
7
|
+
const UiFileText = require("../../icons/components/UiFileText.cjs");
|
|
8
|
+
const UiFileJson = require("../../icons/components/UiFileJson.cjs");
|
|
9
|
+
const EXPRESSION_ROWS = 5;
|
|
10
|
+
const TEMPLATE_ROWS = 14;
|
|
11
|
+
const LANGUAGES = [
|
|
12
|
+
{
|
|
13
|
+
id: "cel",
|
|
14
|
+
label: "CEL",
|
|
15
|
+
icon: UiFunction.UiFunction,
|
|
16
|
+
section: "Expressions",
|
|
17
|
+
editorLanguage: "cel",
|
|
18
|
+
evalLanguage: "cel",
|
|
19
|
+
catalogue: "cel",
|
|
20
|
+
description: "Common Expression Language, with gomplate's k8s, aws and math helpers",
|
|
21
|
+
editorRows: EXPRESSION_ROWS
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "jsonpath",
|
|
25
|
+
label: "JSONPath",
|
|
26
|
+
icon: UiBraces.UiBraces,
|
|
27
|
+
section: "Expressions",
|
|
28
|
+
editorLanguage: "jsonpath",
|
|
29
|
+
evalLanguage: "jsonpath",
|
|
30
|
+
description: "JSONPath, as evaluated by ojg",
|
|
31
|
+
editorRows: EXPRESSION_ROWS
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "javascript",
|
|
35
|
+
label: "JavaScript",
|
|
36
|
+
icon: UiCode2.UiCode2,
|
|
37
|
+
section: "Expressions",
|
|
38
|
+
editorLanguage: "javascript",
|
|
39
|
+
evalLanguage: "javascript",
|
|
40
|
+
description: "JavaScript, as evaluated by otto",
|
|
41
|
+
editorRows: EXPRESSION_ROWS
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "gomplate",
|
|
45
|
+
label: "Go template",
|
|
46
|
+
icon: UiFileCode.UiFileCode,
|
|
47
|
+
section: "Templates",
|
|
48
|
+
editorLanguage: "gomplate",
|
|
49
|
+
evalLanguage: "gotemplate",
|
|
50
|
+
catalogue: "gotemplate",
|
|
51
|
+
description: "Go text/template with gomplate's function library",
|
|
52
|
+
editorRows: TEMPLATE_ROWS
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "yaml-gomplate",
|
|
56
|
+
label: "YAML + template",
|
|
57
|
+
icon: UiFileText.UiFileText,
|
|
58
|
+
section: "Templates",
|
|
59
|
+
editorLanguage: "yaml-gomplate",
|
|
60
|
+
evalLanguage: "gotemplate",
|
|
61
|
+
catalogue: "gotemplate",
|
|
62
|
+
description: "YAML with templates embedded in it, as real configuration is written",
|
|
63
|
+
editorRows: TEMPLATE_ROWS
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: "json-gomplate",
|
|
67
|
+
label: "JSON + template",
|
|
68
|
+
icon: UiFileJson.UiFileJson,
|
|
69
|
+
section: "Templates",
|
|
70
|
+
editorLanguage: "json-gomplate",
|
|
71
|
+
evalLanguage: "gotemplate",
|
|
72
|
+
catalogue: "gotemplate",
|
|
73
|
+
description: "JSON with templates embedded in it",
|
|
74
|
+
editorRows: TEMPLATE_ROWS
|
|
75
|
+
}
|
|
76
|
+
];
|
|
77
|
+
const SECTIONS = ["Expressions", "Templates"];
|
|
78
|
+
function languageById(id, offered = LANGUAGES) {
|
|
79
|
+
const found = offered.find((language) => language.id === id);
|
|
80
|
+
if (found) return found;
|
|
81
|
+
const [first] = offered;
|
|
82
|
+
if (!first) throw new Error("no playground languages were offered");
|
|
83
|
+
return first;
|
|
84
|
+
}
|
|
85
|
+
exports.LANGUAGES = LANGUAGES;
|
|
86
|
+
exports.SECTIONS = SECTIONS;
|
|
87
|
+
exports.languageById = languageById;
|
|
88
|
+
//# sourceMappingURL=languages.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.cjs","sources":["../../../src/expressions/playground/languages.ts"],"sourcesContent":["import type { LanguageId } from \"../lang/index.ts\";\nimport {\n UiBraces,\n UiCode2,\n UiFileCode,\n UiFileJson,\n UiFileText,\n UiFunction,\n} from \"../../icons\";\nimport type { StaticIconComponent } from \"../../data/Icon\";\n\n/** An evaluator on the Go side. */\nexport type EvalLanguage = \"cel\" | \"gotemplate\" | \"jsonpath\" | \"javascript\";\n\n/** One entry in the playground's language rail. */\nexport interface PlaygroundLanguage {\n id: string;\n label: string;\n icon: StaticIconComponent;\n /** Rail section this language belongs to. */\n section: \"Expressions\" | \"Templates\";\n /** Monaco language for the source editor. */\n editorLanguage: LanguageId | \"javascript\";\n /** Which evaluator the Go server should run. */\n evalLanguage: EvalLanguage;\n description: string;\n /**\n * Which half of the catalogue the Functions tab browses, if either. JSONPath\n * and JavaScript have no generated catalogue, so they get no tab rather than\n * an empty one.\n */\n catalogue?: \"cel\" | \"gotemplate\";\n /**\n * Rows the expression editor opens at, before the reader drags the divider.\n *\n * An expression is a line or two, so five rows leaves the input document the\n * rest of the pane. A template is a whole document, and starting it at five\n * rows would hide most of what is being written.\n */\n editorRows: number;\n}\n\n/** Default rows for a language whose source is an expression. */\nconst EXPRESSION_ROWS = 5;\n\n/** Default rows for a language whose source is a document. */\nconst TEMPLATE_ROWS = 14;\n\nexport const LANGUAGES: PlaygroundLanguage[] = [\n {\n id: \"cel\",\n label: \"CEL\",\n icon: UiFunction,\n section: \"Expressions\",\n editorLanguage: \"cel\",\n evalLanguage: \"cel\",\n catalogue: \"cel\",\n description:\n \"Common Expression Language, with gomplate's k8s, aws and math helpers\",\n editorRows: EXPRESSION_ROWS,\n },\n {\n id: \"jsonpath\",\n label: \"JSONPath\",\n icon: UiBraces,\n section: \"Expressions\",\n editorLanguage: \"jsonpath\",\n evalLanguage: \"jsonpath\",\n description: \"JSONPath, as evaluated by ojg\",\n editorRows: EXPRESSION_ROWS,\n },\n {\n id: \"javascript\",\n label: \"JavaScript\",\n icon: UiCode2,\n section: \"Expressions\",\n editorLanguage: \"javascript\",\n evalLanguage: \"javascript\",\n description: \"JavaScript, as evaluated by otto\",\n editorRows: EXPRESSION_ROWS,\n },\n {\n id: \"gomplate\",\n label: \"Go template\",\n icon: UiFileCode,\n section: \"Templates\",\n editorLanguage: \"gomplate\",\n evalLanguage: \"gotemplate\",\n catalogue: \"gotemplate\",\n description: \"Go text/template with gomplate's function library\",\n editorRows: TEMPLATE_ROWS,\n },\n {\n id: \"yaml-gomplate\",\n label: \"YAML + template\",\n icon: UiFileText,\n section: \"Templates\",\n editorLanguage: \"yaml-gomplate\",\n evalLanguage: \"gotemplate\",\n catalogue: \"gotemplate\",\n description:\n \"YAML with templates embedded in it, as real configuration is written\",\n editorRows: TEMPLATE_ROWS,\n },\n {\n id: \"json-gomplate\",\n label: \"JSON + template\",\n icon: UiFileJson,\n section: \"Templates\",\n editorLanguage: \"json-gomplate\",\n evalLanguage: \"gotemplate\",\n catalogue: \"gotemplate\",\n description: \"JSON with templates embedded in it\",\n editorRows: TEMPLATE_ROWS,\n },\n];\n\n/** Rail section order. */\nexport const SECTIONS = [\"Expressions\", \"Templates\"] as const;\n\n/**\n * Resolves a language id against the offered list.\n *\n * Falls back to the first offered language rather than throwing: the id can\n * come from a URL an author edited or a bookmark from before a host narrowed\n * the list, and losing the page to an exception is the worse outcome.\n */\nexport function languageById(\n id: string,\n offered: PlaygroundLanguage[] = LANGUAGES,\n): PlaygroundLanguage {\n const found = offered.find((language) => language.id === id);\n if (found) return found;\n\n const [first] = offered;\n if (!first) throw new Error(\"no playground languages were offered\");\n return first;\n}\n"],"names":["UiFunction","UiBraces","UiCode2","UiFileCode","UiFileText","UiFileJson"],"mappings":";;;;;;;;AA2CA,MAAM,kBAAkB;AAGxB,MAAM,gBAAgB;AAEf,MAAM,YAAkC;AAAA,EAC7C;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMA,WAAAA;AAAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aACE;AAAA,IACF,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMC,SAAAA;AAAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMC,QAAAA;AAAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMC,WAAAA;AAAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMC,WAAAA;AAAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aACE;AAAA,IACF,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMC,WAAAA;AAAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAEhB;AAGO,MAAM,WAAW,CAAC,eAAe,WAAW;AAS5C,SAAS,aACd,IACA,UAAgC,WACZ;AACpB,QAAM,QAAQ,QAAQ,KAAK,CAAC,aAAa,SAAS,OAAO,EAAE;AAC3D,MAAI,MAAO,QAAO;AAElB,QAAM,CAAC,KAAK,IAAI;AAChB,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,sCAAsC;AAClE,SAAO;AACT;;;;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { LanguageId } from '../lang/index.ts';
|
|
2
|
+
import { StaticIconComponent } from '../../data/Icon';
|
|
3
|
+
/** An evaluator on the Go side. */
|
|
4
|
+
export type EvalLanguage = "cel" | "gotemplate" | "jsonpath" | "javascript";
|
|
5
|
+
/** One entry in the playground's language rail. */
|
|
6
|
+
export interface PlaygroundLanguage {
|
|
7
|
+
id: string;
|
|
8
|
+
label: string;
|
|
9
|
+
icon: StaticIconComponent;
|
|
10
|
+
/** Rail section this language belongs to. */
|
|
11
|
+
section: "Expressions" | "Templates";
|
|
12
|
+
/** Monaco language for the source editor. */
|
|
13
|
+
editorLanguage: LanguageId | "javascript";
|
|
14
|
+
/** Which evaluator the Go server should run. */
|
|
15
|
+
evalLanguage: EvalLanguage;
|
|
16
|
+
description: string;
|
|
17
|
+
/**
|
|
18
|
+
* Which half of the catalogue the Functions tab browses, if either. JSONPath
|
|
19
|
+
* and JavaScript have no generated catalogue, so they get no tab rather than
|
|
20
|
+
* an empty one.
|
|
21
|
+
*/
|
|
22
|
+
catalogue?: "cel" | "gotemplate";
|
|
23
|
+
/**
|
|
24
|
+
* Rows the expression editor opens at, before the reader drags the divider.
|
|
25
|
+
*
|
|
26
|
+
* An expression is a line or two, so five rows leaves the input document the
|
|
27
|
+
* rest of the pane. A template is a whole document, and starting it at five
|
|
28
|
+
* rows would hide most of what is being written.
|
|
29
|
+
*/
|
|
30
|
+
editorRows: number;
|
|
31
|
+
}
|
|
32
|
+
export declare const LANGUAGES: PlaygroundLanguage[];
|
|
33
|
+
/** Rail section order. */
|
|
34
|
+
export declare const SECTIONS: readonly ["Expressions", "Templates"];
|
|
35
|
+
/**
|
|
36
|
+
* Resolves a language id against the offered list.
|
|
37
|
+
*
|
|
38
|
+
* Falls back to the first offered language rather than throwing: the id can
|
|
39
|
+
* come from a URL an author edited or a bookmark from before a host narrowed
|
|
40
|
+
* the list, and losing the page to an exception is the worse outcome.
|
|
41
|
+
*/
|
|
42
|
+
export declare function languageById(id: string, offered?: PlaygroundLanguage[]): PlaygroundLanguage;
|
|
43
|
+
//# sourceMappingURL=languages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/expressions/playground/languages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,CAAC;AAE5E,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,mBAAmB,CAAC;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,aAAa,GAAG,WAAW,CAAC;IACrC,6CAA6C;IAC7C,cAAc,EAAE,UAAU,GAAG,YAAY,CAAC;IAC1C,gDAAgD;IAChD,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC;IACjC;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD,eAAO,MAAM,SAAS,EAAE,kBAAkB,EAmEzC,CAAC;AAEF,0BAA0B;AAC1B,eAAO,MAAM,QAAQ,uCAAwC,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,kBAAkB,EAAc,GACxC,kBAAkB,CAOpB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { UiFunction } from "../../icons/components/UiFunction.js";
|
|
2
|
+
import { UiBraces } from "../../icons/components/UiBraces.js";
|
|
3
|
+
import { UiCode2 } from "../../icons/components/UiCode2.js";
|
|
4
|
+
import { UiFileCode } from "../../icons/components/UiFileCode.js";
|
|
5
|
+
import { UiFileText } from "../../icons/components/UiFileText.js";
|
|
6
|
+
import { UiFileJson } from "../../icons/components/UiFileJson.js";
|
|
7
|
+
const EXPRESSION_ROWS = 5;
|
|
8
|
+
const TEMPLATE_ROWS = 14;
|
|
9
|
+
const LANGUAGES = [
|
|
10
|
+
{
|
|
11
|
+
id: "cel",
|
|
12
|
+
label: "CEL",
|
|
13
|
+
icon: UiFunction,
|
|
14
|
+
section: "Expressions",
|
|
15
|
+
editorLanguage: "cel",
|
|
16
|
+
evalLanguage: "cel",
|
|
17
|
+
catalogue: "cel",
|
|
18
|
+
description: "Common Expression Language, with gomplate's k8s, aws and math helpers",
|
|
19
|
+
editorRows: EXPRESSION_ROWS
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "jsonpath",
|
|
23
|
+
label: "JSONPath",
|
|
24
|
+
icon: UiBraces,
|
|
25
|
+
section: "Expressions",
|
|
26
|
+
editorLanguage: "jsonpath",
|
|
27
|
+
evalLanguage: "jsonpath",
|
|
28
|
+
description: "JSONPath, as evaluated by ojg",
|
|
29
|
+
editorRows: EXPRESSION_ROWS
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "javascript",
|
|
33
|
+
label: "JavaScript",
|
|
34
|
+
icon: UiCode2,
|
|
35
|
+
section: "Expressions",
|
|
36
|
+
editorLanguage: "javascript",
|
|
37
|
+
evalLanguage: "javascript",
|
|
38
|
+
description: "JavaScript, as evaluated by otto",
|
|
39
|
+
editorRows: EXPRESSION_ROWS
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "gomplate",
|
|
43
|
+
label: "Go template",
|
|
44
|
+
icon: UiFileCode,
|
|
45
|
+
section: "Templates",
|
|
46
|
+
editorLanguage: "gomplate",
|
|
47
|
+
evalLanguage: "gotemplate",
|
|
48
|
+
catalogue: "gotemplate",
|
|
49
|
+
description: "Go text/template with gomplate's function library",
|
|
50
|
+
editorRows: TEMPLATE_ROWS
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "yaml-gomplate",
|
|
54
|
+
label: "YAML + template",
|
|
55
|
+
icon: UiFileText,
|
|
56
|
+
section: "Templates",
|
|
57
|
+
editorLanguage: "yaml-gomplate",
|
|
58
|
+
evalLanguage: "gotemplate",
|
|
59
|
+
catalogue: "gotemplate",
|
|
60
|
+
description: "YAML with templates embedded in it, as real configuration is written",
|
|
61
|
+
editorRows: TEMPLATE_ROWS
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: "json-gomplate",
|
|
65
|
+
label: "JSON + template",
|
|
66
|
+
icon: UiFileJson,
|
|
67
|
+
section: "Templates",
|
|
68
|
+
editorLanguage: "json-gomplate",
|
|
69
|
+
evalLanguage: "gotemplate",
|
|
70
|
+
catalogue: "gotemplate",
|
|
71
|
+
description: "JSON with templates embedded in it",
|
|
72
|
+
editorRows: TEMPLATE_ROWS
|
|
73
|
+
}
|
|
74
|
+
];
|
|
75
|
+
const SECTIONS = ["Expressions", "Templates"];
|
|
76
|
+
function languageById(id, offered = LANGUAGES) {
|
|
77
|
+
const found = offered.find((language) => language.id === id);
|
|
78
|
+
if (found) return found;
|
|
79
|
+
const [first] = offered;
|
|
80
|
+
if (!first) throw new Error("no playground languages were offered");
|
|
81
|
+
return first;
|
|
82
|
+
}
|
|
83
|
+
export {
|
|
84
|
+
LANGUAGES,
|
|
85
|
+
SECTIONS,
|
|
86
|
+
languageById
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=languages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.js","sources":["../../../src/expressions/playground/languages.ts"],"sourcesContent":["import type { LanguageId } from \"../lang/index.ts\";\nimport {\n UiBraces,\n UiCode2,\n UiFileCode,\n UiFileJson,\n UiFileText,\n UiFunction,\n} from \"../../icons\";\nimport type { StaticIconComponent } from \"../../data/Icon\";\n\n/** An evaluator on the Go side. */\nexport type EvalLanguage = \"cel\" | \"gotemplate\" | \"jsonpath\" | \"javascript\";\n\n/** One entry in the playground's language rail. */\nexport interface PlaygroundLanguage {\n id: string;\n label: string;\n icon: StaticIconComponent;\n /** Rail section this language belongs to. */\n section: \"Expressions\" | \"Templates\";\n /** Monaco language for the source editor. */\n editorLanguage: LanguageId | \"javascript\";\n /** Which evaluator the Go server should run. */\n evalLanguage: EvalLanguage;\n description: string;\n /**\n * Which half of the catalogue the Functions tab browses, if either. JSONPath\n * and JavaScript have no generated catalogue, so they get no tab rather than\n * an empty one.\n */\n catalogue?: \"cel\" | \"gotemplate\";\n /**\n * Rows the expression editor opens at, before the reader drags the divider.\n *\n * An expression is a line or two, so five rows leaves the input document the\n * rest of the pane. A template is a whole document, and starting it at five\n * rows would hide most of what is being written.\n */\n editorRows: number;\n}\n\n/** Default rows for a language whose source is an expression. */\nconst EXPRESSION_ROWS = 5;\n\n/** Default rows for a language whose source is a document. */\nconst TEMPLATE_ROWS = 14;\n\nexport const LANGUAGES: PlaygroundLanguage[] = [\n {\n id: \"cel\",\n label: \"CEL\",\n icon: UiFunction,\n section: \"Expressions\",\n editorLanguage: \"cel\",\n evalLanguage: \"cel\",\n catalogue: \"cel\",\n description:\n \"Common Expression Language, with gomplate's k8s, aws and math helpers\",\n editorRows: EXPRESSION_ROWS,\n },\n {\n id: \"jsonpath\",\n label: \"JSONPath\",\n icon: UiBraces,\n section: \"Expressions\",\n editorLanguage: \"jsonpath\",\n evalLanguage: \"jsonpath\",\n description: \"JSONPath, as evaluated by ojg\",\n editorRows: EXPRESSION_ROWS,\n },\n {\n id: \"javascript\",\n label: \"JavaScript\",\n icon: UiCode2,\n section: \"Expressions\",\n editorLanguage: \"javascript\",\n evalLanguage: \"javascript\",\n description: \"JavaScript, as evaluated by otto\",\n editorRows: EXPRESSION_ROWS,\n },\n {\n id: \"gomplate\",\n label: \"Go template\",\n icon: UiFileCode,\n section: \"Templates\",\n editorLanguage: \"gomplate\",\n evalLanguage: \"gotemplate\",\n catalogue: \"gotemplate\",\n description: \"Go text/template with gomplate's function library\",\n editorRows: TEMPLATE_ROWS,\n },\n {\n id: \"yaml-gomplate\",\n label: \"YAML + template\",\n icon: UiFileText,\n section: \"Templates\",\n editorLanguage: \"yaml-gomplate\",\n evalLanguage: \"gotemplate\",\n catalogue: \"gotemplate\",\n description:\n \"YAML with templates embedded in it, as real configuration is written\",\n editorRows: TEMPLATE_ROWS,\n },\n {\n id: \"json-gomplate\",\n label: \"JSON + template\",\n icon: UiFileJson,\n section: \"Templates\",\n editorLanguage: \"json-gomplate\",\n evalLanguage: \"gotemplate\",\n catalogue: \"gotemplate\",\n description: \"JSON with templates embedded in it\",\n editorRows: TEMPLATE_ROWS,\n },\n];\n\n/** Rail section order. */\nexport const SECTIONS = [\"Expressions\", \"Templates\"] as const;\n\n/**\n * Resolves a language id against the offered list.\n *\n * Falls back to the first offered language rather than throwing: the id can\n * come from a URL an author edited or a bookmark from before a host narrowed\n * the list, and losing the page to an exception is the worse outcome.\n */\nexport function languageById(\n id: string,\n offered: PlaygroundLanguage[] = LANGUAGES,\n): PlaygroundLanguage {\n const found = offered.find((language) => language.id === id);\n if (found) return found;\n\n const [first] = offered;\n if (!first) throw new Error(\"no playground languages were offered\");\n return first;\n}\n"],"names":[],"mappings":";;;;;;AA2CA,MAAM,kBAAkB;AAGxB,MAAM,gBAAgB;AAEf,MAAM,YAAkC;AAAA,EAC7C;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aACE;AAAA,IACF,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aACE;AAAA,IACF,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAEhB;AAGO,MAAM,WAAW,CAAC,eAAe,WAAW;AAS5C,SAAS,aACd,IACA,UAAgC,WACZ;AACpB,QAAM,QAAQ,QAAQ,KAAK,CAAC,aAAa,SAAS,OAAO,EAAE;AAC3D,MAAI,MAAO,QAAO;AAElB,QAAM,CAAC,KAAK,IAAI;AAChB,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,sCAAsC;AAClE,SAAO;AACT;"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const jsonPathTree = require("../../../components/jsonPathTree.cjs");
|
|
6
|
+
const ObjectGraph = require("../../../data/ObjectGraph.cjs");
|
|
7
|
+
const graphNodes = require("./graphNodes.cjs");
|
|
8
|
+
const environment = require("../../lang/environment.cjs");
|
|
9
|
+
function GraphPanel({
|
|
10
|
+
document,
|
|
11
|
+
languageId,
|
|
12
|
+
onInsert
|
|
13
|
+
}) {
|
|
14
|
+
const [selectedId, setSelectedId] = react.useState();
|
|
15
|
+
const [note, setNote] = react.useState();
|
|
16
|
+
const tree = react.useMemo(
|
|
17
|
+
() => document === void 0 || document === null ? null : jsonPathTree.createLazyJSONPathTree(document, { keyPrefix: "input" }),
|
|
18
|
+
[document]
|
|
19
|
+
);
|
|
20
|
+
const roots = react.useMemo(
|
|
21
|
+
() => tree ? tree.roots.map(graphNodes.toGraphNode) : [],
|
|
22
|
+
[tree]
|
|
23
|
+
);
|
|
24
|
+
if (!tree) {
|
|
25
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center p-6 text-center text-sm text-muted-foreground", children: "Nothing to show yet — write a YAML or JSON document in the input pane and its shape appears here." });
|
|
26
|
+
}
|
|
27
|
+
const select = (node) => {
|
|
28
|
+
setSelectedId(node.id);
|
|
29
|
+
const segments = node.path ? jsonPathTree.literalSegments(node.path) : void 0;
|
|
30
|
+
if (!segments) {
|
|
31
|
+
setNote("That row has no addressable path.");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const expression = environment.pathExpression(languageId, segments);
|
|
35
|
+
if (expression === null) {
|
|
36
|
+
setNote(
|
|
37
|
+
"A go template reaches a list element or a non-identifier key through `index`, which is a call rather than a path — so there is nothing to insert."
|
|
38
|
+
);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (expression === "") {
|
|
42
|
+
setNote(
|
|
43
|
+
"The whole document has no name in this language — pick a key under it."
|
|
44
|
+
);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
setNote(void 0);
|
|
48
|
+
onInsert(expression);
|
|
49
|
+
};
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [
|
|
51
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-auto p-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
52
|
+
ObjectGraph.ObjectGraph,
|
|
53
|
+
{
|
|
54
|
+
roots,
|
|
55
|
+
showControls: true,
|
|
56
|
+
defaultOpenDepth: 2,
|
|
57
|
+
...selectedId ? { selectedId } : {},
|
|
58
|
+
onNodeSelect: select,
|
|
59
|
+
loadChildren: async (node) => {
|
|
60
|
+
var _a;
|
|
61
|
+
const source = (_a = node.metadata) == null ? void 0 : _a.node;
|
|
62
|
+
if (!source) return [];
|
|
63
|
+
return (await tree.loadChildren(source)).map(graphNodes.toGraphNode);
|
|
64
|
+
},
|
|
65
|
+
empty: "The document is empty."
|
|
66
|
+
}
|
|
67
|
+
) }),
|
|
68
|
+
/* @__PURE__ */ jsxRuntime.jsx("footer", { className: "shrink-0 border-t border-border px-4 py-2 text-xs text-muted-foreground", children: note ?? "Click a key to insert its path at the cursor." })
|
|
69
|
+
] });
|
|
70
|
+
}
|
|
71
|
+
exports.GraphPanel = GraphPanel;
|
|
72
|
+
//# sourceMappingURL=GraphPanel.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphPanel.cjs","sources":["../../../../src/expressions/playground/panels/GraphPanel.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport {\n createLazyJSONPathTree,\n literalSegments,\n type JSONPathNode,\n type LazyJSONPathTree,\n} from \"../../../components/jsonPathTree\";\nimport { ObjectGraph } from \"../../../data/ObjectGraph\";\nimport { pathExpression } from \"../../lang/index.ts\";\nimport { toGraphNode } from \"./graphNodes.ts\";\nimport type { GraphNode } from \"./graphNodes.ts\";\n\ninterface GraphPanelProps {\n /** The parsed input document, or undefined when there is nothing to show. */\n document: unknown;\n /** Monaco language id, which decides the syntax a click inserts. */\n languageId: string;\n /** Writes an expression at the source editor's cursor. */\n onInsert: (expression: string) => void;\n}\n\n/**\n * The shape of the document being evaluated against.\n *\n * The input pane shows the document as text; this shows it as paths. Clicking a\n * row writes that path into the expression, in the syntax of the language being\n * written, which is the step that otherwise means reading YAML and retyping it\n * by hand.\n */\nexport function GraphPanel({\n document,\n languageId,\n onInsert,\n}: GraphPanelProps) {\n const [selectedId, setSelectedId] = useState<string>();\n const [note, setNote] = useState<string>();\n\n const tree = useMemo<LazyJSONPathTree | null>(\n () =>\n document === undefined || document === null\n ? null\n : createLazyJSONPathTree(document, { keyPrefix: \"input\" }),\n [document],\n );\n\n const roots = useMemo(\n () => (tree ? tree.roots.map(toGraphNode) : []),\n [tree],\n );\n\n if (!tree) {\n return (\n <div className=\"flex h-full items-center justify-center p-6 text-center text-sm text-muted-foreground\">\n Nothing to show yet — write a YAML or JSON document in the input pane\n and its shape appears here.\n </div>\n );\n }\n\n const select = (node: GraphNode) => {\n setSelectedId(node.id);\n const segments = node.path ? literalSegments(node.path) : undefined;\n if (!segments) {\n setNote(\"That row has no addressable path.\");\n return;\n }\n const expression = pathExpression(languageId, segments);\n if (expression === null) {\n setNote(\n \"A go template reaches a list element or a non-identifier key through `index`, \" +\n \"which is a call rather than a path — so there is nothing to insert.\",\n );\n return;\n }\n if (expression === \"\") {\n setNote(\n \"The whole document has no name in this language — pick a key under it.\",\n );\n return;\n }\n setNote(undefined);\n onInsert(expression);\n };\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <div className=\"min-h-0 flex-1 overflow-auto p-2\">\n <ObjectGraph\n roots={roots}\n showControls\n defaultOpenDepth={2}\n {...(selectedId ? { selectedId } : {})}\n onNodeSelect={select}\n loadChildren={async (node) => {\n const source = node.metadata?.node as JSONPathNode | undefined;\n if (!source) return [];\n return (await tree.loadChildren(source)).map(toGraphNode);\n }}\n empty=\"The document is empty.\"\n />\n </div>\n <footer className=\"shrink-0 border-t border-border px-4 py-2 text-xs text-muted-foreground\">\n {note ?? \"Click a key to insert its path at the cursor.\"}\n </footer>\n </div>\n );\n}\n"],"names":["useState","useMemo","createLazyJSONPathTree","toGraphNode","jsx","literalSegments","pathExpression","jsxs","ObjectGraph"],"mappings":";;;;;;;;AA6BO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,YAAY,aAAa,IAAIA,eAAA;AACpC,QAAM,CAAC,MAAM,OAAO,IAAIA,eAAA;AAExB,QAAM,OAAOC,MAAAA;AAAAA,IACX,MACE,aAAa,UAAa,aAAa,OACnC,OACAC,aAAAA,uBAAuB,UAAU,EAAE,WAAW,SAAS;AAAA,IAC7D,CAAC,QAAQ;AAAA,EAAA;AAGX,QAAM,QAAQD,MAAAA;AAAAA,IACZ,MAAO,OAAO,KAAK,MAAM,IAAIE,WAAAA,WAAW,IAAI,CAAA;AAAA,IAC5C,CAAC,IAAI;AAAA,EAAA;AAGP,MAAI,CAAC,MAAM;AACT,WACEC,2BAAAA,IAAC,OAAA,EAAI,WAAU,yFAAwF,UAAA,qGAGvG;AAAA,EAEJ;AAEA,QAAM,SAAS,CAAC,SAAoB;AAClC,kBAAc,KAAK,EAAE;AACrB,UAAM,WAAW,KAAK,OAAOC,aAAAA,gBAAgB,KAAK,IAAI,IAAI;AAC1D,QAAI,CAAC,UAAU;AACb,cAAQ,mCAAmC;AAC3C;AAAA,IACF;AACA,UAAM,aAAaC,YAAAA,eAAe,YAAY,QAAQ;AACtD,QAAI,eAAe,MAAM;AACvB;AAAA,QACE;AAAA,MAAA;AAGF;AAAA,IACF;AACA,QAAI,eAAe,IAAI;AACrB;AAAA,QACE;AAAA,MAAA;AAEF;AAAA,IACF;AACA,YAAQ,MAAS;AACjB,aAAS,UAAU;AAAA,EACrB;AAEA,SACEC,2BAAAA,KAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,IAAAH,2BAAAA,IAAC,OAAA,EAAI,WAAU,oCACb,UAAAA,2BAAAA;AAAAA,MAACI,YAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,cAAY;AAAA,QACZ,kBAAkB;AAAA,QACjB,GAAI,aAAa,EAAE,WAAA,IAAe,CAAA;AAAA,QACnC,cAAc;AAAA,QACd,cAAc,OAAO,SAAS;;AAC5B,gBAAM,UAAS,UAAK,aAAL,mBAAe;AAC9B,cAAI,CAAC,OAAQ,QAAO,CAAA;AACpB,kBAAQ,MAAM,KAAK,aAAa,MAAM,GAAG,IAAIL,sBAAW;AAAA,QAC1D;AAAA,QACA,OAAM;AAAA,MAAA;AAAA,IAAA,GAEV;AAAA,IACAC,2BAAAA,IAAC,UAAA,EAAO,WAAU,2EACf,kBAAQ,gDAAA,CACX;AAAA,EAAA,GACF;AAEJ;;"}
|