@flanksource/clicky-ui 0.3.33 → 0.3.35
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 +3 -0
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +3 -0
- package/dist/ai.js.map +1 -1
- package/dist/comments/CommentCard.cjs +9 -8
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts +1 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +2 -1
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentCardParts.cjs +2 -1
- package/dist/comments/CommentCardParts.cjs.map +1 -1
- package/dist/comments/CommentCardParts.d.ts.map +1 -1
- package/dist/comments/CommentCardParts.js +2 -1
- package/dist/comments/CommentCardParts.js.map +1 -1
- package/dist/comments/CommentProvider.d.ts +1 -1
- package/dist/comments/CommentSidePanel.cjs +3 -2
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.d.ts.map +1 -1
- package/dist/comments/CommentSidePanel.js +2 -1
- package/dist/comments/CommentSidePanel.js.map +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/comments/comment-utils.cjs +0 -27
- package/dist/comments/comment-utils.cjs.map +1 -1
- package/dist/comments/comment-utils.d.ts +1 -7
- package/dist/comments/comment-utils.d.ts.map +1 -1
- package/dist/comments/comment-utils.js +0 -27
- package/dist/comments/comment-utils.js.map +1 -1
- package/dist/comments.cjs +4 -3
- package/dist/comments.cjs.map +1 -1
- package/dist/comments.d.ts +1 -0
- package/dist/comments.d.ts.map +1 -1
- package/dist/comments.js +2 -1
- package/dist/comments.js.map +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/RangeSlider.cjs +15 -1
- package/dist/components/RangeSlider.cjs.map +1 -1
- package/dist/components/RangeSlider.d.ts.map +1 -1
- package/dist/components/RangeSlider.js +15 -1
- package/dist/components/RangeSlider.js.map +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/TaskManager.cjs +9 -17
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +9 -17
- 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 +5 -26
- 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 +5 -26
- package/dist/data/TaskProcessDetails.js.map +1 -1
- package/dist/data/TaskProgress.cjs +24 -15
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +2 -1
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +24 -15
- 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 +14 -1
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- 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.cjs +147 -0
- package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.approvals.d.ts +21 -0
- package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.approvals.js +147 -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 +47 -0
- package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panel-parts.d.ts +20 -0
- package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panel-parts.js +47 -0
- package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
- package/dist/data/ai/SessionInspector.panels.cjs +40 -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 +12 -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 +2 -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/badge-variants.d.ts +2 -2
- 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-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-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/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 +12 -3
- 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 +12 -3
- 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 +4 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -1
- 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/lib/comment-stage.cjs +31 -0
- package/dist/lib/comment-stage.cjs.map +1 -0
- package/dist/lib/comment-stage.d.ts +8 -0
- package/dist/lib/comment-stage.d.ts.map +1 -0
- package/dist/lib/comment-stage.js +31 -0
- package/dist/lib/comment-stage.js.map +1 -0
- 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/dist/utils.cjs +4 -0
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +4 -0
- package/dist/utils.js.map +1 -1
- package/package.json +21 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface GraphPanelProps {
|
|
2
|
+
/** The parsed input document, or undefined when there is nothing to show. */
|
|
3
|
+
document: unknown;
|
|
4
|
+
/** Monaco language id, which decides the syntax a click inserts. */
|
|
5
|
+
languageId: string;
|
|
6
|
+
/** Writes an expression at the source editor's cursor. */
|
|
7
|
+
onInsert: (expression: string) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The shape of the document being evaluated against.
|
|
11
|
+
*
|
|
12
|
+
* The input pane shows the document as text; this shows it as paths. Clicking a
|
|
13
|
+
* row writes that path into the expression, in the syntax of the language being
|
|
14
|
+
* written, which is the step that otherwise means reading YAML and retyping it
|
|
15
|
+
* by hand.
|
|
16
|
+
*/
|
|
17
|
+
export declare function GraphPanel({ document, languageId, onInsert, }: GraphPanelProps): import("react").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=GraphPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphPanel.d.ts","sourceRoot":"","sources":["../../../../src/expressions/playground/panels/GraphPanel.tsx"],"names":[],"mappings":"AAYA,UAAU,eAAe;IACvB,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,EAAE,eAAe,+BAyEjB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useMemo } from "react";
|
|
3
|
+
import { createLazyJSONPathTree, literalSegments } from "../../../components/jsonPathTree.js";
|
|
4
|
+
import { ObjectGraph } from "../../../data/ObjectGraph.js";
|
|
5
|
+
import { toGraphNode } from "./graphNodes.js";
|
|
6
|
+
import { pathExpression } from "../../lang/environment.js";
|
|
7
|
+
function GraphPanel({
|
|
8
|
+
document,
|
|
9
|
+
languageId,
|
|
10
|
+
onInsert
|
|
11
|
+
}) {
|
|
12
|
+
const [selectedId, setSelectedId] = useState();
|
|
13
|
+
const [note, setNote] = useState();
|
|
14
|
+
const tree = useMemo(
|
|
15
|
+
() => document === void 0 || document === null ? null : createLazyJSONPathTree(document, { keyPrefix: "input" }),
|
|
16
|
+
[document]
|
|
17
|
+
);
|
|
18
|
+
const roots = useMemo(
|
|
19
|
+
() => tree ? tree.roots.map(toGraphNode) : [],
|
|
20
|
+
[tree]
|
|
21
|
+
);
|
|
22
|
+
if (!tree) {
|
|
23
|
+
return /* @__PURE__ */ 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." });
|
|
24
|
+
}
|
|
25
|
+
const select = (node) => {
|
|
26
|
+
setSelectedId(node.id);
|
|
27
|
+
const segments = node.path ? literalSegments(node.path) : void 0;
|
|
28
|
+
if (!segments) {
|
|
29
|
+
setNote("That row has no addressable path.");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const expression = pathExpression(languageId, segments);
|
|
33
|
+
if (expression === null) {
|
|
34
|
+
setNote(
|
|
35
|
+
"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."
|
|
36
|
+
);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (expression === "") {
|
|
40
|
+
setNote(
|
|
41
|
+
"The whole document has no name in this language — pick a key under it."
|
|
42
|
+
);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
setNote(void 0);
|
|
46
|
+
onInsert(expression);
|
|
47
|
+
};
|
|
48
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [
|
|
49
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto p-2", children: /* @__PURE__ */ jsx(
|
|
50
|
+
ObjectGraph,
|
|
51
|
+
{
|
|
52
|
+
roots,
|
|
53
|
+
showControls: true,
|
|
54
|
+
defaultOpenDepth: 2,
|
|
55
|
+
...selectedId ? { selectedId } : {},
|
|
56
|
+
onNodeSelect: select,
|
|
57
|
+
loadChildren: async (node) => {
|
|
58
|
+
var _a;
|
|
59
|
+
const source = (_a = node.metadata) == null ? void 0 : _a.node;
|
|
60
|
+
if (!source) return [];
|
|
61
|
+
return (await tree.loadChildren(source)).map(toGraphNode);
|
|
62
|
+
},
|
|
63
|
+
empty: "The document is empty."
|
|
64
|
+
}
|
|
65
|
+
) }),
|
|
66
|
+
/* @__PURE__ */ 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." })
|
|
67
|
+
] });
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
GraphPanel
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=GraphPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphPanel.js","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":[],"mappings":";;;;;;AA6BO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAA;AACpC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAA;AAExB,QAAM,OAAO;AAAA,IACX,MACE,aAAa,UAAa,aAAa,OACnC,OACA,uBAAuB,UAAU,EAAE,WAAW,SAAS;AAAA,IAC7D,CAAC,QAAQ;AAAA,EAAA;AAGX,QAAM,QAAQ;AAAA,IACZ,MAAO,OAAO,KAAK,MAAM,IAAI,WAAW,IAAI,CAAA;AAAA,IAC5C,CAAC,IAAI;AAAA,EAAA;AAGP,MAAI,CAAC,MAAM;AACT,WACE,oBAAC,OAAA,EAAI,WAAU,yFAAwF,UAAA,qGAGvG;AAAA,EAEJ;AAEA,QAAM,SAAS,CAAC,SAAoB;AAClC,kBAAc,KAAK,EAAE;AACrB,UAAM,WAAW,KAAK,OAAO,gBAAgB,KAAK,IAAI,IAAI;AAC1D,QAAI,CAAC,UAAU;AACb,cAAQ,mCAAmC;AAC3C;AAAA,IACF;AACA,UAAM,aAAa,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,SACE,qBAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,IAAA,oBAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,MAAC;AAAA,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,IAAI,WAAW;AAAA,QAC1D;AAAA,QACA,OAAM;AAAA,MAAA;AAAA,IAAA,GAEV;AAAA,IACA,oBAAC,UAAA,EAAO,WAAU,2EACf,kBAAQ,gDAAA,CACX;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const button = require("../../../components/button.cjs");
|
|
5
|
+
const Badge = require("../../../data/Badge.cjs");
|
|
6
|
+
const CodeBlock = require("../../../data/CodeBlock.cjs");
|
|
7
|
+
const JsonView = require("../../../data/JsonView.cjs");
|
|
8
|
+
const runShortcut = require("../runShortcut.cjs");
|
|
9
|
+
function ResultPanel({
|
|
10
|
+
response,
|
|
11
|
+
pending,
|
|
12
|
+
stale,
|
|
13
|
+
onRun
|
|
14
|
+
}) {
|
|
15
|
+
if (!response) {
|
|
16
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4", children: [
|
|
17
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: pending ? "Evaluating…" : "Type an expression, then run it." }),
|
|
18
|
+
stale && !pending ? /* @__PURE__ */ jsxRuntime.jsxs(button.Button, { onClick: onRun, size: "sm", className: "mt-3", children: [
|
|
19
|
+
"Run (",
|
|
20
|
+
runShortcut.RUN_SHORTCUT_LABEL,
|
|
21
|
+
")"
|
|
22
|
+
] }) : null
|
|
23
|
+
] });
|
|
24
|
+
}
|
|
25
|
+
if (response.error) {
|
|
26
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-destructive/40 bg-destructive/5 p-3", children: [
|
|
27
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-medium uppercase tracking-wide text-destructive", children: response.error.line ? `Error at line ${response.error.line}, column ${response.error.column}` : "Error" }),
|
|
28
|
+
/* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { source: response.error.message, bare: true })
|
|
29
|
+
] }) });
|
|
30
|
+
}
|
|
31
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col", children: [
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground", children: [
|
|
33
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Badge.Badge, { variant: "outline", children: [
|
|
34
|
+
response.durationMs.toFixed(2),
|
|
35
|
+
" ms"
|
|
36
|
+
] }),
|
|
37
|
+
response.type ? /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "outline", children: response.type }) : null,
|
|
38
|
+
stale ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
|
+
"button",
|
|
40
|
+
{
|
|
41
|
+
type: "button",
|
|
42
|
+
onClick: onRun,
|
|
43
|
+
className: "ml-auto rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-amber-700 hover:bg-amber-500/20 dark:text-amber-400",
|
|
44
|
+
title: `Run (${runShortcut.RUN_SHORTCUT_LABEL})`,
|
|
45
|
+
children: "Out of date — run again"
|
|
46
|
+
}
|
|
47
|
+
) : null
|
|
48
|
+
] }),
|
|
49
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
50
|
+
"div",
|
|
51
|
+
{
|
|
52
|
+
className: `min-h-0 flex-1 overflow-auto p-4 ${stale ? "opacity-50" : ""}`,
|
|
53
|
+
children: isStructured(response.value) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
54
|
+
/* @__PURE__ */ jsxRuntime.jsx(JsonView.JsonView, { data: response.value, defaultOpenDepth: 3 }),
|
|
55
|
+
/* @__PURE__ */ jsxRuntime.jsxs("details", { className: "mt-4", children: [
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: "Rendered string" }),
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { source: response.result, bare: true, copyable: false }) })
|
|
58
|
+
] })
|
|
59
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
60
|
+
CodeBlock.CodeBlock,
|
|
61
|
+
{
|
|
62
|
+
source: response.result || "(empty)",
|
|
63
|
+
language: languageOf(response.result),
|
|
64
|
+
copyable: true
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
] });
|
|
70
|
+
}
|
|
71
|
+
function isStructured(value) {
|
|
72
|
+
return typeof value === "object" && value !== null;
|
|
73
|
+
}
|
|
74
|
+
function languageOf(result) {
|
|
75
|
+
const trimmed = result.trim();
|
|
76
|
+
if (!trimmed) return void 0;
|
|
77
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("[")) return "json";
|
|
78
|
+
if (/^[A-Za-z_][\w.-]*:\s/m.test(trimmed)) return "yaml";
|
|
79
|
+
return void 0;
|
|
80
|
+
}
|
|
81
|
+
exports.ResultPanel = ResultPanel;
|
|
82
|
+
//# sourceMappingURL=ResultPanel.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultPanel.cjs","sources":["../../../../src/expressions/playground/panels/ResultPanel.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { Badge } from \"../../../data/Badge\";\nimport { CodeBlock } from \"../../../data/CodeBlock\";\nimport { JsonView } from \"../../../data/JsonView\";\nimport type { EvalResponse } from \"../api.ts\";\nimport { RUN_SHORTCUT_LABEL } from \"../runShortcut\";\n\ninterface ResultPanelProps {\n response: EvalResponse | null;\n pending: boolean;\n /** The shown result predates the current source or input. */\n stale: boolean;\n onRun: () => void;\n}\n\nexport function ResultPanel({\n response,\n pending,\n stale,\n onRun,\n}: ResultPanelProps) {\n if (!response) {\n return (\n <div className=\"p-4\">\n <p className=\"text-sm text-muted-foreground\">\n {pending ? \"Evaluating…\" : \"Type an expression, then run it.\"}\n </p>\n {stale && !pending ? (\n <Button onClick={onRun} size=\"sm\" className=\"mt-3\">\n Run ({RUN_SHORTCUT_LABEL})\n </Button>\n ) : null}\n </div>\n );\n }\n\n if (response.error) {\n return (\n <div className=\"p-4\">\n <div className=\"rounded-md border border-destructive/40 bg-destructive/5 p-3\">\n <p className=\"mb-2 text-xs font-medium uppercase tracking-wide text-destructive\">\n {response.error.line\n ? `Error at line ${response.error.line}, column ${response.error.column}`\n : \"Error\"}\n </p>\n <CodeBlock source={response.error.message} bare />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex h-full flex-col\">\n <div className=\"flex items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground\">\n <Badge variant=\"outline\">{response.durationMs.toFixed(2)} ms</Badge>\n {response.type ? (\n <Badge variant=\"outline\">{response.type}</Badge>\n ) : null}\n {/* Without this, a result that no longer matches what is on screen is\n indistinguishable from one that does. */}\n {stale ? (\n <button\n type=\"button\"\n onClick={onRun}\n className=\"ml-auto rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-amber-700 hover:bg-amber-500/20 dark:text-amber-400\"\n title={`Run (${RUN_SHORTCUT_LABEL})`}\n >\n Out of date — run again\n </button>\n ) : null}\n </div>\n\n <div\n className={`min-h-0 flex-1 overflow-auto p-4 ${stale ? \"opacity-50\" : \"\"}`}\n >\n {/* The rendered string is what a gomplate caller receives. A structured\n result is more readable as a tree, so hand those to JsonView and\n keep the raw rendering below it. */}\n {isStructured(response.value) ? (\n <>\n <JsonView data={response.value} defaultOpenDepth={3} />\n <details className=\"mt-4\">\n <summary className=\"cursor-pointer text-xs text-muted-foreground\">\n Rendered string\n </summary>\n <div className=\"mt-2\">\n <CodeBlock source={response.result} bare copyable={false} />\n </div>\n </details>\n </>\n ) : (\n <CodeBlock\n source={response.result || \"(empty)\"}\n language={languageOf(response.result)}\n copyable\n />\n )}\n </div>\n </div>\n );\n}\n\nfunction isStructured(value: unknown): boolean {\n return typeof value === \"object\" && value !== null;\n}\n\n/**\n * Templates render whole documents, so highlight the output when it is\n * recognisably YAML or JSON rather than showing a wall of grey.\n */\nfunction languageOf(result: string): string | undefined {\n const trimmed = result.trim();\n if (!trimmed) return undefined;\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) return \"json\";\n if (/^[A-Za-z_][\\w.-]*:\\s/m.test(trimmed)) return \"yaml\";\n return undefined;\n}\n"],"names":["jsxs","jsx","Button","RUN_SHORTCUT_LABEL","CodeBlock","Badge","Fragment","JsonView"],"mappings":";;;;;;;;AAeO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,MAAI,CAAC,UAAU;AACb,WACEA,2BAAAA,KAAC,OAAA,EAAI,WAAU,OACb,UAAA;AAAA,MAAAC,+BAAC,KAAA,EAAE,WAAU,iCACV,UAAA,UAAU,gBAAgB,oCAC7B;AAAA,MACC,SAAS,CAAC,UACTD,2BAAAA,KAACE,OAAAA,QAAA,EAAO,SAAS,OAAO,MAAK,MAAK,WAAU,QAAO,UAAA;AAAA,QAAA;AAAA,QAC3CC,YAAAA;AAAAA,QAAmB;AAAA,MAAA,EAAA,CAC3B,IACE;AAAA,IAAA,GACN;AAAA,EAEJ;AAEA,MAAI,SAAS,OAAO;AAClB,0CACG,OAAA,EAAI,WAAU,OACb,UAAAH,2BAAAA,KAAC,OAAA,EAAI,WAAU,gEACb,UAAA;AAAA,MAAAC,+BAAC,KAAA,EAAE,WAAU,qEACV,UAAA,SAAS,MAAM,OACZ,iBAAiB,SAAS,MAAM,IAAI,YAAY,SAAS,MAAM,MAAM,KACrE,SACN;AAAA,qCACCG,UAAAA,WAAA,EAAU,QAAQ,SAAS,MAAM,SAAS,MAAI,KAAA,CAAC;AAAA,IAAA,EAAA,CAClD,EAAA,CACF;AAAA,EAEJ;AAEA,SACEJ,2BAAAA,KAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,IAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,0FACb,UAAA;AAAA,MAAAA,2BAAAA,KAACK,MAAAA,OAAA,EAAM,SAAQ,WAAW,UAAA;AAAA,QAAA,SAAS,WAAW,QAAQ,CAAC;AAAA,QAAE;AAAA,MAAA,GAAG;AAAA,MAC3D,SAAS,OACRJ,+BAACI,MAAAA,OAAA,EAAM,SAAQ,WAAW,UAAA,SAAS,MAAK,IACtC;AAAA,MAGH,QACCJ,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,OAAO,QAAQE,YAAAA,kBAAkB;AAAA,UAClC,UAAA;AAAA,QAAA;AAAA,MAAA,IAGC;AAAA,IAAA,GACN;AAAA,IAEAF,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,oCAAoC,QAAQ,eAAe,EAAE;AAAA,QAKvE,UAAA,aAAa,SAAS,KAAK,IAC1BD,gCAAAM,WAAAA,UAAA,EACE,UAAA;AAAA,UAAAL,2BAAAA,IAACM,SAAAA,UAAA,EAAS,MAAM,SAAS,OAAO,kBAAkB,GAAG;AAAA,UACrDP,2BAAAA,KAAC,WAAA,EAAQ,WAAU,QACjB,UAAA;AAAA,YAAAC,2BAAAA,IAAC,WAAA,EAAQ,WAAU,gDAA+C,UAAA,mBAElE;AAAA,YACAA,2BAAAA,IAAC,OAAA,EAAI,WAAU,QACb,UAAAA,2BAAAA,IAACG,UAAAA,WAAA,EAAU,QAAQ,SAAS,QAAQ,MAAI,MAAC,UAAU,OAAO,EAAA,CAC5D;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF,IAEAH,2BAAAA;AAAAA,UAACG,UAAAA;AAAAA,UAAA;AAAA,YACC,QAAQ,SAAS,UAAU;AAAA,YAC3B,UAAU,WAAW,SAAS,MAAM;AAAA,YACpC,UAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACV;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ;AAEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAMA,SAAS,WAAW,QAAoC;AACtD,QAAM,UAAU,OAAO,KAAA;AACvB,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,GAAG,EAAG,QAAO;AAC/D,MAAI,wBAAwB,KAAK,OAAO,EAAG,QAAO;AAClD,SAAO;AACT;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EvalResponse } from '../api.ts';
|
|
2
|
+
interface ResultPanelProps {
|
|
3
|
+
response: EvalResponse | null;
|
|
4
|
+
pending: boolean;
|
|
5
|
+
/** The shown result predates the current source or input. */
|
|
6
|
+
stale: boolean;
|
|
7
|
+
onRun: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function ResultPanel({ response, pending, stale, onRun, }: ResultPanelProps): import("react").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ResultPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultPanel.d.ts","sourceRoot":"","sources":["../../../../src/expressions/playground/panels/ResultPanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAG9C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,GACN,EAAE,gBAAgB,+BAgFlB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from "../../../components/button.js";
|
|
3
|
+
import { Badge } from "../../../data/Badge.js";
|
|
4
|
+
import { CodeBlock } from "../../../data/CodeBlock.js";
|
|
5
|
+
import { JsonView } from "../../../data/JsonView.js";
|
|
6
|
+
import { RUN_SHORTCUT_LABEL } from "../runShortcut.js";
|
|
7
|
+
function ResultPanel({
|
|
8
|
+
response,
|
|
9
|
+
pending,
|
|
10
|
+
stale,
|
|
11
|
+
onRun
|
|
12
|
+
}) {
|
|
13
|
+
if (!response) {
|
|
14
|
+
return /* @__PURE__ */ jsxs("div", { className: "p-4", children: [
|
|
15
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: pending ? "Evaluating…" : "Type an expression, then run it." }),
|
|
16
|
+
stale && !pending ? /* @__PURE__ */ jsxs(Button, { onClick: onRun, size: "sm", className: "mt-3", children: [
|
|
17
|
+
"Run (",
|
|
18
|
+
RUN_SHORTCUT_LABEL,
|
|
19
|
+
")"
|
|
20
|
+
] }) : null
|
|
21
|
+
] });
|
|
22
|
+
}
|
|
23
|
+
if (response.error) {
|
|
24
|
+
return /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsxs("div", { className: "rounded-md border border-destructive/40 bg-destructive/5 p-3", children: [
|
|
25
|
+
/* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-medium uppercase tracking-wide text-destructive", children: response.error.line ? `Error at line ${response.error.line}, column ${response.error.column}` : "Error" }),
|
|
26
|
+
/* @__PURE__ */ jsx(CodeBlock, { source: response.error.message, bare: true })
|
|
27
|
+
] }) });
|
|
28
|
+
}
|
|
29
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col", children: [
|
|
30
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground", children: [
|
|
31
|
+
/* @__PURE__ */ jsxs(Badge, { variant: "outline", children: [
|
|
32
|
+
response.durationMs.toFixed(2),
|
|
33
|
+
" ms"
|
|
34
|
+
] }),
|
|
35
|
+
response.type ? /* @__PURE__ */ jsx(Badge, { variant: "outline", children: response.type }) : null,
|
|
36
|
+
stale ? /* @__PURE__ */ jsx(
|
|
37
|
+
"button",
|
|
38
|
+
{
|
|
39
|
+
type: "button",
|
|
40
|
+
onClick: onRun,
|
|
41
|
+
className: "ml-auto rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-amber-700 hover:bg-amber-500/20 dark:text-amber-400",
|
|
42
|
+
title: `Run (${RUN_SHORTCUT_LABEL})`,
|
|
43
|
+
children: "Out of date — run again"
|
|
44
|
+
}
|
|
45
|
+
) : null
|
|
46
|
+
] }),
|
|
47
|
+
/* @__PURE__ */ jsx(
|
|
48
|
+
"div",
|
|
49
|
+
{
|
|
50
|
+
className: `min-h-0 flex-1 overflow-auto p-4 ${stale ? "opacity-50" : ""}`,
|
|
51
|
+
children: isStructured(response.value) ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
52
|
+
/* @__PURE__ */ jsx(JsonView, { data: response.value, defaultOpenDepth: 3 }),
|
|
53
|
+
/* @__PURE__ */ jsxs("details", { className: "mt-4", children: [
|
|
54
|
+
/* @__PURE__ */ jsx("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: "Rendered string" }),
|
|
55
|
+
/* @__PURE__ */ jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsx(CodeBlock, { source: response.result, bare: true, copyable: false }) })
|
|
56
|
+
] })
|
|
57
|
+
] }) : /* @__PURE__ */ jsx(
|
|
58
|
+
CodeBlock,
|
|
59
|
+
{
|
|
60
|
+
source: response.result || "(empty)",
|
|
61
|
+
language: languageOf(response.result),
|
|
62
|
+
copyable: true
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] });
|
|
68
|
+
}
|
|
69
|
+
function isStructured(value) {
|
|
70
|
+
return typeof value === "object" && value !== null;
|
|
71
|
+
}
|
|
72
|
+
function languageOf(result) {
|
|
73
|
+
const trimmed = result.trim();
|
|
74
|
+
if (!trimmed) return void 0;
|
|
75
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("[")) return "json";
|
|
76
|
+
if (/^[A-Za-z_][\w.-]*:\s/m.test(trimmed)) return "yaml";
|
|
77
|
+
return void 0;
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
ResultPanel
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=ResultPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultPanel.js","sources":["../../../../src/expressions/playground/panels/ResultPanel.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { Badge } from \"../../../data/Badge\";\nimport { CodeBlock } from \"../../../data/CodeBlock\";\nimport { JsonView } from \"../../../data/JsonView\";\nimport type { EvalResponse } from \"../api.ts\";\nimport { RUN_SHORTCUT_LABEL } from \"../runShortcut\";\n\ninterface ResultPanelProps {\n response: EvalResponse | null;\n pending: boolean;\n /** The shown result predates the current source or input. */\n stale: boolean;\n onRun: () => void;\n}\n\nexport function ResultPanel({\n response,\n pending,\n stale,\n onRun,\n}: ResultPanelProps) {\n if (!response) {\n return (\n <div className=\"p-4\">\n <p className=\"text-sm text-muted-foreground\">\n {pending ? \"Evaluating…\" : \"Type an expression, then run it.\"}\n </p>\n {stale && !pending ? (\n <Button onClick={onRun} size=\"sm\" className=\"mt-3\">\n Run ({RUN_SHORTCUT_LABEL})\n </Button>\n ) : null}\n </div>\n );\n }\n\n if (response.error) {\n return (\n <div className=\"p-4\">\n <div className=\"rounded-md border border-destructive/40 bg-destructive/5 p-3\">\n <p className=\"mb-2 text-xs font-medium uppercase tracking-wide text-destructive\">\n {response.error.line\n ? `Error at line ${response.error.line}, column ${response.error.column}`\n : \"Error\"}\n </p>\n <CodeBlock source={response.error.message} bare />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex h-full flex-col\">\n <div className=\"flex items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground\">\n <Badge variant=\"outline\">{response.durationMs.toFixed(2)} ms</Badge>\n {response.type ? (\n <Badge variant=\"outline\">{response.type}</Badge>\n ) : null}\n {/* Without this, a result that no longer matches what is on screen is\n indistinguishable from one that does. */}\n {stale ? (\n <button\n type=\"button\"\n onClick={onRun}\n className=\"ml-auto rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-amber-700 hover:bg-amber-500/20 dark:text-amber-400\"\n title={`Run (${RUN_SHORTCUT_LABEL})`}\n >\n Out of date — run again\n </button>\n ) : null}\n </div>\n\n <div\n className={`min-h-0 flex-1 overflow-auto p-4 ${stale ? \"opacity-50\" : \"\"}`}\n >\n {/* The rendered string is what a gomplate caller receives. A structured\n result is more readable as a tree, so hand those to JsonView and\n keep the raw rendering below it. */}\n {isStructured(response.value) ? (\n <>\n <JsonView data={response.value} defaultOpenDepth={3} />\n <details className=\"mt-4\">\n <summary className=\"cursor-pointer text-xs text-muted-foreground\">\n Rendered string\n </summary>\n <div className=\"mt-2\">\n <CodeBlock source={response.result} bare copyable={false} />\n </div>\n </details>\n </>\n ) : (\n <CodeBlock\n source={response.result || \"(empty)\"}\n language={languageOf(response.result)}\n copyable\n />\n )}\n </div>\n </div>\n );\n}\n\nfunction isStructured(value: unknown): boolean {\n return typeof value === \"object\" && value !== null;\n}\n\n/**\n * Templates render whole documents, so highlight the output when it is\n * recognisably YAML or JSON rather than showing a wall of grey.\n */\nfunction languageOf(result: string): string | undefined {\n const trimmed = result.trim();\n if (!trimmed) return undefined;\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) return \"json\";\n if (/^[A-Za-z_][\\w.-]*:\\s/m.test(trimmed)) return \"yaml\";\n return undefined;\n}\n"],"names":[],"mappings":";;;;;;AAeO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,MAAI,CAAC,UAAU;AACb,WACE,qBAAC,OAAA,EAAI,WAAU,OACb,UAAA;AAAA,MAAA,oBAAC,KAAA,EAAE,WAAU,iCACV,UAAA,UAAU,gBAAgB,oCAC7B;AAAA,MACC,SAAS,CAAC,UACT,qBAAC,QAAA,EAAO,SAAS,OAAO,MAAK,MAAK,WAAU,QAAO,UAAA;AAAA,QAAA;AAAA,QAC3C;AAAA,QAAmB;AAAA,MAAA,EAAA,CAC3B,IACE;AAAA,IAAA,GACN;AAAA,EAEJ;AAEA,MAAI,SAAS,OAAO;AAClB,+BACG,OAAA,EAAI,WAAU,OACb,UAAA,qBAAC,OAAA,EAAI,WAAU,gEACb,UAAA;AAAA,MAAA,oBAAC,KAAA,EAAE,WAAU,qEACV,UAAA,SAAS,MAAM,OACZ,iBAAiB,SAAS,MAAM,IAAI,YAAY,SAAS,MAAM,MAAM,KACrE,SACN;AAAA,0BACC,WAAA,EAAU,QAAQ,SAAS,MAAM,SAAS,MAAI,KAAA,CAAC;AAAA,IAAA,EAAA,CAClD,EAAA,CACF;AAAA,EAEJ;AAEA,SACE,qBAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,0FACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAM,SAAQ,WAAW,UAAA;AAAA,QAAA,SAAS,WAAW,QAAQ,CAAC;AAAA,QAAE;AAAA,MAAA,GAAG;AAAA,MAC3D,SAAS,OACR,oBAAC,OAAA,EAAM,SAAQ,WAAW,UAAA,SAAS,MAAK,IACtC;AAAA,MAGH,QACC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,OAAO,QAAQ,kBAAkB;AAAA,UAClC,UAAA;AAAA,QAAA;AAAA,MAAA,IAGC;AAAA,IAAA,GACN;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,oCAAoC,QAAQ,eAAe,EAAE;AAAA,QAKvE,UAAA,aAAa,SAAS,KAAK,IAC1B,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA,oBAAC,UAAA,EAAS,MAAM,SAAS,OAAO,kBAAkB,GAAG;AAAA,UACrD,qBAAC,WAAA,EAAQ,WAAU,QACjB,UAAA;AAAA,YAAA,oBAAC,WAAA,EAAQ,WAAU,gDAA+C,UAAA,mBAElE;AAAA,YACA,oBAAC,OAAA,EAAI,WAAU,QACb,UAAA,oBAAC,WAAA,EAAU,QAAQ,SAAS,QAAQ,MAAI,MAAC,UAAU,OAAO,EAAA,CAC5D;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF,IAEA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,QAAQ,SAAS,UAAU;AAAA,YAC3B,UAAU,WAAW,SAAS,MAAM;AAAA,YACpC,UAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACV;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ;AAEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAMA,SAAS,WAAW,QAAoC;AACtD,QAAM,UAAU,OAAO,KAAA;AACvB,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,GAAG,EAAG,QAAO;AAC/D,MAAI,wBAAwB,KAAK,OAAO,EAAG,QAAO;AAClD,SAAO;AACT;"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 Badge = require("../../../data/Badge.cjs");
|
|
6
|
+
const DataTable = require("../../../data/DataTable.cjs");
|
|
7
|
+
function SpecPanel({ flavour, spec }) {
|
|
8
|
+
const rows = react.useMemo(() => {
|
|
9
|
+
const functions = flavour === "cel" ? spec.cel.functions : spec.gotemplate.functions;
|
|
10
|
+
return functions.map(toRow);
|
|
11
|
+
}, [flavour, spec]);
|
|
12
|
+
const columns = [
|
|
13
|
+
{
|
|
14
|
+
key: "name",
|
|
15
|
+
label: "Name",
|
|
16
|
+
sortable: true,
|
|
17
|
+
grow: true,
|
|
18
|
+
cellClassName: "font-mono"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
key: "namespace",
|
|
22
|
+
label: "Namespace",
|
|
23
|
+
sortable: true,
|
|
24
|
+
filterable: true,
|
|
25
|
+
shrink: true,
|
|
26
|
+
render: (value) => value ? String(value) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "—" })
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
key: "kind",
|
|
30
|
+
label: "Call",
|
|
31
|
+
filterable: true,
|
|
32
|
+
shrink: true,
|
|
33
|
+
// `x.sum()` is legal where a bare `sum(x)` is not, and nothing else in
|
|
34
|
+
// the catalogue records that -- so it is worth a column of its own.
|
|
35
|
+
render: (value) => value === "member" ? /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "outline", children: "member only" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "global" })
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: "signature",
|
|
39
|
+
label: "Signature",
|
|
40
|
+
grow: true,
|
|
41
|
+
cellClassName: "font-mono text-muted-foreground"
|
|
42
|
+
},
|
|
43
|
+
{ key: "doc", label: "Description", grow: true }
|
|
44
|
+
];
|
|
45
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
46
|
+
DataTable.DataTable,
|
|
47
|
+
{
|
|
48
|
+
data: rows,
|
|
49
|
+
columns,
|
|
50
|
+
autoFilter: true,
|
|
51
|
+
showGlobalFilter: true,
|
|
52
|
+
globalFilterPlaceholder: "Filter functions…",
|
|
53
|
+
defaultSort: { key: "name", dir: "asc" },
|
|
54
|
+
emptyMessage: "No functions in this catalogue.",
|
|
55
|
+
className: "h-full"
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
function toRow(fn) {
|
|
60
|
+
return {
|
|
61
|
+
name: fn.name,
|
|
62
|
+
namespace: fn.namespace ?? "",
|
|
63
|
+
signature: signatureOf(fn),
|
|
64
|
+
kind: fn.memberOnly ? "member" : "global",
|
|
65
|
+
doc: fn.doc ?? ""
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function signatureOf(fn) {
|
|
69
|
+
if (fn.signature) return fn.signature;
|
|
70
|
+
const [overload] = fn.overloads ?? [];
|
|
71
|
+
if (!overload) return "";
|
|
72
|
+
const args = overload.member ? overload.args.slice(1) : overload.args;
|
|
73
|
+
return `(${args.join(", ")}) -> ${overload.result}`;
|
|
74
|
+
}
|
|
75
|
+
exports.SpecPanel = SpecPanel;
|
|
76
|
+
//# sourceMappingURL=SpecPanel.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecPanel.cjs","sources":["../../../../src/expressions/playground/panels/SpecPanel.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Badge } from \"../../../data/Badge\";\nimport { DataTable, type DataTableColumn } from \"../../../data/DataTable\";\nimport type { GomplateSpec, SpecFunction } from \"../../lang/index.ts\";\n\ninterface SpecPanelProps {\n /** Which catalogue to browse. */\n flavour: \"cel\" | \"gotemplate\";\n /** The catalogue itself — the server's when it has one, gomplate's otherwise. */\n spec: GomplateSpec;\n}\n\ninterface FunctionRow extends Record<string, unknown> {\n name: string;\n namespace: string;\n signature: string;\n kind: string;\n doc: string;\n}\n\n/**\n * Browses the generated function catalogue.\n *\n * This is the first accurate reference that exists for this fork: CEL.md\n * documents functions that live in `duty` and omits whole namespaces, while\n * docs-src carries the upstream list. What is shown here is read out of the\n * live registries, so it is what the evaluator will actually accept.\n */\nexport function SpecPanel({ flavour, spec }: SpecPanelProps) {\n const rows = useMemo(() => {\n const functions =\n flavour === \"cel\" ? spec.cel.functions : spec.gotemplate.functions;\n return functions.map(toRow);\n }, [flavour, spec]);\n\n const columns: DataTableColumn<FunctionRow>[] = [\n {\n key: \"name\",\n label: \"Name\",\n sortable: true,\n grow: true,\n cellClassName: \"font-mono\",\n },\n {\n key: \"namespace\",\n label: \"Namespace\",\n sortable: true,\n filterable: true,\n shrink: true,\n render: (value) =>\n value ? (\n String(value)\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n ),\n },\n {\n key: \"kind\",\n label: \"Call\",\n filterable: true,\n shrink: true,\n // `x.sum()` is legal where a bare `sum(x)` is not, and nothing else in\n // the catalogue records that -- so it is worth a column of its own.\n render: (value) =>\n value === \"member\" ? (\n <Badge variant=\"outline\">member only</Badge>\n ) : (\n <span className=\"text-muted-foreground\">global</span>\n ),\n },\n {\n key: \"signature\",\n label: \"Signature\",\n grow: true,\n cellClassName: \"font-mono text-muted-foreground\",\n },\n { key: \"doc\", label: \"Description\", grow: true },\n ];\n\n return (\n <DataTable\n data={rows}\n columns={columns}\n autoFilter\n showGlobalFilter\n globalFilterPlaceholder=\"Filter functions…\"\n defaultSort={{ key: \"name\", dir: \"asc\" }}\n emptyMessage=\"No functions in this catalogue.\"\n className=\"h-full\"\n />\n );\n}\n\nfunction toRow(fn: SpecFunction): FunctionRow {\n return {\n name: fn.name,\n namespace: fn.namespace ?? \"\",\n signature: signatureOf(fn),\n kind: fn.memberOnly ? \"member\" : \"global\",\n doc: fn.doc ?? \"\",\n };\n}\n\nfunction signatureOf(fn: SpecFunction): string {\n if (fn.signature) return fn.signature;\n\n const [overload] = fn.overloads ?? [];\n if (!overload) return \"\";\n\n // A member overload carries its receiver as the first argument; an author\n // writes it before the dot, not inside the parentheses.\n const args = overload.member ? overload.args.slice(1) : overload.args;\n return `(${args.join(\", \")}) -> ${overload.result}`;\n}\n"],"names":["useMemo","jsx","Badge","DataTable"],"mappings":";;;;;;AA4BO,SAAS,UAAU,EAAE,SAAS,QAAwB;AAC3D,QAAM,OAAOA,MAAAA,QAAQ,MAAM;AACzB,UAAM,YACJ,YAAY,QAAQ,KAAK,IAAI,YAAY,KAAK,WAAW;AAC3D,WAAO,UAAU,IAAI,KAAK;AAAA,EAC5B,GAAG,CAAC,SAAS,IAAI,CAAC;AAElB,QAAM,UAA0C;AAAA,IAC9C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ,CAAC,UACP,QACE,OAAO,KAAK,IAEZC,+BAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,IAAA,CAAC;AAAA,IAAA;AAAA,IAG/C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ;AAAA;AAAA;AAAA,MAGR,QAAQ,CAAC,UACP,UAAU,WACRA,2BAAAA,IAACC,MAAAA,OAAA,EAAM,SAAQ,WAAU,yBAAW,IAEpCD,2BAAAA,IAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,SAAA,CAAM;AAAA,IAAA;AAAA,IAGpD;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB,EAAE,KAAK,OAAO,OAAO,eAAe,MAAM,KAAA;AAAA,EAAK;AAGjD,SACEA,2BAAAA;AAAAA,IAACE,UAAAA;AAAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA,YAAU;AAAA,MACV,kBAAgB;AAAA,MAChB,yBAAwB;AAAA,MACxB,aAAa,EAAE,KAAK,QAAQ,KAAK,MAAA;AAAA,MACjC,cAAa;AAAA,MACb,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AAEA,SAAS,MAAM,IAA+B;AAC5C,SAAO;AAAA,IACL,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,aAAa;AAAA,IAC3B,WAAW,YAAY,EAAE;AAAA,IACzB,MAAM,GAAG,aAAa,WAAW;AAAA,IACjC,KAAK,GAAG,OAAO;AAAA,EAAA;AAEnB;AAEA,SAAS,YAAY,IAA0B;AAC7C,MAAI,GAAG,UAAW,QAAO,GAAG;AAE5B,QAAM,CAAC,QAAQ,IAAI,GAAG,aAAa,CAAA;AACnC,MAAI,CAAC,SAAU,QAAO;AAItB,QAAM,OAAO,SAAS,SAAS,SAAS,KAAK,MAAM,CAAC,IAAI,SAAS;AACjE,SAAO,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,SAAS,MAAM;AACnD;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { GomplateSpec } from '../../lang/index.ts';
|
|
2
|
+
interface SpecPanelProps {
|
|
3
|
+
/** Which catalogue to browse. */
|
|
4
|
+
flavour: "cel" | "gotemplate";
|
|
5
|
+
/** The catalogue itself — the server's when it has one, gomplate's otherwise. */
|
|
6
|
+
spec: GomplateSpec;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Browses the generated function catalogue.
|
|
10
|
+
*
|
|
11
|
+
* This is the first accurate reference that exists for this fork: CEL.md
|
|
12
|
+
* documents functions that live in `duty` and omits whole namespaces, while
|
|
13
|
+
* docs-src carries the upstream list. What is shown here is read out of the
|
|
14
|
+
* live registries, so it is what the evaluator will actually accept.
|
|
15
|
+
*/
|
|
16
|
+
export declare function SpecPanel({ flavour, spec }: SpecPanelProps): import("react").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=SpecPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecPanel.d.ts","sourceRoot":"","sources":["../../../../src/expressions/playground/panels/SpecPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAEtE,UAAU,cAAc;IACtB,iCAAiC;IACjC,OAAO,EAAE,KAAK,GAAG,YAAY,CAAC;IAC9B,iFAAiF;IACjF,IAAI,EAAE,YAAY,CAAC;CACpB;AAUD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,+BA+D1D"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { Badge } from "../../../data/Badge.js";
|
|
4
|
+
import { DataTable } from "../../../data/DataTable.js";
|
|
5
|
+
function SpecPanel({ flavour, spec }) {
|
|
6
|
+
const rows = useMemo(() => {
|
|
7
|
+
const functions = flavour === "cel" ? spec.cel.functions : spec.gotemplate.functions;
|
|
8
|
+
return functions.map(toRow);
|
|
9
|
+
}, [flavour, spec]);
|
|
10
|
+
const columns = [
|
|
11
|
+
{
|
|
12
|
+
key: "name",
|
|
13
|
+
label: "Name",
|
|
14
|
+
sortable: true,
|
|
15
|
+
grow: true,
|
|
16
|
+
cellClassName: "font-mono"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
key: "namespace",
|
|
20
|
+
label: "Namespace",
|
|
21
|
+
sortable: true,
|
|
22
|
+
filterable: true,
|
|
23
|
+
shrink: true,
|
|
24
|
+
render: (value) => value ? String(value) : /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "—" })
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: "kind",
|
|
28
|
+
label: "Call",
|
|
29
|
+
filterable: true,
|
|
30
|
+
shrink: true,
|
|
31
|
+
// `x.sum()` is legal where a bare `sum(x)` is not, and nothing else in
|
|
32
|
+
// the catalogue records that -- so it is worth a column of its own.
|
|
33
|
+
render: (value) => value === "member" ? /* @__PURE__ */ jsx(Badge, { variant: "outline", children: "member only" }) : /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "global" })
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: "signature",
|
|
37
|
+
label: "Signature",
|
|
38
|
+
grow: true,
|
|
39
|
+
cellClassName: "font-mono text-muted-foreground"
|
|
40
|
+
},
|
|
41
|
+
{ key: "doc", label: "Description", grow: true }
|
|
42
|
+
];
|
|
43
|
+
return /* @__PURE__ */ jsx(
|
|
44
|
+
DataTable,
|
|
45
|
+
{
|
|
46
|
+
data: rows,
|
|
47
|
+
columns,
|
|
48
|
+
autoFilter: true,
|
|
49
|
+
showGlobalFilter: true,
|
|
50
|
+
globalFilterPlaceholder: "Filter functions…",
|
|
51
|
+
defaultSort: { key: "name", dir: "asc" },
|
|
52
|
+
emptyMessage: "No functions in this catalogue.",
|
|
53
|
+
className: "h-full"
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
function toRow(fn) {
|
|
58
|
+
return {
|
|
59
|
+
name: fn.name,
|
|
60
|
+
namespace: fn.namespace ?? "",
|
|
61
|
+
signature: signatureOf(fn),
|
|
62
|
+
kind: fn.memberOnly ? "member" : "global",
|
|
63
|
+
doc: fn.doc ?? ""
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function signatureOf(fn) {
|
|
67
|
+
if (fn.signature) return fn.signature;
|
|
68
|
+
const [overload] = fn.overloads ?? [];
|
|
69
|
+
if (!overload) return "";
|
|
70
|
+
const args = overload.member ? overload.args.slice(1) : overload.args;
|
|
71
|
+
return `(${args.join(", ")}) -> ${overload.result}`;
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
SpecPanel
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=SpecPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecPanel.js","sources":["../../../../src/expressions/playground/panels/SpecPanel.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Badge } from \"../../../data/Badge\";\nimport { DataTable, type DataTableColumn } from \"../../../data/DataTable\";\nimport type { GomplateSpec, SpecFunction } from \"../../lang/index.ts\";\n\ninterface SpecPanelProps {\n /** Which catalogue to browse. */\n flavour: \"cel\" | \"gotemplate\";\n /** The catalogue itself — the server's when it has one, gomplate's otherwise. */\n spec: GomplateSpec;\n}\n\ninterface FunctionRow extends Record<string, unknown> {\n name: string;\n namespace: string;\n signature: string;\n kind: string;\n doc: string;\n}\n\n/**\n * Browses the generated function catalogue.\n *\n * This is the first accurate reference that exists for this fork: CEL.md\n * documents functions that live in `duty` and omits whole namespaces, while\n * docs-src carries the upstream list. What is shown here is read out of the\n * live registries, so it is what the evaluator will actually accept.\n */\nexport function SpecPanel({ flavour, spec }: SpecPanelProps) {\n const rows = useMemo(() => {\n const functions =\n flavour === \"cel\" ? spec.cel.functions : spec.gotemplate.functions;\n return functions.map(toRow);\n }, [flavour, spec]);\n\n const columns: DataTableColumn<FunctionRow>[] = [\n {\n key: \"name\",\n label: \"Name\",\n sortable: true,\n grow: true,\n cellClassName: \"font-mono\",\n },\n {\n key: \"namespace\",\n label: \"Namespace\",\n sortable: true,\n filterable: true,\n shrink: true,\n render: (value) =>\n value ? (\n String(value)\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n ),\n },\n {\n key: \"kind\",\n label: \"Call\",\n filterable: true,\n shrink: true,\n // `x.sum()` is legal where a bare `sum(x)` is not, and nothing else in\n // the catalogue records that -- so it is worth a column of its own.\n render: (value) =>\n value === \"member\" ? (\n <Badge variant=\"outline\">member only</Badge>\n ) : (\n <span className=\"text-muted-foreground\">global</span>\n ),\n },\n {\n key: \"signature\",\n label: \"Signature\",\n grow: true,\n cellClassName: \"font-mono text-muted-foreground\",\n },\n { key: \"doc\", label: \"Description\", grow: true },\n ];\n\n return (\n <DataTable\n data={rows}\n columns={columns}\n autoFilter\n showGlobalFilter\n globalFilterPlaceholder=\"Filter functions…\"\n defaultSort={{ key: \"name\", dir: \"asc\" }}\n emptyMessage=\"No functions in this catalogue.\"\n className=\"h-full\"\n />\n );\n}\n\nfunction toRow(fn: SpecFunction): FunctionRow {\n return {\n name: fn.name,\n namespace: fn.namespace ?? \"\",\n signature: signatureOf(fn),\n kind: fn.memberOnly ? \"member\" : \"global\",\n doc: fn.doc ?? \"\",\n };\n}\n\nfunction signatureOf(fn: SpecFunction): string {\n if (fn.signature) return fn.signature;\n\n const [overload] = fn.overloads ?? [];\n if (!overload) return \"\";\n\n // A member overload carries its receiver as the first argument; an author\n // writes it before the dot, not inside the parentheses.\n const args = overload.member ? overload.args.slice(1) : overload.args;\n return `(${args.join(\", \")}) -> ${overload.result}`;\n}\n"],"names":[],"mappings":";;;;AA4BO,SAAS,UAAU,EAAE,SAAS,QAAwB;AAC3D,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,YACJ,YAAY,QAAQ,KAAK,IAAI,YAAY,KAAK,WAAW;AAC3D,WAAO,UAAU,IAAI,KAAK;AAAA,EAC5B,GAAG,CAAC,SAAS,IAAI,CAAC;AAElB,QAAM,UAA0C;AAAA,IAC9C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ,CAAC,UACP,QACE,OAAO,KAAK,IAEZ,oBAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,IAAA,CAAC;AAAA,IAAA;AAAA,IAG/C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ;AAAA;AAAA;AAAA,MAGR,QAAQ,CAAC,UACP,UAAU,WACR,oBAAC,OAAA,EAAM,SAAQ,WAAU,yBAAW,IAEpC,oBAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,SAAA,CAAM;AAAA,IAAA;AAAA,IAGpD;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB,EAAE,KAAK,OAAO,OAAO,eAAe,MAAM,KAAA;AAAA,EAAK;AAGjD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA,YAAU;AAAA,MACV,kBAAgB;AAAA,MAChB,yBAAwB;AAAA,MACxB,aAAa,EAAE,KAAK,QAAQ,KAAK,MAAA;AAAA,MACjC,cAAa;AAAA,MACb,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AAEA,SAAS,MAAM,IAA+B;AAC5C,SAAO;AAAA,IACL,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,aAAa;AAAA,IAC3B,WAAW,YAAY,EAAE;AAAA,IACzB,MAAM,GAAG,aAAa,WAAW;AAAA,IACjC,KAAK,GAAG,OAAO;AAAA,EAAA;AAEnB;AAEA,SAAS,YAAY,IAA0B;AAC7C,MAAI,GAAG,UAAW,QAAO,GAAG;AAE5B,QAAM,CAAC,QAAQ,IAAI,GAAG,aAAa,CAAA;AACnC,MAAI,CAAC,SAAU,QAAO;AAItB,QAAM,OAAO,SAAS,SAAS,SAAS,KAAK,MAAM,CAAC,IAAI,SAAS;AACjE,SAAO,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,SAAS,MAAM;AACnD;"}
|
|
@@ -0,0 +1,89 @@
|
|
|
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 DataTable = require("../../../data/DataTable.cjs");
|
|
6
|
+
const monacoEditor = require("monaco-editor");
|
|
7
|
+
function _interopNamespaceDefault(e) {
|
|
8
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
9
|
+
if (e) {
|
|
10
|
+
for (const k in e) {
|
|
11
|
+
if (k !== "default") {
|
|
12
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
13
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: () => e[k]
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
n.default = e;
|
|
21
|
+
return Object.freeze(n);
|
|
22
|
+
}
|
|
23
|
+
const monacoEditor__namespace = /* @__PURE__ */ _interopNamespaceDefault(monacoEditor);
|
|
24
|
+
function TokensPanel({ source, languageId }) {
|
|
25
|
+
const rows = react.useMemo(
|
|
26
|
+
() => tokenize(source, languageId),
|
|
27
|
+
[source, languageId]
|
|
28
|
+
);
|
|
29
|
+
const columns = [
|
|
30
|
+
{
|
|
31
|
+
key: "line",
|
|
32
|
+
label: "Line",
|
|
33
|
+
align: "right",
|
|
34
|
+
shrink: true,
|
|
35
|
+
sortable: true
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: "text",
|
|
39
|
+
label: "Text",
|
|
40
|
+
grow: true,
|
|
41
|
+
cellClassName: "font-mono whitespace-pre"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: "token",
|
|
45
|
+
label: "Token",
|
|
46
|
+
sortable: true,
|
|
47
|
+
filterable: true,
|
|
48
|
+
cellClassName: "font-mono",
|
|
49
|
+
// An `identifier` is the fallback every unmatched word lands on, so it is
|
|
50
|
+
// the one class worth de-emphasising: what stands out is what matched.
|
|
51
|
+
render: (value) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
52
|
+
"span",
|
|
53
|
+
{
|
|
54
|
+
className: String(value).startsWith("identifier") ? "text-muted-foreground" : "",
|
|
55
|
+
children: String(value)
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
];
|
|
60
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
61
|
+
DataTable.DataTable,
|
|
62
|
+
{
|
|
63
|
+
data: rows,
|
|
64
|
+
columns,
|
|
65
|
+
autoFilter: true,
|
|
66
|
+
showGlobalFilter: true,
|
|
67
|
+
globalFilterPlaceholder: "Filter tokens…",
|
|
68
|
+
emptyMessage: "Nothing to tokenize.",
|
|
69
|
+
className: "h-full"
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
function tokenize(source, languageId) {
|
|
74
|
+
if (!source.trim()) return [];
|
|
75
|
+
const lines = monacoEditor__namespace.editor.tokenize(source, languageId);
|
|
76
|
+
const rows = [];
|
|
77
|
+
source.split(/\r\n|\r|\n/).forEach((line, index) => {
|
|
78
|
+
const tokens = lines[index] ?? [];
|
|
79
|
+
tokens.forEach((token, i) => {
|
|
80
|
+
const end = i + 1 < tokens.length ? tokens[i + 1].offset : line.length;
|
|
81
|
+
const text = line.slice(token.offset, end);
|
|
82
|
+
if (text.trim() === "") return;
|
|
83
|
+
rows.push({ line: index + 1, text, token: token.type });
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
return rows;
|
|
87
|
+
}
|
|
88
|
+
exports.TokensPanel = TokensPanel;
|
|
89
|
+
//# sourceMappingURL=TokensPanel.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokensPanel.cjs","sources":["../../../../src/expressions/playground/panels/TokensPanel.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { DataTable, type DataTableColumn } from \"../../../data/DataTable\";\nimport * as monaco from \"monaco-editor\";\n\ninterface TokensPanelProps {\n source: string;\n languageId: string;\n}\n\ninterface TokenRow extends Record<string, unknown> {\n line: number;\n text: string;\n token: string;\n}\n\n/**\n * Shows the token stream Monarch produces.\n *\n * This is the panel that makes a highlighting bug legible: colours tell you\n * something is off, the token stream tells you which rule matched. It is also\n * the fastest way to check a newly registered function is classified as\n * `function` rather than falling through to `identifier`.\n */\nexport function TokensPanel({ source, languageId }: TokensPanelProps) {\n const rows = useMemo(\n () => tokenize(source, languageId),\n [source, languageId],\n );\n\n const columns: DataTableColumn<TokenRow>[] = [\n {\n key: \"line\",\n label: \"Line\",\n align: \"right\",\n shrink: true,\n sortable: true,\n },\n {\n key: \"text\",\n label: \"Text\",\n grow: true,\n cellClassName: \"font-mono whitespace-pre\",\n },\n {\n key: \"token\",\n label: \"Token\",\n sortable: true,\n filterable: true,\n cellClassName: \"font-mono\",\n // An `identifier` is the fallback every unmatched word lands on, so it is\n // the one class worth de-emphasising: what stands out is what matched.\n render: (value) => (\n <span\n className={\n String(value).startsWith(\"identifier\")\n ? \"text-muted-foreground\"\n : \"\"\n }\n >\n {String(value)}\n </span>\n ),\n },\n ];\n\n return (\n <DataTable\n data={rows}\n columns={columns}\n autoFilter\n showGlobalFilter\n globalFilterPlaceholder=\"Filter tokens…\"\n emptyMessage=\"Nothing to tokenize.\"\n className=\"h-full\"\n />\n );\n}\n\nfunction tokenize(source: string, languageId: string): TokenRow[] {\n if (!source.trim()) return [];\n\n const lines = monaco.editor.tokenize(source, languageId);\n const rows: TokenRow[] = [];\n\n source.split(/\\r\\n|\\r|\\n/).forEach((line, index) => {\n const tokens = lines[index] ?? [];\n tokens.forEach((token, i) => {\n // Monaco reports a start offset only; each token runs to the next start.\n const end = i + 1 < tokens.length ? tokens[i + 1]!.offset : line.length;\n const text = line.slice(token.offset, end);\n if (text.trim() === \"\") return;\n rows.push({ line: index + 1, text, token: token.type });\n });\n });\n return rows;\n}\n"],"names":["useMemo","jsx","DataTable","monaco"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuBO,SAAS,YAAY,EAAE,QAAQ,cAAgC;AACpE,QAAM,OAAOA,MAAAA;AAAAA,IACX,MAAM,SAAS,QAAQ,UAAU;AAAA,IACjC,CAAC,QAAQ,UAAU;AAAA,EAAA;AAGrB,QAAM,UAAuC;AAAA,IAC3C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe;AAAA;AAAA;AAAA,MAGf,QAAQ,CAAC,UACPC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WACE,OAAO,KAAK,EAAE,WAAW,YAAY,IACjC,0BACA;AAAA,UAGL,iBAAO,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACf;AAAA,EAEJ;AAGF,SACEA,2BAAAA;AAAAA,IAACC,UAAAA;AAAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA,YAAU;AAAA,MACV,kBAAgB;AAAA,MAChB,yBAAwB;AAAA,MACxB,cAAa;AAAA,MACb,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AAEA,SAAS,SAAS,QAAgB,YAAgC;AAChE,MAAI,CAAC,OAAO,KAAA,UAAe,CAAA;AAE3B,QAAM,QAAQC,wBAAO,OAAO,SAAS,QAAQ,UAAU;AACvD,QAAM,OAAmB,CAAA;AAEzB,SAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,UAAU;AAClD,UAAM,SAAS,MAAM,KAAK,KAAK,CAAA;AAC/B,WAAO,QAAQ,CAAC,OAAO,MAAM;AAE3B,YAAM,MAAM,IAAI,IAAI,OAAO,SAAS,OAAO,IAAI,CAAC,EAAG,SAAS,KAAK;AACjE,YAAM,OAAO,KAAK,MAAM,MAAM,QAAQ,GAAG;AACzC,UAAI,KAAK,KAAA,MAAW,GAAI;AACxB,WAAK,KAAK,EAAE,MAAM,QAAQ,GAAG,MAAM,OAAO,MAAM,MAAM;AAAA,IACxD,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;;"}
|