@flanksource/clicky-ui 0.3.19 → 0.3.21
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/dist/components/ErrorWrapper.cjs +1 -1
- package/dist/components/ErrorWrapper.cjs.map +1 -1
- package/dist/components/ErrorWrapper.js +1 -1
- package/dist/components/ErrorWrapper.js.map +1 -1
- package/dist/components/UnitStepControls.cjs +55 -0
- package/dist/components/UnitStepControls.cjs.map +1 -0
- package/dist/components/UnitStepControls.d.ts +10 -0
- package/dist/components/UnitStepControls.d.ts.map +1 -0
- package/dist/components/UnitStepControls.js +55 -0
- package/dist/components/UnitStepControls.js.map +1 -0
- package/dist/components/json-schema-form-accordion-array.cjs +5 -73
- 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 +3 -71
- package/dist/components/json-schema-form-accordion-array.js.map +1 -1
- package/dist/components/json-schema-form-array.cjs +6 -1
- 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 +6 -1
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-cards-array.cjs +96 -0
- package/dist/components/json-schema-form-cards-array.cjs.map +1 -0
- package/dist/components/json-schema-form-cards-array.d.ts +7 -0
- package/dist/components/json-schema-form-cards-array.d.ts.map +1 -0
- package/dist/components/json-schema-form-cards-array.js +96 -0
- package/dist/components/json-schema-form-cards-array.js.map +1 -0
- package/dist/components/json-schema-form-item-row.cjs +81 -0
- package/dist/components/json-schema-form-item-row.cjs.map +1 -0
- package/dist/components/json-schema-form-item-row.d.ts +19 -0
- package/dist/components/json-schema-form-item-row.d.ts.map +1 -0
- package/dist/components/json-schema-form-item-row.js +81 -0
- package/dist/components/json-schema-form-item-row.js.map +1 -0
- package/dist/components/json-schema-form-render.cjs +2 -2
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +2 -2
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +1 -1
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.js +1 -1
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-tone.cjs +12 -0
- package/dist/components/json-schema-form-tone.cjs.map +1 -1
- package/dist/components/json-schema-form-tone.js +12 -0
- package/dist/components/json-schema-form-tone.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +1 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/unit-form-extension.cjs +126 -0
- package/dist/components/unit-form-extension.cjs.map +1 -0
- package/dist/components/unit-form-extension.d.ts +8 -0
- package/dist/components/unit-form-extension.d.ts.map +1 -0
- package/dist/components/unit-form-extension.js +126 -0
- package/dist/components/unit-form-extension.js.map +1 -0
- package/dist/components.cjs +4 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +1 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +4 -0
- package/dist/components.js.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.cjs +61 -8
- package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.js +61 -8
- package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.cjs +10 -4
- package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -1
- package/dist/data/diagnostics/error-diagnostics.js +10 -4
- package/dist/data/diagnostics/error-diagnostics.js.map +1 -1
- package/dist/data/query-browser/QueryBrowser.cjs +12 -6
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.js +12 -6
- package/dist/data/query-browser/QueryBrowser.js.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.cjs +2 -1
- package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.d.ts +16 -14
- package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.js +2 -1
- package/dist/data/query-browser/QueryBrowser.types.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/string.cjs +8 -0
- package/dist/lib/string.cjs.map +1 -1
- package/dist/lib/string.d.ts +1 -0
- package/dist/lib/string.d.ts.map +1 -1
- package/dist/lib/string.js +8 -0
- package/dist/lib/string.js.map +1 -1
- package/dist/profiles/catalogTree.cjs +133 -0
- package/dist/profiles/catalogTree.cjs.map +1 -0
- package/dist/profiles/catalogTree.d.ts +11 -0
- package/dist/profiles/catalogTree.d.ts.map +1 -0
- package/dist/profiles/catalogTree.js +133 -0
- package/dist/profiles/catalogTree.js.map +1 -0
- package/dist/profiles/connectionBrowserModel.cjs +185 -0
- package/dist/profiles/connectionBrowserModel.cjs.map +1 -0
- package/dist/profiles/connectionBrowserModel.d.ts +169 -0
- package/dist/profiles/connectionBrowserModel.d.ts.map +1 -0
- package/dist/profiles/connectionBrowserModel.js +185 -0
- package/dist/profiles/connectionBrowserModel.js.map +1 -0
- package/dist/profiles/connectionQueryWorkspace.cjs +185 -0
- package/dist/profiles/connectionQueryWorkspace.cjs.map +1 -0
- package/dist/profiles/connectionQueryWorkspace.d.ts +63 -0
- package/dist/profiles/connectionQueryWorkspace.d.ts.map +1 -0
- package/dist/profiles/connectionQueryWorkspace.js +185 -0
- package/dist/profiles/connectionQueryWorkspace.js.map +1 -0
- package/dist/profiles/connectionQueryWorkspaceModel.cjs +28 -0
- package/dist/profiles/connectionQueryWorkspaceModel.cjs.map +1 -0
- package/dist/profiles/connectionQueryWorkspaceModel.d.ts +38 -0
- package/dist/profiles/connectionQueryWorkspaceModel.d.ts.map +1 -0
- package/dist/profiles/connectionQueryWorkspaceModel.js +28 -0
- package/dist/profiles/connectionQueryWorkspaceModel.js.map +1 -0
- package/dist/profiles/esFieldValues.cjs +64 -0
- package/dist/profiles/esFieldValues.cjs.map +1 -0
- package/dist/profiles/esFieldValues.d.ts +48 -0
- package/dist/profiles/esFieldValues.d.ts.map +1 -0
- package/dist/profiles/esFieldValues.js +64 -0
- package/dist/profiles/esFieldValues.js.map +1 -0
- package/dist/profiles/esParamMappingModel.cjs +301 -0
- package/dist/profiles/esParamMappingModel.cjs.map +1 -0
- package/dist/profiles/esParamMappingModel.d.ts +37 -0
- package/dist/profiles/esParamMappingModel.d.ts.map +1 -0
- package/dist/profiles/esParamMappingModel.js +301 -0
- package/dist/profiles/esParamMappingModel.js.map +1 -0
- package/dist/profiles/esParamMappingPill.cjs +24 -0
- package/dist/profiles/esParamMappingPill.cjs.map +1 -0
- package/dist/profiles/esParamMappingPill.d.ts +13 -0
- package/dist/profiles/esParamMappingPill.d.ts.map +1 -0
- package/dist/profiles/esParamMappingPill.js +24 -0
- package/dist/profiles/esParamMappingPill.js.map +1 -0
- package/dist/profiles/esParamOperandExtension.cjs +75 -0
- package/dist/profiles/esParamOperandExtension.cjs.map +1 -0
- package/dist/profiles/esParamOperandExtension.d.ts +11 -0
- package/dist/profiles/esParamOperandExtension.d.ts.map +1 -0
- package/dist/profiles/esParamOperandExtension.js +75 -0
- package/dist/profiles/esParamOperandExtension.js.map +1 -0
- package/dist/profiles/esQueryBuilder.cjs +205 -0
- package/dist/profiles/esQueryBuilder.cjs.map +1 -0
- package/dist/profiles/esQueryBuilder.d.ts +35 -0
- package/dist/profiles/esQueryBuilder.d.ts.map +1 -0
- package/dist/profiles/esQueryBuilder.js +205 -0
- package/dist/profiles/esQueryBuilder.js.map +1 -0
- package/dist/profiles/esQueryBuilderExtension.cjs +23 -0
- package/dist/profiles/esQueryBuilderExtension.cjs.map +1 -0
- package/dist/profiles/esQueryBuilderExtension.d.ts +5 -0
- package/dist/profiles/esQueryBuilderExtension.d.ts.map +1 -0
- package/dist/profiles/esQueryBuilderExtension.js +23 -0
- package/dist/profiles/esQueryBuilderExtension.js.map +1 -0
- package/dist/profiles/esQueryBuilderForm.cjs +26 -0
- package/dist/profiles/esQueryBuilderForm.cjs.map +1 -0
- package/dist/profiles/esQueryBuilderForm.d.ts +18 -0
- package/dist/profiles/esQueryBuilderForm.d.ts.map +1 -0
- package/dist/profiles/esQueryBuilderForm.js +26 -0
- package/dist/profiles/esQueryBuilderForm.js.map +1 -0
- package/dist/profiles/esQueryBuilderModel.cjs +131 -0
- package/dist/profiles/esQueryBuilderModel.cjs.map +1 -0
- package/dist/profiles/esQueryBuilderModel.d.ts +108 -0
- package/dist/profiles/esQueryBuilderModel.d.ts.map +1 -0
- package/dist/profiles/esQueryBuilderModel.js +131 -0
- package/dist/profiles/esQueryBuilderModel.js.map +1 -0
- package/dist/profiles/esQueryClauseGroup.cjs +144 -0
- package/dist/profiles/esQueryClauseGroup.cjs.map +1 -0
- package/dist/profiles/esQueryClauseGroup.d.ts +10 -0
- package/dist/profiles/esQueryClauseGroup.d.ts.map +1 -0
- package/dist/profiles/esQueryClauseGroup.js +144 -0
- package/dist/profiles/esQueryClauseGroup.js.map +1 -0
- package/dist/profiles/esQueryCompile.cjs +47 -0
- package/dist/profiles/esQueryCompile.cjs.map +1 -0
- package/dist/profiles/esQueryCompile.d.ts +39 -0
- package/dist/profiles/esQueryCompile.d.ts.map +1 -0
- package/dist/profiles/esQueryCompile.js +47 -0
- package/dist/profiles/esQueryCompile.js.map +1 -0
- package/dist/profiles/esQueryConditionRow.cjs +168 -0
- package/dist/profiles/esQueryConditionRow.cjs.map +1 -0
- package/dist/profiles/esQueryConditionRow.d.ts +37 -0
- package/dist/profiles/esQueryConditionRow.d.ts.map +1 -0
- package/dist/profiles/esQueryConditionRow.js +168 -0
- package/dist/profiles/esQueryConditionRow.js.map +1 -0
- package/dist/profiles/esQueryGroupModel.cjs +12 -0
- package/dist/profiles/esQueryGroupModel.cjs.map +1 -0
- package/dist/profiles/esQueryGroupModel.d.ts +9 -0
- package/dist/profiles/esQueryGroupModel.d.ts.map +1 -0
- package/dist/profiles/esQueryGroupModel.js +12 -0
- package/dist/profiles/esQueryGroupModel.js.map +1 -0
- package/dist/profiles/esQueryOccur.cjs +16 -0
- package/dist/profiles/esQueryOccur.cjs.map +1 -0
- package/dist/profiles/esQueryOccur.d.ts +11 -0
- package/dist/profiles/esQueryOccur.d.ts.map +1 -0
- package/dist/profiles/esQueryOccur.js +16 -0
- package/dist/profiles/esQueryOccur.js.map +1 -0
- package/dist/profiles/esQueryOperandEditors.cjs +279 -0
- package/dist/profiles/esQueryOperandEditors.cjs.map +1 -0
- package/dist/profiles/esQueryOperandEditors.d.ts +24 -0
- package/dist/profiles/esQueryOperandEditors.d.ts.map +1 -0
- package/dist/profiles/esQueryOperandEditors.js +279 -0
- package/dist/profiles/esQueryOperandEditors.js.map +1 -0
- package/dist/profiles/esQueryOperandModel.cjs +28 -0
- package/dist/profiles/esQueryOperandModel.cjs.map +1 -0
- package/dist/profiles/esQueryOperandModel.d.ts +17 -0
- package/dist/profiles/esQueryOperandModel.d.ts.map +1 -0
- package/dist/profiles/esQueryOperandModel.js +28 -0
- package/dist/profiles/esQueryOperandModel.js.map +1 -0
- package/dist/profiles/esQueryOperators.cjs +165 -0
- package/dist/profiles/esQueryOperators.cjs.map +1 -0
- package/dist/profiles/esQueryOperators.d.ts +83 -0
- package/dist/profiles/esQueryOperators.d.ts.map +1 -0
- package/dist/profiles/esQueryOperators.js +165 -0
- package/dist/profiles/esQueryOperators.js.map +1 -0
- package/dist/profiles/esQueryOutputEditor.cjs +138 -0
- package/dist/profiles/esQueryOutputEditor.cjs.map +1 -0
- package/dist/profiles/esQueryOutputEditor.d.ts +7 -0
- package/dist/profiles/esQueryOutputEditor.d.ts.map +1 -0
- package/dist/profiles/esQueryOutputEditor.js +138 -0
- package/dist/profiles/esQueryOutputEditor.js.map +1 -0
- package/dist/profiles/esQueryOutputModel.cjs +16 -0
- package/dist/profiles/esQueryOutputModel.cjs.map +1 -0
- package/dist/profiles/esQueryOutputModel.d.ts +14 -0
- package/dist/profiles/esQueryOutputModel.d.ts.map +1 -0
- package/dist/profiles/esQueryOutputModel.js +16 -0
- package/dist/profiles/esQueryOutputModel.js.map +1 -0
- package/dist/profiles/esQueryPreview.cjs +30 -0
- package/dist/profiles/esQueryPreview.cjs.map +1 -0
- package/dist/profiles/esQueryPreview.d.ts +6 -0
- package/dist/profiles/esQueryPreview.d.ts.map +1 -0
- package/dist/profiles/esQueryPreview.js +30 -0
- package/dist/profiles/esQueryPreview.js.map +1 -0
- package/dist/profiles/esQuerySortEditor.cjs +143 -0
- package/dist/profiles/esQuerySortEditor.cjs.map +1 -0
- package/dist/profiles/esQuerySortEditor.d.ts +9 -0
- package/dist/profiles/esQuerySortEditor.d.ts.map +1 -0
- package/dist/profiles/esQuerySortEditor.js +143 -0
- package/dist/profiles/esQuerySortEditor.js.map +1 -0
- package/dist/profiles/esQuerySortModel.cjs +13 -0
- package/dist/profiles/esQuerySortModel.cjs.map +1 -0
- package/dist/profiles/esQuerySortModel.d.ts +4 -0
- package/dist/profiles/esQuerySortModel.d.ts.map +1 -0
- package/dist/profiles/esQuerySortModel.js +13 -0
- package/dist/profiles/esQuerySortModel.js.map +1 -0
- package/dist/profiles/esValueCombobox.cjs +86 -0
- package/dist/profiles/esValueCombobox.cjs.map +1 -0
- package/dist/profiles/esValueCombobox.d.ts +15 -0
- package/dist/profiles/esValueCombobox.d.ts.map +1 -0
- package/dist/profiles/esValueCombobox.js +86 -0
- package/dist/profiles/esValueCombobox.js.map +1 -0
- package/dist/profiles/jsonPathSample.cjs +75 -0
- package/dist/profiles/jsonPathSample.cjs.map +1 -0
- package/dist/profiles/jsonPathSample.d.ts +27 -0
- package/dist/profiles/jsonPathSample.d.ts.map +1 -0
- package/dist/profiles/jsonPathSample.js +75 -0
- package/dist/profiles/jsonPathSample.js.map +1 -0
- package/dist/profiles/jsonPathSampleRow.cjs +14 -0
- package/dist/profiles/jsonPathSampleRow.cjs.map +1 -0
- package/dist/profiles/jsonPathSampleRow.d.ts +6 -0
- package/dist/profiles/jsonPathSampleRow.d.ts.map +1 -0
- package/dist/profiles/jsonPathSampleRow.js +14 -0
- package/dist/profiles/jsonPathSampleRow.js.map +1 -0
- package/dist/profiles/profileApi.cjs +37 -0
- package/dist/profiles/profileApi.cjs.map +1 -0
- package/dist/profiles/profileApi.d.ts +32 -0
- package/dist/profiles/profileApi.d.ts.map +1 -0
- package/dist/profiles/profileApi.js +37 -0
- package/dist/profiles/profileApi.js.map +1 -0
- package/dist/profiles/profileBuilder.cjs +65 -0
- package/dist/profiles/profileBuilder.cjs.map +1 -0
- package/dist/profiles/profileBuilder.d.ts +11 -0
- package/dist/profiles/profileBuilder.d.ts.map +1 -0
- package/dist/profiles/profileBuilder.js +65 -0
- package/dist/profiles/profileBuilder.js.map +1 -0
- package/dist/profiles/profileBuilderExtension.cjs +25 -0
- package/dist/profiles/profileBuilderExtension.cjs.map +1 -0
- package/dist/profiles/profileBuilderExtension.d.ts +5 -0
- package/dist/profiles/profileBuilderExtension.d.ts.map +1 -0
- package/dist/profiles/profileBuilderExtension.js +25 -0
- package/dist/profiles/profileBuilderExtension.js.map +1 -0
- package/dist/profiles/profileBuilderWorkspace.cjs +368 -0
- package/dist/profiles/profileBuilderWorkspace.cjs.map +1 -0
- package/dist/profiles/profileBuilderWorkspace.d.ts +21 -0
- package/dist/profiles/profileBuilderWorkspace.d.ts.map +1 -0
- package/dist/profiles/profileBuilderWorkspace.js +368 -0
- package/dist/profiles/profileBuilderWorkspace.js.map +1 -0
- package/dist/profiles/profileColumnModel.cjs +23 -0
- package/dist/profiles/profileColumnModel.cjs.map +1 -0
- package/dist/profiles/profileColumnModel.d.ts +8 -0
- package/dist/profiles/profileColumnModel.d.ts.map +1 -0
- package/dist/profiles/profileColumnModel.js +23 -0
- package/dist/profiles/profileColumnModel.js.map +1 -0
- package/dist/profiles/profileColumnPicker.cjs +68 -0
- package/dist/profiles/profileColumnPicker.cjs.map +1 -0
- package/dist/profiles/profileColumnPicker.d.ts +11 -0
- package/dist/profiles/profileColumnPicker.d.ts.map +1 -0
- package/dist/profiles/profileColumnPicker.js +68 -0
- package/dist/profiles/profileColumnPicker.js.map +1 -0
- package/dist/profiles/profileEditor.cjs +386 -0
- package/dist/profiles/profileEditor.cjs.map +1 -0
- package/dist/profiles/profileEditor.d.ts +19 -0
- package/dist/profiles/profileEditor.d.ts.map +1 -0
- package/dist/profiles/profileEditor.js +386 -0
- package/dist/profiles/profileEditor.js.map +1 -0
- package/dist/profiles/profileEditorModel.cjs +181 -0
- package/dist/profiles/profileEditorModel.cjs.map +1 -0
- package/dist/profiles/profileEditorModel.d.ts +74 -0
- package/dist/profiles/profileEditorModel.d.ts.map +1 -0
- package/dist/profiles/profileEditorModel.js +181 -0
- package/dist/profiles/profileEditorModel.js.map +1 -0
- package/dist/profiles/profileEditorPreview.cjs +38 -0
- package/dist/profiles/profileEditorPreview.cjs.map +1 -0
- package/dist/profiles/profileEditorPreview.d.ts +12 -0
- package/dist/profiles/profileEditorPreview.d.ts.map +1 -0
- package/dist/profiles/profileEditorPreview.js +38 -0
- package/dist/profiles/profileEditorPreview.js.map +1 -0
- package/dist/profiles/profileEditorRail.cjs +46 -0
- package/dist/profiles/profileEditorRail.cjs.map +1 -0
- package/dist/profiles/profileEditorRail.d.ts +8 -0
- package/dist/profiles/profileEditorRail.d.ts.map +1 -0
- package/dist/profiles/profileEditorRail.js +46 -0
- package/dist/profiles/profileEditorRail.js.map +1 -0
- package/dist/profiles/profileEditorRaw.cjs +118 -0
- package/dist/profiles/profileEditorRaw.cjs.map +1 -0
- package/dist/profiles/profileEditorRaw.d.ts +7 -0
- package/dist/profiles/profileEditorRaw.d.ts.map +1 -0
- package/dist/profiles/profileEditorRaw.js +118 -0
- package/dist/profiles/profileEditorRaw.js.map +1 -0
- package/dist/profiles/profileEditorRoutes.cjs +7 -0
- package/dist/profiles/profileEditorRoutes.cjs.map +1 -0
- package/dist/profiles/profileEditorRoutes.d.ts +2 -0
- package/dist/profiles/profileEditorRoutes.d.ts.map +1 -0
- package/dist/profiles/profileEditorRoutes.js +7 -0
- package/dist/profiles/profileEditorRoutes.js.map +1 -0
- package/dist/profiles/profileEditorSections.cjs +213 -0
- package/dist/profiles/profileEditorSections.cjs.map +1 -0
- package/dist/profiles/profileEditorSections.d.ts +23 -0
- package/dist/profiles/profileEditorSections.d.ts.map +1 -0
- package/dist/profiles/profileEditorSections.js +213 -0
- package/dist/profiles/profileEditorSections.js.map +1 -0
- package/dist/profiles/profileFieldEditor.cjs +200 -0
- package/dist/profiles/profileFieldEditor.cjs.map +1 -0
- package/dist/profiles/profileFieldEditor.d.ts +34 -0
- package/dist/profiles/profileFieldEditor.d.ts.map +1 -0
- package/dist/profiles/profileFieldEditor.js +200 -0
- package/dist/profiles/profileFieldEditor.js.map +1 -0
- package/dist/profiles/profileFieldGrid.cjs +250 -0
- package/dist/profiles/profileFieldGrid.cjs.map +1 -0
- package/dist/profiles/profileFieldGrid.d.ts +20 -0
- package/dist/profiles/profileFieldGrid.d.ts.map +1 -0
- package/dist/profiles/profileFieldGrid.js +250 -0
- package/dist/profiles/profileFieldGrid.js.map +1 -0
- package/dist/profiles/profileFieldManager.cjs +103 -0
- package/dist/profiles/profileFieldManager.cjs.map +1 -0
- package/dist/profiles/profileFieldManager.d.ts +9 -0
- package/dist/profiles/profileFieldManager.d.ts.map +1 -0
- package/dist/profiles/profileFieldManager.js +103 -0
- package/dist/profiles/profileFieldManager.js.map +1 -0
- package/dist/profiles/profileFieldState.cjs +136 -0
- package/dist/profiles/profileFieldState.cjs.map +1 -0
- package/dist/profiles/profileFieldState.d.ts +41 -0
- package/dist/profiles/profileFieldState.d.ts.map +1 -0
- package/dist/profiles/profileFieldState.js +136 -0
- package/dist/profiles/profileFieldState.js.map +1 -0
- package/dist/profiles/profileFieldTypes.cjs +17 -0
- package/dist/profiles/profileFieldTypes.cjs.map +1 -0
- package/dist/profiles/profileFieldTypes.d.ts +8 -0
- package/dist/profiles/profileFieldTypes.d.ts.map +1 -0
- package/dist/profiles/profileFieldTypes.js +17 -0
- package/dist/profiles/profileFieldTypes.js.map +1 -0
- package/dist/profiles/profileParamModel.cjs +78 -0
- package/dist/profiles/profileParamModel.cjs.map +1 -0
- package/dist/profiles/profileParamModel.d.ts +3 -0
- package/dist/profiles/profileParamModel.d.ts.map +1 -0
- package/dist/profiles/profileParamModel.js +78 -0
- package/dist/profiles/profileParamModel.js.map +1 -0
- package/dist/profiles/profileSamplePayload.cjs +15 -0
- package/dist/profiles/profileSamplePayload.cjs.map +1 -0
- package/dist/profiles/profileSamplePayload.d.ts +13 -0
- package/dist/profiles/profileSamplePayload.d.ts.map +1 -0
- package/dist/profiles/profileSamplePayload.js +15 -0
- package/dist/profiles/profileSamplePayload.js.map +1 -0
- package/dist/profiles/profileWizard.cjs +257 -0
- package/dist/profiles/profileWizard.cjs.map +1 -0
- package/dist/profiles/profileWizard.d.ts +12 -0
- package/dist/profiles/profileWizard.d.ts.map +1 -0
- package/dist/profiles/profileWizard.js +257 -0
- package/dist/profiles/profileWizard.js.map +1 -0
- package/dist/profiles/profileWizardHelp.cjs +10 -0
- package/dist/profiles/profileWizardHelp.cjs.map +1 -0
- package/dist/profiles/profileWizardHelp.d.ts +13 -0
- package/dist/profiles/profileWizardHelp.d.ts.map +1 -0
- package/dist/profiles/profileWizardHelp.js +10 -0
- package/dist/profiles/profileWizardHelp.js.map +1 -0
- package/dist/profiles/profileWizardModel.cjs +198 -0
- package/dist/profiles/profileWizardModel.cjs.map +1 -0
- package/dist/profiles/profileWizardModel.d.ts +255 -0
- package/dist/profiles/profileWizardModel.d.ts.map +1 -0
- package/dist/profiles/profileWizardModel.js +198 -0
- package/dist/profiles/profileWizardModel.js.map +1 -0
- package/dist/profiles/profileWizardQueryStep.cjs +215 -0
- package/dist/profiles/profileWizardQueryStep.cjs.map +1 -0
- package/dist/profiles/profileWizardQueryStep.d.ts +18 -0
- package/dist/profiles/profileWizardQueryStep.d.ts.map +1 -0
- package/dist/profiles/profileWizardQueryStep.js +215 -0
- package/dist/profiles/profileWizardQueryStep.js.map +1 -0
- package/dist/profiles/profileWizardSteps.cjs +214 -0
- package/dist/profiles/profileWizardSteps.cjs.map +1 -0
- package/dist/profiles/profileWizardSteps.d.ts +35 -0
- package/dist/profiles/profileWizardSteps.d.ts.map +1 -0
- package/dist/profiles/profileWizardSteps.js +214 -0
- package/dist/profiles/profileWizardSteps.js.map +1 -0
- package/dist/profiles/profileYaml.cjs +19 -0
- package/dist/profiles/profileYaml.cjs.map +1 -0
- package/dist/profiles/profileYaml.d.ts +4 -0
- package/dist/profiles/profileYaml.d.ts.map +1 -0
- package/dist/profiles/profileYaml.js +19 -0
- package/dist/profiles/profileYaml.js.map +1 -0
- package/dist/profiles/prometheusResults.cjs +60 -0
- package/dist/profiles/prometheusResults.cjs.map +1 -0
- package/dist/profiles/prometheusResults.d.ts +7 -0
- package/dist/profiles/prometheusResults.d.ts.map +1 -0
- package/dist/profiles/prometheusResults.js +60 -0
- package/dist/profiles/prometheusResults.js.map +1 -0
- package/dist/profiles/queryRowLimits.cjs +82 -0
- package/dist/profiles/queryRowLimits.cjs.map +1 -0
- package/dist/profiles/queryRowLimits.d.ts +9 -0
- package/dist/profiles/queryRowLimits.d.ts.map +1 -0
- package/dist/profiles/queryRowLimits.js +82 -0
- package/dist/profiles/queryRowLimits.js.map +1 -0
- package/dist/profiles/queryRowLimitsModel.cjs +10 -0
- package/dist/profiles/queryRowLimitsModel.cjs.map +1 -0
- package/dist/profiles/queryRowLimitsModel.d.ts +9 -0
- package/dist/profiles/queryRowLimitsModel.d.ts.map +1 -0
- package/dist/profiles/queryRowLimitsModel.js +10 -0
- package/dist/profiles/queryRowLimitsModel.js.map +1 -0
- package/dist/profiles/queryTargetPicker.cjs +42 -0
- package/dist/profiles/queryTargetPicker.cjs.map +1 -0
- package/dist/profiles/queryTargetPicker.d.ts +8 -0
- package/dist/profiles/queryTargetPicker.d.ts.map +1 -0
- package/dist/profiles/queryTargetPicker.js +42 -0
- package/dist/profiles/queryTargetPicker.js.map +1 -0
- package/dist/profiles/testSchema.d.ts +3 -0
- package/dist/profiles/testSchema.d.ts.map +1 -0
- package/dist/profiles.cjs +223 -0
- package/dist/profiles.cjs.map +1 -0
- package/dist/profiles.d.ts +68 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +223 -0
- package/dist/profiles.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const reactQuery = require("@tanstack/react-query");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const connectionBrowserModel = require("./connectionBrowserModel.cjs");
|
|
6
|
+
function compileRequestBody(input) {
|
|
7
|
+
const { search, params, roles } = input;
|
|
8
|
+
return JSON.stringify({
|
|
9
|
+
search,
|
|
10
|
+
...params && Object.keys(params).length ? { params } : {},
|
|
11
|
+
...roles && Object.keys(roles).length ? { roles } : {}
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function errorMessage(error) {
|
|
15
|
+
if (!error) return void 0;
|
|
16
|
+
return error instanceof Error ? error.message : String(error);
|
|
17
|
+
}
|
|
18
|
+
function useCompiledSearch(input) {
|
|
19
|
+
var _a;
|
|
20
|
+
const { baseUrl, enabled = true, debounceMs = 250 } = input;
|
|
21
|
+
const body = compileRequestBody(input);
|
|
22
|
+
const [settled, setSettled] = react.useState(body);
|
|
23
|
+
react.useEffect(() => {
|
|
24
|
+
const timer = setTimeout(() => setSettled(body), debounceMs);
|
|
25
|
+
return () => clearTimeout(timer);
|
|
26
|
+
}, [body, debounceMs]);
|
|
27
|
+
const compiled = reactQuery.useQuery({
|
|
28
|
+
queryKey: ["es-compile", baseUrl, settled],
|
|
29
|
+
queryFn: () => connectionBrowserModel.fetchJSON(`${baseUrl}/compile`, {
|
|
30
|
+
method: "POST",
|
|
31
|
+
headers: { "Content-Type": "application/json" },
|
|
32
|
+
body: settled
|
|
33
|
+
}),
|
|
34
|
+
enabled: enabled && baseUrl !== "",
|
|
35
|
+
retry: 0
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
query: ((_a = compiled.data) == null ? void 0 : _a.query) ?? "",
|
|
39
|
+
...compiled.data ? { size: compiled.data.size, from: compiled.data.from } : {},
|
|
40
|
+
...compiled.error ? { error: errorMessage(compiled.error) } : {},
|
|
41
|
+
loading: compiled.isFetching
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
exports.compileRequestBody = compileRequestBody;
|
|
45
|
+
exports.errorMessage = errorMessage;
|
|
46
|
+
exports.useCompiledSearch = useCompiledSearch;
|
|
47
|
+
//# sourceMappingURL=esQueryCompile.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esQueryCompile.cjs","sources":["../../src/profiles/esQueryCompile.ts"],"sourcesContent":["/**\n * The DSL a specification compiles to. The server compiles it — the same code\n * path a query runs through — so the preview is the query, not a re-derivation\n * of it that could drift.\n */\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useEffect, useState } from \"react\";\nimport { fetchJSON } from \"./connectionBrowserModel\";\nimport type { EsSearch } from \"./esQueryBuilderModel\";\n\nexport type EsCompileResult = { query: string; size: number; from: number };\n\nexport type EsCompilation = {\n query: string;\n size?: number | undefined;\n from?: number | undefined;\n /** The compiler's own message for a specification it rejected. */\n error?: string | undefined;\n loading: boolean;\n};\n\n/**\n * EsCompileInput is the specification together with the parameter values it\n * compiles against: the server binds a {param:…} operand from them and\n * interpolates a {{.params.…}} one, so both need real values to preview.\n */\nexport type EsCompileInput = {\n search: EsSearch;\n params?: Record<string, unknown>;\n roles?: Record<string, string>;\n};\n\nexport type EsCompileRequest = EsCompileInput & {\n baseUrl: string;\n enabled?: boolean;\n debounceMs?: number;\n};\n\n/** compileRequestBody is what POST /compile takes, with the empty parts left off. */\nexport function compileRequestBody(input: EsCompileInput): string {\n const { search, params, roles } = input;\n return JSON.stringify({\n search,\n ...(params && Object.keys(params).length ? { params } : {}),\n ...(roles && Object.keys(roles).length ? { roles } : {}),\n });\n}\n\nexport function errorMessage(error: unknown): string | undefined {\n if (!error) return undefined;\n return error instanceof Error ? error.message : String(error);\n}\n\n/**\n * useCompiledSearch compiles the specification as it is edited. The body is\n * debounced rather than the request, so an edit that lands back on a body\n * already compiled costs nothing.\n */\nexport function useCompiledSearch(input: EsCompileRequest): EsCompilation {\n const { baseUrl, enabled = true, debounceMs = 250 } = input;\n const body = compileRequestBody(input);\n const [settled, setSettled] = useState(body);\n useEffect(() => {\n const timer = setTimeout(() => setSettled(body), debounceMs);\n return () => clearTimeout(timer);\n }, [body, debounceMs]);\n\n const compiled = useQuery({\n queryKey: [\"es-compile\", baseUrl, settled],\n queryFn: () =>\n fetchJSON<EsCompileResult>(`${baseUrl}/compile`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: settled,\n }),\n enabled: enabled && baseUrl !== \"\",\n retry: 0,\n });\n\n return {\n query: compiled.data?.query ?? \"\",\n ...(compiled.data ? { size: compiled.data.size, from: compiled.data.from } : {}),\n ...(compiled.error ? { error: errorMessage(compiled.error) } : {}),\n loading: compiled.isFetching,\n };\n}\n"],"names":["useState","useEffect","useQuery","fetchJSON"],"mappings":";;;;;AAwCO,SAAS,mBAAmB,OAA+B;AAChE,QAAM,EAAE,QAAQ,QAAQ,MAAA,IAAU;AAClC,SAAO,KAAK,UAAU;AAAA,IACpB;AAAA,IACA,GAAI,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,IACxD,GAAI,SAAS,OAAO,KAAK,KAAK,EAAE,SAAS,EAAE,UAAU,CAAA;AAAA,EAAC,CACvD;AACH;AAEO,SAAS,aAAa,OAAoC;AAC/D,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AAOO,SAAS,kBAAkB,OAAwC;;AACxE,QAAM,EAAE,SAAS,UAAU,MAAM,aAAa,QAAQ;AACtD,QAAM,OAAO,mBAAmB,KAAK;AACrC,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,SAAS,IAAI;AAC3CC,QAAAA,UAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,WAAW,IAAI,GAAG,UAAU;AAC3D,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,MAAM,UAAU,CAAC;AAErB,QAAM,WAAWC,WAAAA,SAAS;AAAA,IACxB,UAAU,CAAC,cAAc,SAAS,OAAO;AAAA,IACzC,SAAS,MACPC,uBAAAA,UAA2B,GAAG,OAAO,YAAY;AAAA,MAC/C,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM;AAAA,IAAA,CACP;AAAA,IACH,SAAS,WAAW,YAAY;AAAA,IAChC,OAAO;AAAA,EAAA,CACR;AAED,SAAO;AAAA,IACL,SAAO,cAAS,SAAT,mBAAe,UAAS;AAAA,IAC/B,GAAI,SAAS,OAAO,EAAE,MAAM,SAAS,KAAK,MAAM,MAAM,SAAS,KAAK,KAAA,IAAS,CAAA;AAAA,IAC7E,GAAI,SAAS,QAAQ,EAAE,OAAO,aAAa,SAAS,KAAK,EAAA,IAAM,CAAA;AAAA,IAC/D,SAAS,SAAS;AAAA,EAAA;AAEtB;;;;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { EsSearch } from './esQueryBuilderModel';
|
|
2
|
+
export type EsCompileResult = {
|
|
3
|
+
query: string;
|
|
4
|
+
size: number;
|
|
5
|
+
from: number;
|
|
6
|
+
};
|
|
7
|
+
export type EsCompilation = {
|
|
8
|
+
query: string;
|
|
9
|
+
size?: number | undefined;
|
|
10
|
+
from?: number | undefined;
|
|
11
|
+
/** The compiler's own message for a specification it rejected. */
|
|
12
|
+
error?: string | undefined;
|
|
13
|
+
loading: boolean;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* EsCompileInput is the specification together with the parameter values it
|
|
17
|
+
* compiles against: the server binds a {param:…} operand from them and
|
|
18
|
+
* interpolates a {{.params.…}} one, so both need real values to preview.
|
|
19
|
+
*/
|
|
20
|
+
export type EsCompileInput = {
|
|
21
|
+
search: EsSearch;
|
|
22
|
+
params?: Record<string, unknown>;
|
|
23
|
+
roles?: Record<string, string>;
|
|
24
|
+
};
|
|
25
|
+
export type EsCompileRequest = EsCompileInput & {
|
|
26
|
+
baseUrl: string;
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
debounceMs?: number;
|
|
29
|
+
};
|
|
30
|
+
/** compileRequestBody is what POST /compile takes, with the empty parts left off. */
|
|
31
|
+
export declare function compileRequestBody(input: EsCompileInput): string;
|
|
32
|
+
export declare function errorMessage(error: unknown): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* useCompiledSearch compiles the specification as it is edited. The body is
|
|
35
|
+
* debounced rather than the request, so an edit that lands back on a body
|
|
36
|
+
* already compiled costs nothing.
|
|
37
|
+
*/
|
|
38
|
+
export declare function useCompiledSearch(input: EsCompileRequest): EsCompilation;
|
|
39
|
+
//# sourceMappingURL=esQueryCompile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esQueryCompile.d.ts","sourceRoot":"","sources":["../../src/profiles/esQueryCompile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAOhE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,CA2BxE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
import { fetchJSON } from "./connectionBrowserModel.js";
|
|
4
|
+
function compileRequestBody(input) {
|
|
5
|
+
const { search, params, roles } = input;
|
|
6
|
+
return JSON.stringify({
|
|
7
|
+
search,
|
|
8
|
+
...params && Object.keys(params).length ? { params } : {},
|
|
9
|
+
...roles && Object.keys(roles).length ? { roles } : {}
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function errorMessage(error) {
|
|
13
|
+
if (!error) return void 0;
|
|
14
|
+
return error instanceof Error ? error.message : String(error);
|
|
15
|
+
}
|
|
16
|
+
function useCompiledSearch(input) {
|
|
17
|
+
var _a;
|
|
18
|
+
const { baseUrl, enabled = true, debounceMs = 250 } = input;
|
|
19
|
+
const body = compileRequestBody(input);
|
|
20
|
+
const [settled, setSettled] = useState(body);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const timer = setTimeout(() => setSettled(body), debounceMs);
|
|
23
|
+
return () => clearTimeout(timer);
|
|
24
|
+
}, [body, debounceMs]);
|
|
25
|
+
const compiled = useQuery({
|
|
26
|
+
queryKey: ["es-compile", baseUrl, settled],
|
|
27
|
+
queryFn: () => fetchJSON(`${baseUrl}/compile`, {
|
|
28
|
+
method: "POST",
|
|
29
|
+
headers: { "Content-Type": "application/json" },
|
|
30
|
+
body: settled
|
|
31
|
+
}),
|
|
32
|
+
enabled: enabled && baseUrl !== "",
|
|
33
|
+
retry: 0
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
query: ((_a = compiled.data) == null ? void 0 : _a.query) ?? "",
|
|
37
|
+
...compiled.data ? { size: compiled.data.size, from: compiled.data.from } : {},
|
|
38
|
+
...compiled.error ? { error: errorMessage(compiled.error) } : {},
|
|
39
|
+
loading: compiled.isFetching
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
compileRequestBody,
|
|
44
|
+
errorMessage,
|
|
45
|
+
useCompiledSearch
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=esQueryCompile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esQueryCompile.js","sources":["../../src/profiles/esQueryCompile.ts"],"sourcesContent":["/**\n * The DSL a specification compiles to. The server compiles it — the same code\n * path a query runs through — so the preview is the query, not a re-derivation\n * of it that could drift.\n */\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useEffect, useState } from \"react\";\nimport { fetchJSON } from \"./connectionBrowserModel\";\nimport type { EsSearch } from \"./esQueryBuilderModel\";\n\nexport type EsCompileResult = { query: string; size: number; from: number };\n\nexport type EsCompilation = {\n query: string;\n size?: number | undefined;\n from?: number | undefined;\n /** The compiler's own message for a specification it rejected. */\n error?: string | undefined;\n loading: boolean;\n};\n\n/**\n * EsCompileInput is the specification together with the parameter values it\n * compiles against: the server binds a {param:…} operand from them and\n * interpolates a {{.params.…}} one, so both need real values to preview.\n */\nexport type EsCompileInput = {\n search: EsSearch;\n params?: Record<string, unknown>;\n roles?: Record<string, string>;\n};\n\nexport type EsCompileRequest = EsCompileInput & {\n baseUrl: string;\n enabled?: boolean;\n debounceMs?: number;\n};\n\n/** compileRequestBody is what POST /compile takes, with the empty parts left off. */\nexport function compileRequestBody(input: EsCompileInput): string {\n const { search, params, roles } = input;\n return JSON.stringify({\n search,\n ...(params && Object.keys(params).length ? { params } : {}),\n ...(roles && Object.keys(roles).length ? { roles } : {}),\n });\n}\n\nexport function errorMessage(error: unknown): string | undefined {\n if (!error) return undefined;\n return error instanceof Error ? error.message : String(error);\n}\n\n/**\n * useCompiledSearch compiles the specification as it is edited. The body is\n * debounced rather than the request, so an edit that lands back on a body\n * already compiled costs nothing.\n */\nexport function useCompiledSearch(input: EsCompileRequest): EsCompilation {\n const { baseUrl, enabled = true, debounceMs = 250 } = input;\n const body = compileRequestBody(input);\n const [settled, setSettled] = useState(body);\n useEffect(() => {\n const timer = setTimeout(() => setSettled(body), debounceMs);\n return () => clearTimeout(timer);\n }, [body, debounceMs]);\n\n const compiled = useQuery({\n queryKey: [\"es-compile\", baseUrl, settled],\n queryFn: () =>\n fetchJSON<EsCompileResult>(`${baseUrl}/compile`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: settled,\n }),\n enabled: enabled && baseUrl !== \"\",\n retry: 0,\n });\n\n return {\n query: compiled.data?.query ?? \"\",\n ...(compiled.data ? { size: compiled.data.size, from: compiled.data.from } : {}),\n ...(compiled.error ? { error: errorMessage(compiled.error) } : {}),\n loading: compiled.isFetching,\n };\n}\n"],"names":[],"mappings":";;;AAwCO,SAAS,mBAAmB,OAA+B;AAChE,QAAM,EAAE,QAAQ,QAAQ,MAAA,IAAU;AAClC,SAAO,KAAK,UAAU;AAAA,IACpB;AAAA,IACA,GAAI,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS,EAAE,OAAA,IAAW,CAAA;AAAA,IACxD,GAAI,SAAS,OAAO,KAAK,KAAK,EAAE,SAAS,EAAE,UAAU,CAAA;AAAA,EAAC,CACvD;AACH;AAEO,SAAS,aAAa,OAAoC;AAC/D,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AAOO,SAAS,kBAAkB,OAAwC;;AACxE,QAAM,EAAE,SAAS,UAAU,MAAM,aAAa,QAAQ;AACtD,QAAM,OAAO,mBAAmB,KAAK;AACrC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAC3C,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,WAAW,IAAI,GAAG,UAAU;AAC3D,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,MAAM,UAAU,CAAC;AAErB,QAAM,WAAW,SAAS;AAAA,IACxB,UAAU,CAAC,cAAc,SAAS,OAAO;AAAA,IACzC,SAAS,MACP,UAA2B,GAAG,OAAO,YAAY;AAAA,MAC/C,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM;AAAA,IAAA,CACP;AAAA,IACH,SAAS,WAAW,YAAY;AAAA,IAChC,OAAO;AAAA,EAAA,CACR;AAED,SAAO;AAAA,IACL,SAAO,cAAS,SAAT,mBAAe,UAAS;AAAA,IAC/B,GAAI,SAAS,OAAO,EAAE,MAAM,SAAS,KAAK,MAAM,MAAM,SAAS,KAAK,KAAA,IAAS,CAAA;AAAA,IAC7E,GAAI,SAAS,QAAQ,EAAE,OAAO,aAAa,SAAS,KAAK,EAAA,IAAM,CAAA;AAAA,IAC/D,SAAS,SAAS;AAAA,EAAA;AAEtB;"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const Combobox = require("../components/Combobox.cjs");
|
|
5
|
+
const IconButton = require("../components/IconButton.cjs");
|
|
6
|
+
const MultiSelect = require("../components/MultiSelect.cjs");
|
|
7
|
+
const select = require("../components/select.cjs");
|
|
8
|
+
const profileWizardModel = require("./profileWizardModel.cjs");
|
|
9
|
+
const esQueryOperandEditors = require("./esQueryOperandEditors.cjs");
|
|
10
|
+
const esQueryOperators = require("./esQueryOperators.cjs");
|
|
11
|
+
const esQueryOccur = require("./esQueryOccur.cjs");
|
|
12
|
+
const UiTrash = require("../icons/components/UiTrash.cjs");
|
|
13
|
+
function EsQueryConditionRow({
|
|
14
|
+
condition,
|
|
15
|
+
path,
|
|
16
|
+
context,
|
|
17
|
+
actions
|
|
18
|
+
}) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
const { catalog, qualifierNames, qualifierRestrictions, qualifiers } = context.vocabulary;
|
|
21
|
+
const field = context.fields.find((entry) => entry.name === condition.field);
|
|
22
|
+
const info = catalog.find((entry) => entry.op === condition.op);
|
|
23
|
+
const warning = field ? esQueryOperators.fieldWarning(field) : void 0;
|
|
24
|
+
const set = (patch) => actions.update(path, (current) => profileWizardModel.applyPatch(current, patch));
|
|
25
|
+
const rowId = path.join("-") || "root";
|
|
26
|
+
const values = condition.field ? (_a = context.values) == null ? void 0 : _a.call(context, { path, field: condition.field }) : void 0;
|
|
27
|
+
const advanced = esQueryOperators.qualifiersForOperator({
|
|
28
|
+
names: qualifierNames,
|
|
29
|
+
...qualifierRestrictions ? { restrictions: qualifierRestrictions } : {},
|
|
30
|
+
op: condition.op
|
|
31
|
+
});
|
|
32
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border bg-card px-2 py-2", children: [
|
|
33
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
34
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
+
select.Select,
|
|
36
|
+
{
|
|
37
|
+
"aria-label": "Clause",
|
|
38
|
+
value: condition.occur || "filter",
|
|
39
|
+
options: esQueryOccur.occurOptions(context.vocabulary.occurs),
|
|
40
|
+
onChange: (event) => set({ occur: event.target.value })
|
|
41
|
+
}
|
|
42
|
+
) }),
|
|
43
|
+
(info == null ? void 0 : info.needsField) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
+
Combobox.Combobox,
|
|
45
|
+
{
|
|
46
|
+
ariaLabel: "Field",
|
|
47
|
+
className: "min-w-56 flex-1",
|
|
48
|
+
value: condition.field ?? "",
|
|
49
|
+
onChange: (next) => set({ field: next }),
|
|
50
|
+
options: fieldOptions(context.fields),
|
|
51
|
+
placeholder: "Field…"
|
|
52
|
+
}
|
|
53
|
+
) : null,
|
|
54
|
+
(info == null ? void 0 : info.acceptsFields) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
55
|
+
MultiSelect.MultiSelect,
|
|
56
|
+
{
|
|
57
|
+
ariaLabel: "Fields",
|
|
58
|
+
className: "min-w-56 flex-1",
|
|
59
|
+
value: condition.fields ?? [],
|
|
60
|
+
onChange: (next) => set({ fields: next }),
|
|
61
|
+
options: context.fields.map((entry) => ({
|
|
62
|
+
value: entry.name,
|
|
63
|
+
label: entry.name
|
|
64
|
+
})),
|
|
65
|
+
placeholder: "All fields"
|
|
66
|
+
}
|
|
67
|
+
) : null,
|
|
68
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-48 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
69
|
+
select.Select,
|
|
70
|
+
{
|
|
71
|
+
"aria-label": "Operator",
|
|
72
|
+
value: condition.op,
|
|
73
|
+
onChange: (event) => {
|
|
74
|
+
const next = catalog.find(
|
|
75
|
+
(entry) => entry.op === event.target.value
|
|
76
|
+
);
|
|
77
|
+
if (!next) {
|
|
78
|
+
throw new Error(
|
|
79
|
+
`operator ${event.target.value} is missing from the catalog`
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
actions.update(
|
|
83
|
+
path,
|
|
84
|
+
(current) => esQueryOperators.changeConditionOperator(current, next)
|
|
85
|
+
);
|
|
86
|
+
},
|
|
87
|
+
children: operatorGroups(catalog, field, condition.op).map((group) => {
|
|
88
|
+
const options = group.operators.map((entry) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: entry.op, children: entry.label }, entry.op));
|
|
89
|
+
return group.label ? /* @__PURE__ */ jsxRuntime.jsx("optgroup", { label: group.label, children: options }, group.label) : options;
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
) }),
|
|
93
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
+
esQueryOperandEditors.ConditionOperand,
|
|
95
|
+
{
|
|
96
|
+
condition,
|
|
97
|
+
arity: (info == null ? void 0 : info.arity) ?? "single",
|
|
98
|
+
rowId,
|
|
99
|
+
params: context.params,
|
|
100
|
+
dateMath: Boolean(
|
|
101
|
+
(field == null ? void 0 : field.dataType) === "date" || ((_b = field == null ? void 0 : field.types) == null ? void 0 : _b.includes("date"))
|
|
102
|
+
),
|
|
103
|
+
...values ? { values } : {},
|
|
104
|
+
set,
|
|
105
|
+
onBindParam: (operand, name) => actions.mapParam(path, operand, name),
|
|
106
|
+
onUnbindParam: (name) => actions.unmapParam(path, name)
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
110
|
+
IconButton.IconButton,
|
|
111
|
+
{
|
|
112
|
+
icon: UiTrash.UiTrash,
|
|
113
|
+
label: "Remove condition",
|
|
114
|
+
onClick: () => actions.remove(path)
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
] }),
|
|
118
|
+
warning ? /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "mt-1 text-xs text-amber-600 dark:text-amber-400", children: warning }) : null,
|
|
119
|
+
advanced.length ? /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "mt-1", children: [
|
|
120
|
+
/* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: "Advanced" }),
|
|
121
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex flex-wrap items-end gap-2", children: [
|
|
122
|
+
advanced.map((name) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
123
|
+
esQueryOperandEditors.QualifierInput,
|
|
124
|
+
{
|
|
125
|
+
name,
|
|
126
|
+
schema: qualifiers[name] ?? {},
|
|
127
|
+
value: condition[name],
|
|
128
|
+
onChange: (next) => set({ [name]: next })
|
|
129
|
+
},
|
|
130
|
+
name
|
|
131
|
+
)),
|
|
132
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [
|
|
133
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
134
|
+
"input",
|
|
135
|
+
{
|
|
136
|
+
type: "checkbox",
|
|
137
|
+
checked: condition.optional === true,
|
|
138
|
+
onChange: (event) => set({ optional: event.target.checked })
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
"Optional"
|
|
142
|
+
] })
|
|
143
|
+
] })
|
|
144
|
+
] }) : null
|
|
145
|
+
] });
|
|
146
|
+
}
|
|
147
|
+
function fieldOptions(fields) {
|
|
148
|
+
return fields.map((field) => ({
|
|
149
|
+
value: field.name,
|
|
150
|
+
label: field.name,
|
|
151
|
+
title: (field.types ?? (field.dataType ? [field.dataType] : [])).join(", ")
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
function operatorGroups(catalog, field, current) {
|
|
155
|
+
const offered = esQueryOperators.operatorsForField(catalog, field);
|
|
156
|
+
const groups = [];
|
|
157
|
+
const plain = offered.filter((entry) => !entry.advanced);
|
|
158
|
+
const advanced = offered.filter((entry) => entry.advanced);
|
|
159
|
+
if (!offered.some((entry) => entry.op === current)) {
|
|
160
|
+
const info = catalog.find((entry) => entry.op === current);
|
|
161
|
+
advanced.unshift({ ...info ?? { op: current, label: current, arity: "single", fieldTypes: [] } });
|
|
162
|
+
}
|
|
163
|
+
if (plain.length) groups.push({ operators: plain });
|
|
164
|
+
if (advanced.length) groups.push({ label: "Advanced", operators: advanced });
|
|
165
|
+
return groups;
|
|
166
|
+
}
|
|
167
|
+
exports.EsQueryConditionRow = EsQueryConditionRow;
|
|
168
|
+
//# sourceMappingURL=esQueryConditionRow.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esQueryConditionRow.cjs","sources":["../../src/profiles/esQueryConditionRow.tsx"],"sourcesContent":["/**\n * One leaf condition: which field, which operator, and the operand that\n * operator takes. Which operators a field may use and which advanced qualifiers\n * an operator emits both come from the schema vocabulary, so this file owns the\n * editing surface and never the vocabulary itself.\n */\n\nimport { Combobox } from \"../components/Combobox\";\nimport { IconButton } from \"../components/IconButton\";\nimport { MultiSelect } from \"../components/MultiSelect\";\nimport { Select } from \"../components/select\";\nimport { UiTrash } from \"../icons\";\nimport type { ConditionPath, EsCondition } from \"./esQueryBuilderModel\";\nimport { applyPatch, type Patch } from \"./profileWizardModel\";\nimport type { ParamOperand } from \"./esParamMappingModel\";\nimport type { FieldValuesQuery } from \"./esFieldValues\";\nimport { ConditionOperand, QualifierInput } from \"./esQueryOperandEditors\";\nimport type { ParamDraft } from \"./profileWizardModel\";\nimport {\n changeConditionOperator,\n fieldWarning,\n operatorsForField,\n qualifiersForOperator,\n type EsBuilderVocabulary,\n type EsFieldMapping,\n} from \"./esQueryOperators\";\nimport { occurOptions } from \"./esQueryOccur\";\n\nexport type EsQueryContext = {\n fields: EsFieldMapping[];\n vocabulary: EsBuilderVocabulary;\n /** Declared profile parameters an operand can bind to. */\n params: ParamDraft[];\n /**\n * The values a row's field holds, scoped by the builder to the rest of the\n * query. Absent where the host has no connection to ask.\n */\n values?: (request: {\n path: ConditionPath;\n field: string;\n }) => FieldValuesQuery | undefined;\n};\n\n/**\n * The edits a condition row or group asks for, addressed by path. The builder\n * owns the tree and applies them; every node below it is stateless.\n */\nexport type EsQueryTreeActions = {\n update: (\n path: ConditionPath,\n update: (condition: EsCondition) => EsCondition,\n ) => void;\n insert: (groupPath: ConditionPath, condition: EsCondition) => void;\n remove: (path: ConditionPath) => void;\n mapParam: (path: ConditionPath, operand: ParamOperand, name: string) => void;\n unmapParam: (path: ConditionPath, name: string) => void;\n};\n\nexport function EsQueryConditionRow({\n condition,\n path,\n context,\n actions,\n}: {\n condition: EsCondition;\n path: ConditionPath;\n context: EsQueryContext;\n actions: EsQueryTreeActions;\n}) {\n const { catalog, qualifierNames, qualifierRestrictions, qualifiers } =\n context.vocabulary;\n const field = context.fields.find((entry) => entry.name === condition.field);\n const info = catalog.find((entry) => entry.op === condition.op);\n const warning = field ? fieldWarning(field) : undefined;\n const set = (patch: Patch<EsCondition>) =>\n actions.update(path, (current) => applyPatch(current, patch));\n const rowId = path.join(\"-\") || \"root\";\n const values = condition.field\n ? context.values?.({ path, field: condition.field })\n : undefined;\n\n const advanced = qualifiersForOperator({\n names: qualifierNames,\n ...(qualifierRestrictions ? { restrictions: qualifierRestrictions } : {}),\n op: condition.op,\n });\n\n return (\n <div className=\"rounded-md border bg-card px-2 py-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"w-28 shrink-0\">\n <Select\n aria-label=\"Clause\"\n value={condition.occur || \"filter\"}\n options={occurOptions(context.vocabulary.occurs)}\n onChange={(event) => set({ occur: event.target.value as never })}\n />\n </span>\n {info?.needsField ? (\n <Combobox\n ariaLabel=\"Field\"\n className=\"min-w-56 flex-1\"\n value={condition.field ?? \"\"}\n onChange={(next) => set({ field: next })}\n options={fieldOptions(context.fields)}\n placeholder=\"Field…\"\n />\n ) : null}\n {info?.acceptsFields ? (\n <MultiSelect\n ariaLabel=\"Fields\"\n className=\"min-w-56 flex-1\"\n value={condition.fields ?? []}\n onChange={(next) => set({ fields: next })}\n options={context.fields.map((entry) => ({\n value: entry.name,\n label: entry.name,\n }))}\n placeholder=\"All fields\"\n />\n ) : null}\n <span className=\"w-48 shrink-0\">\n <Select\n aria-label=\"Operator\"\n value={condition.op}\n onChange={(event) => {\n const next = catalog.find(\n (entry) => entry.op === event.target.value,\n );\n if (!next) {\n throw new Error(\n `operator ${event.target.value} is missing from the catalog`,\n );\n }\n actions.update(path, (current) =>\n changeConditionOperator(current, next),\n );\n }}\n >\n {operatorGroups(catalog, field, condition.op).map((group) => {\n const options = group.operators.map((entry) => (\n <option key={entry.op} value={entry.op}>\n {entry.label}\n </option>\n ));\n return group.label ? (\n <optgroup key={group.label} label={group.label}>\n {options}\n </optgroup>\n ) : (\n options\n );\n })}\n </Select>\n </span>\n <ConditionOperand\n condition={condition}\n arity={info?.arity ?? \"single\"}\n rowId={rowId}\n params={context.params}\n dateMath={Boolean(\n field?.dataType === \"date\" || field?.types?.includes(\"date\"),\n )}\n {...(values ? { values } : {})}\n set={set}\n onBindParam={(operand, name) => actions.mapParam(path, operand, name)}\n onUnbindParam={(name) => actions.unmapParam(path, name)}\n />\n <IconButton\n icon={UiTrash}\n label=\"Remove condition\"\n onClick={() => actions.remove(path)}\n />\n </div>\n {warning ? (\n <p role=\"alert\" className=\"mt-1 text-xs text-amber-600 dark:text-amber-400\">\n {warning}\n </p>\n ) : null}\n {advanced.length ? (\n <details className=\"mt-1\">\n <summary className=\"cursor-pointer text-xs text-muted-foreground\">\n Advanced\n </summary>\n <div className=\"mt-2 flex flex-wrap items-end gap-2\">\n {advanced.map((name) => (\n <QualifierInput\n key={name}\n name={name}\n schema={qualifiers[name] ?? {}}\n value={(condition as Record<string, unknown>)[name]}\n onChange={(next) => set({ [name]: next } as Patch<EsCondition>)}\n />\n ))}\n <label className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <input\n type=\"checkbox\"\n checked={condition.optional === true}\n onChange={(event) => set({ optional: event.target.checked })}\n />\n Optional\n </label>\n </div>\n </details>\n ) : null}\n </div>\n );\n}\n\nfunction fieldOptions(fields: EsFieldMapping[]) {\n return fields.map((field) => ({\n value: field.name,\n label: field.name,\n title: (field.types ?? (field.dataType ? [field.dataType] : [])).join(\", \"),\n }));\n}\n\ntype OperatorGroup = {\n label?: string;\n operators: { op: string; label: string }[];\n};\n\n/**\n * operatorGroups splits the offered operators into the ones that suit the field\n * and the ones that fight its analysis, which render behind an Advanced\n * divider. The condition's own operator is always offered, even where the field\n * does not suit it, so changing the field never blanks the control.\n */\nfunction operatorGroups(\n catalog: EsBuilderVocabulary[\"catalog\"],\n field: EsFieldMapping | undefined,\n current: string,\n): OperatorGroup[] {\n const offered = operatorsForField(catalog, field);\n const groups: OperatorGroup[] = [];\n const plain = offered.filter((entry) => !entry.advanced);\n const advanced = offered.filter((entry) => entry.advanced);\n if (!offered.some((entry) => entry.op === current)) {\n const info = catalog.find((entry) => entry.op === current);\n advanced.unshift({ ...(info ?? { op: current, label: current, arity: \"single\", fieldTypes: [] }) });\n }\n if (plain.length) groups.push({ operators: plain });\n if (advanced.length) groups.push({ label: \"Advanced\", operators: advanced });\n return groups;\n}\n"],"names":["fieldWarning","applyPatch","qualifiersForOperator","jsxs","jsx","Select","occurOptions","Combobox","MultiSelect","changeConditionOperator","ConditionOperand","IconButton","UiTrash","QualifierInput","operatorsForField"],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ConditionPath, EsCondition } from './esQueryBuilderModel';
|
|
2
|
+
import { ParamOperand } from './esParamMappingModel';
|
|
3
|
+
import { FieldValuesQuery } from './esFieldValues';
|
|
4
|
+
import { ParamDraft } from './profileWizardModel';
|
|
5
|
+
import { EsBuilderVocabulary, EsFieldMapping } from './esQueryOperators';
|
|
6
|
+
export type EsQueryContext = {
|
|
7
|
+
fields: EsFieldMapping[];
|
|
8
|
+
vocabulary: EsBuilderVocabulary;
|
|
9
|
+
/** Declared profile parameters an operand can bind to. */
|
|
10
|
+
params: ParamDraft[];
|
|
11
|
+
/**
|
|
12
|
+
* The values a row's field holds, scoped by the builder to the rest of the
|
|
13
|
+
* query. Absent where the host has no connection to ask.
|
|
14
|
+
*/
|
|
15
|
+
values?: (request: {
|
|
16
|
+
path: ConditionPath;
|
|
17
|
+
field: string;
|
|
18
|
+
}) => FieldValuesQuery | undefined;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The edits a condition row or group asks for, addressed by path. The builder
|
|
22
|
+
* owns the tree and applies them; every node below it is stateless.
|
|
23
|
+
*/
|
|
24
|
+
export type EsQueryTreeActions = {
|
|
25
|
+
update: (path: ConditionPath, update: (condition: EsCondition) => EsCondition) => void;
|
|
26
|
+
insert: (groupPath: ConditionPath, condition: EsCondition) => void;
|
|
27
|
+
remove: (path: ConditionPath) => void;
|
|
28
|
+
mapParam: (path: ConditionPath, operand: ParamOperand, name: string) => void;
|
|
29
|
+
unmapParam: (path: ConditionPath, name: string) => void;
|
|
30
|
+
};
|
|
31
|
+
export declare function EsQueryConditionRow({ condition, path, context, actions, }: {
|
|
32
|
+
condition: EsCondition;
|
|
33
|
+
path: ConditionPath;
|
|
34
|
+
context: EsQueryContext;
|
|
35
|
+
actions: EsQueryTreeActions;
|
|
36
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
//# sourceMappingURL=esQueryConditionRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esQueryConditionRow.d.ts","sourceRoot":"","sources":["../../src/profiles/esQueryConditionRow.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,UAAU,EAAE,mBAAmB,CAAC;IAChC,0DAA0D;IAC1D,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;QACjB,IAAI,EAAE,aAAa,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,gBAAgB,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,CACN,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,KAAK,WAAW,KAC5C,IAAI,CAAC;IACV,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,KAAK,IAAI,CAAC;IACnE,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7E,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,OAAO,GACR,EAAE;IACD,SAAS,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,kBAAkB,CAAC;CAC7B,2CA2IA"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Combobox } from "../components/Combobox.js";
|
|
3
|
+
import { IconButton } from "../components/IconButton.js";
|
|
4
|
+
import { MultiSelect } from "../components/MultiSelect.js";
|
|
5
|
+
import { Select } from "../components/select.js";
|
|
6
|
+
import { applyPatch } from "./profileWizardModel.js";
|
|
7
|
+
import { ConditionOperand, QualifierInput } from "./esQueryOperandEditors.js";
|
|
8
|
+
import { fieldWarning, qualifiersForOperator, changeConditionOperator, operatorsForField } from "./esQueryOperators.js";
|
|
9
|
+
import { occurOptions } from "./esQueryOccur.js";
|
|
10
|
+
import { UiTrash } from "../icons/components/UiTrash.js";
|
|
11
|
+
function EsQueryConditionRow({
|
|
12
|
+
condition,
|
|
13
|
+
path,
|
|
14
|
+
context,
|
|
15
|
+
actions
|
|
16
|
+
}) {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
const { catalog, qualifierNames, qualifierRestrictions, qualifiers } = context.vocabulary;
|
|
19
|
+
const field = context.fields.find((entry) => entry.name === condition.field);
|
|
20
|
+
const info = catalog.find((entry) => entry.op === condition.op);
|
|
21
|
+
const warning = field ? fieldWarning(field) : void 0;
|
|
22
|
+
const set = (patch) => actions.update(path, (current) => applyPatch(current, patch));
|
|
23
|
+
const rowId = path.join("-") || "root";
|
|
24
|
+
const values = condition.field ? (_a = context.values) == null ? void 0 : _a.call(context, { path, field: condition.field }) : void 0;
|
|
25
|
+
const advanced = qualifiersForOperator({
|
|
26
|
+
names: qualifierNames,
|
|
27
|
+
...qualifierRestrictions ? { restrictions: qualifierRestrictions } : {},
|
|
28
|
+
op: condition.op
|
|
29
|
+
});
|
|
30
|
+
return /* @__PURE__ */ jsxs("div", { className: "rounded-md border bg-card px-2 py-2", children: [
|
|
31
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
32
|
+
/* @__PURE__ */ jsx("span", { className: "w-28 shrink-0", children: /* @__PURE__ */ jsx(
|
|
33
|
+
Select,
|
|
34
|
+
{
|
|
35
|
+
"aria-label": "Clause",
|
|
36
|
+
value: condition.occur || "filter",
|
|
37
|
+
options: occurOptions(context.vocabulary.occurs),
|
|
38
|
+
onChange: (event) => set({ occur: event.target.value })
|
|
39
|
+
}
|
|
40
|
+
) }),
|
|
41
|
+
(info == null ? void 0 : info.needsField) ? /* @__PURE__ */ jsx(
|
|
42
|
+
Combobox,
|
|
43
|
+
{
|
|
44
|
+
ariaLabel: "Field",
|
|
45
|
+
className: "min-w-56 flex-1",
|
|
46
|
+
value: condition.field ?? "",
|
|
47
|
+
onChange: (next) => set({ field: next }),
|
|
48
|
+
options: fieldOptions(context.fields),
|
|
49
|
+
placeholder: "Field…"
|
|
50
|
+
}
|
|
51
|
+
) : null,
|
|
52
|
+
(info == null ? void 0 : info.acceptsFields) ? /* @__PURE__ */ jsx(
|
|
53
|
+
MultiSelect,
|
|
54
|
+
{
|
|
55
|
+
ariaLabel: "Fields",
|
|
56
|
+
className: "min-w-56 flex-1",
|
|
57
|
+
value: condition.fields ?? [],
|
|
58
|
+
onChange: (next) => set({ fields: next }),
|
|
59
|
+
options: context.fields.map((entry) => ({
|
|
60
|
+
value: entry.name,
|
|
61
|
+
label: entry.name
|
|
62
|
+
})),
|
|
63
|
+
placeholder: "All fields"
|
|
64
|
+
}
|
|
65
|
+
) : null,
|
|
66
|
+
/* @__PURE__ */ jsx("span", { className: "w-48 shrink-0", children: /* @__PURE__ */ jsx(
|
|
67
|
+
Select,
|
|
68
|
+
{
|
|
69
|
+
"aria-label": "Operator",
|
|
70
|
+
value: condition.op,
|
|
71
|
+
onChange: (event) => {
|
|
72
|
+
const next = catalog.find(
|
|
73
|
+
(entry) => entry.op === event.target.value
|
|
74
|
+
);
|
|
75
|
+
if (!next) {
|
|
76
|
+
throw new Error(
|
|
77
|
+
`operator ${event.target.value} is missing from the catalog`
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
actions.update(
|
|
81
|
+
path,
|
|
82
|
+
(current) => changeConditionOperator(current, next)
|
|
83
|
+
);
|
|
84
|
+
},
|
|
85
|
+
children: operatorGroups(catalog, field, condition.op).map((group) => {
|
|
86
|
+
const options = group.operators.map((entry) => /* @__PURE__ */ jsx("option", { value: entry.op, children: entry.label }, entry.op));
|
|
87
|
+
return group.label ? /* @__PURE__ */ jsx("optgroup", { label: group.label, children: options }, group.label) : options;
|
|
88
|
+
})
|
|
89
|
+
}
|
|
90
|
+
) }),
|
|
91
|
+
/* @__PURE__ */ jsx(
|
|
92
|
+
ConditionOperand,
|
|
93
|
+
{
|
|
94
|
+
condition,
|
|
95
|
+
arity: (info == null ? void 0 : info.arity) ?? "single",
|
|
96
|
+
rowId,
|
|
97
|
+
params: context.params,
|
|
98
|
+
dateMath: Boolean(
|
|
99
|
+
(field == null ? void 0 : field.dataType) === "date" || ((_b = field == null ? void 0 : field.types) == null ? void 0 : _b.includes("date"))
|
|
100
|
+
),
|
|
101
|
+
...values ? { values } : {},
|
|
102
|
+
set,
|
|
103
|
+
onBindParam: (operand, name) => actions.mapParam(path, operand, name),
|
|
104
|
+
onUnbindParam: (name) => actions.unmapParam(path, name)
|
|
105
|
+
}
|
|
106
|
+
),
|
|
107
|
+
/* @__PURE__ */ jsx(
|
|
108
|
+
IconButton,
|
|
109
|
+
{
|
|
110
|
+
icon: UiTrash,
|
|
111
|
+
label: "Remove condition",
|
|
112
|
+
onClick: () => actions.remove(path)
|
|
113
|
+
}
|
|
114
|
+
)
|
|
115
|
+
] }),
|
|
116
|
+
warning ? /* @__PURE__ */ jsx("p", { role: "alert", className: "mt-1 text-xs text-amber-600 dark:text-amber-400", children: warning }) : null,
|
|
117
|
+
advanced.length ? /* @__PURE__ */ jsxs("details", { className: "mt-1", children: [
|
|
118
|
+
/* @__PURE__ */ jsx("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: "Advanced" }),
|
|
119
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-2 flex flex-wrap items-end gap-2", children: [
|
|
120
|
+
advanced.map((name) => /* @__PURE__ */ jsx(
|
|
121
|
+
QualifierInput,
|
|
122
|
+
{
|
|
123
|
+
name,
|
|
124
|
+
schema: qualifiers[name] ?? {},
|
|
125
|
+
value: condition[name],
|
|
126
|
+
onChange: (next) => set({ [name]: next })
|
|
127
|
+
},
|
|
128
|
+
name
|
|
129
|
+
)),
|
|
130
|
+
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [
|
|
131
|
+
/* @__PURE__ */ jsx(
|
|
132
|
+
"input",
|
|
133
|
+
{
|
|
134
|
+
type: "checkbox",
|
|
135
|
+
checked: condition.optional === true,
|
|
136
|
+
onChange: (event) => set({ optional: event.target.checked })
|
|
137
|
+
}
|
|
138
|
+
),
|
|
139
|
+
"Optional"
|
|
140
|
+
] })
|
|
141
|
+
] })
|
|
142
|
+
] }) : null
|
|
143
|
+
] });
|
|
144
|
+
}
|
|
145
|
+
function fieldOptions(fields) {
|
|
146
|
+
return fields.map((field) => ({
|
|
147
|
+
value: field.name,
|
|
148
|
+
label: field.name,
|
|
149
|
+
title: (field.types ?? (field.dataType ? [field.dataType] : [])).join(", ")
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
function operatorGroups(catalog, field, current) {
|
|
153
|
+
const offered = operatorsForField(catalog, field);
|
|
154
|
+
const groups = [];
|
|
155
|
+
const plain = offered.filter((entry) => !entry.advanced);
|
|
156
|
+
const advanced = offered.filter((entry) => entry.advanced);
|
|
157
|
+
if (!offered.some((entry) => entry.op === current)) {
|
|
158
|
+
const info = catalog.find((entry) => entry.op === current);
|
|
159
|
+
advanced.unshift({ ...info ?? { op: current, label: current, arity: "single", fieldTypes: [] } });
|
|
160
|
+
}
|
|
161
|
+
if (plain.length) groups.push({ operators: plain });
|
|
162
|
+
if (advanced.length) groups.push({ label: "Advanced", operators: advanced });
|
|
163
|
+
return groups;
|
|
164
|
+
}
|
|
165
|
+
export {
|
|
166
|
+
EsQueryConditionRow
|
|
167
|
+
};
|
|
168
|
+
//# sourceMappingURL=esQueryConditionRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esQueryConditionRow.js","sources":["../../src/profiles/esQueryConditionRow.tsx"],"sourcesContent":["/**\n * One leaf condition: which field, which operator, and the operand that\n * operator takes. Which operators a field may use and which advanced qualifiers\n * an operator emits both come from the schema vocabulary, so this file owns the\n * editing surface and never the vocabulary itself.\n */\n\nimport { Combobox } from \"../components/Combobox\";\nimport { IconButton } from \"../components/IconButton\";\nimport { MultiSelect } from \"../components/MultiSelect\";\nimport { Select } from \"../components/select\";\nimport { UiTrash } from \"../icons\";\nimport type { ConditionPath, EsCondition } from \"./esQueryBuilderModel\";\nimport { applyPatch, type Patch } from \"./profileWizardModel\";\nimport type { ParamOperand } from \"./esParamMappingModel\";\nimport type { FieldValuesQuery } from \"./esFieldValues\";\nimport { ConditionOperand, QualifierInput } from \"./esQueryOperandEditors\";\nimport type { ParamDraft } from \"./profileWizardModel\";\nimport {\n changeConditionOperator,\n fieldWarning,\n operatorsForField,\n qualifiersForOperator,\n type EsBuilderVocabulary,\n type EsFieldMapping,\n} from \"./esQueryOperators\";\nimport { occurOptions } from \"./esQueryOccur\";\n\nexport type EsQueryContext = {\n fields: EsFieldMapping[];\n vocabulary: EsBuilderVocabulary;\n /** Declared profile parameters an operand can bind to. */\n params: ParamDraft[];\n /**\n * The values a row's field holds, scoped by the builder to the rest of the\n * query. Absent where the host has no connection to ask.\n */\n values?: (request: {\n path: ConditionPath;\n field: string;\n }) => FieldValuesQuery | undefined;\n};\n\n/**\n * The edits a condition row or group asks for, addressed by path. The builder\n * owns the tree and applies them; every node below it is stateless.\n */\nexport type EsQueryTreeActions = {\n update: (\n path: ConditionPath,\n update: (condition: EsCondition) => EsCondition,\n ) => void;\n insert: (groupPath: ConditionPath, condition: EsCondition) => void;\n remove: (path: ConditionPath) => void;\n mapParam: (path: ConditionPath, operand: ParamOperand, name: string) => void;\n unmapParam: (path: ConditionPath, name: string) => void;\n};\n\nexport function EsQueryConditionRow({\n condition,\n path,\n context,\n actions,\n}: {\n condition: EsCondition;\n path: ConditionPath;\n context: EsQueryContext;\n actions: EsQueryTreeActions;\n}) {\n const { catalog, qualifierNames, qualifierRestrictions, qualifiers } =\n context.vocabulary;\n const field = context.fields.find((entry) => entry.name === condition.field);\n const info = catalog.find((entry) => entry.op === condition.op);\n const warning = field ? fieldWarning(field) : undefined;\n const set = (patch: Patch<EsCondition>) =>\n actions.update(path, (current) => applyPatch(current, patch));\n const rowId = path.join(\"-\") || \"root\";\n const values = condition.field\n ? context.values?.({ path, field: condition.field })\n : undefined;\n\n const advanced = qualifiersForOperator({\n names: qualifierNames,\n ...(qualifierRestrictions ? { restrictions: qualifierRestrictions } : {}),\n op: condition.op,\n });\n\n return (\n <div className=\"rounded-md border bg-card px-2 py-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"w-28 shrink-0\">\n <Select\n aria-label=\"Clause\"\n value={condition.occur || \"filter\"}\n options={occurOptions(context.vocabulary.occurs)}\n onChange={(event) => set({ occur: event.target.value as never })}\n />\n </span>\n {info?.needsField ? (\n <Combobox\n ariaLabel=\"Field\"\n className=\"min-w-56 flex-1\"\n value={condition.field ?? \"\"}\n onChange={(next) => set({ field: next })}\n options={fieldOptions(context.fields)}\n placeholder=\"Field…\"\n />\n ) : null}\n {info?.acceptsFields ? (\n <MultiSelect\n ariaLabel=\"Fields\"\n className=\"min-w-56 flex-1\"\n value={condition.fields ?? []}\n onChange={(next) => set({ fields: next })}\n options={context.fields.map((entry) => ({\n value: entry.name,\n label: entry.name,\n }))}\n placeholder=\"All fields\"\n />\n ) : null}\n <span className=\"w-48 shrink-0\">\n <Select\n aria-label=\"Operator\"\n value={condition.op}\n onChange={(event) => {\n const next = catalog.find(\n (entry) => entry.op === event.target.value,\n );\n if (!next) {\n throw new Error(\n `operator ${event.target.value} is missing from the catalog`,\n );\n }\n actions.update(path, (current) =>\n changeConditionOperator(current, next),\n );\n }}\n >\n {operatorGroups(catalog, field, condition.op).map((group) => {\n const options = group.operators.map((entry) => (\n <option key={entry.op} value={entry.op}>\n {entry.label}\n </option>\n ));\n return group.label ? (\n <optgroup key={group.label} label={group.label}>\n {options}\n </optgroup>\n ) : (\n options\n );\n })}\n </Select>\n </span>\n <ConditionOperand\n condition={condition}\n arity={info?.arity ?? \"single\"}\n rowId={rowId}\n params={context.params}\n dateMath={Boolean(\n field?.dataType === \"date\" || field?.types?.includes(\"date\"),\n )}\n {...(values ? { values } : {})}\n set={set}\n onBindParam={(operand, name) => actions.mapParam(path, operand, name)}\n onUnbindParam={(name) => actions.unmapParam(path, name)}\n />\n <IconButton\n icon={UiTrash}\n label=\"Remove condition\"\n onClick={() => actions.remove(path)}\n />\n </div>\n {warning ? (\n <p role=\"alert\" className=\"mt-1 text-xs text-amber-600 dark:text-amber-400\">\n {warning}\n </p>\n ) : null}\n {advanced.length ? (\n <details className=\"mt-1\">\n <summary className=\"cursor-pointer text-xs text-muted-foreground\">\n Advanced\n </summary>\n <div className=\"mt-2 flex flex-wrap items-end gap-2\">\n {advanced.map((name) => (\n <QualifierInput\n key={name}\n name={name}\n schema={qualifiers[name] ?? {}}\n value={(condition as Record<string, unknown>)[name]}\n onChange={(next) => set({ [name]: next } as Patch<EsCondition>)}\n />\n ))}\n <label className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <input\n type=\"checkbox\"\n checked={condition.optional === true}\n onChange={(event) => set({ optional: event.target.checked })}\n />\n Optional\n </label>\n </div>\n </details>\n ) : null}\n </div>\n );\n}\n\nfunction fieldOptions(fields: EsFieldMapping[]) {\n return fields.map((field) => ({\n value: field.name,\n label: field.name,\n title: (field.types ?? (field.dataType ? [field.dataType] : [])).join(\", \"),\n }));\n}\n\ntype OperatorGroup = {\n label?: string;\n operators: { op: string; label: string }[];\n};\n\n/**\n * operatorGroups splits the offered operators into the ones that suit the field\n * and the ones that fight its analysis, which render behind an Advanced\n * divider. The condition's own operator is always offered, even where the field\n * does not suit it, so changing the field never blanks the control.\n */\nfunction operatorGroups(\n catalog: EsBuilderVocabulary[\"catalog\"],\n field: EsFieldMapping | undefined,\n current: string,\n): OperatorGroup[] {\n const offered = operatorsForField(catalog, field);\n const groups: OperatorGroup[] = [];\n const plain = offered.filter((entry) => !entry.advanced);\n const advanced = offered.filter((entry) => entry.advanced);\n if (!offered.some((entry) => entry.op === current)) {\n const info = catalog.find((entry) => entry.op === current);\n advanced.unshift({ ...(info ?? { op: current, label: current, arity: \"single\", fieldTypes: [] }) });\n }\n if (plain.length) groups.push({ operators: plain });\n if (advanced.length) groups.push({ label: \"Advanced\", operators: advanced });\n return groups;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function isGroupOperator(catalog, op) {
|
|
4
|
+
var _a;
|
|
5
|
+
return ((_a = catalog.find((entry) => entry.op === op)) == null ? void 0 : _a.group) === true;
|
|
6
|
+
}
|
|
7
|
+
function groupOperatorOptions(catalog) {
|
|
8
|
+
return catalog.filter((entry) => entry.group).map((entry) => ({ value: entry.op, label: entry.label }));
|
|
9
|
+
}
|
|
10
|
+
exports.groupOperatorOptions = groupOperatorOptions;
|
|
11
|
+
exports.isGroupOperator = isGroupOperator;
|
|
12
|
+
//# sourceMappingURL=esQueryGroupModel.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esQueryGroupModel.cjs","sources":["../../src/profiles/esQueryGroupModel.ts"],"sourcesContent":["/**\n * A bool or nested group of conditions. A group renders itself for a child that\n * is also a group, so the tree nests to whatever depth the author builds; the\n * compiler places no bound on it either.\n */\n\nimport {\n type EsBuilderVocabulary\n } from \"./esQueryOperators\";\n\n/** Whether an operator holds other conditions rather than matching a value. */\nexport function isGroupOperator(\n catalog: EsBuilderVocabulary[\"catalog\"],\n op: string,\n): boolean {\n return catalog.find((entry) => entry.op === op)?.group === true;\n}\n\n/** The group kinds the catalog offers — bool and nested, today. */\nexport function groupOperatorOptions(catalog: EsBuilderVocabulary[\"catalog\"]) {\n return catalog\n .filter((entry) => entry.group)\n .map((entry) => ({ value: entry.op, label: entry.label }));\n}\n"],"names":[],"mappings":";;AAWO,SAAS,gBACd,SACA,IACS;;AACT,WAAO,aAAQ,KAAK,CAAC,UAAU,MAAM,OAAO,EAAE,MAAvC,mBAA0C,WAAU;AAC7D;AAGO,SAAS,qBAAqB,SAAyC;AAC5E,SAAO,QACJ,OAAO,CAAC,UAAU,MAAM,KAAK,EAC7B,IAAI,CAAC,WAAW,EAAE,OAAO,MAAM,IAAI,OAAO,MAAM,QAAQ;AAC7D;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EsBuilderVocabulary } from './esQueryOperators';
|
|
2
|
+
/** Whether an operator holds other conditions rather than matching a value. */
|
|
3
|
+
export declare function isGroupOperator(catalog: EsBuilderVocabulary["catalog"], op: string): boolean;
|
|
4
|
+
/** The group kinds the catalog offers — bool and nested, today. */
|
|
5
|
+
export declare function groupOperatorOptions(catalog: EsBuilderVocabulary["catalog"]): {
|
|
6
|
+
value: string;
|
|
7
|
+
label: string;
|
|
8
|
+
}[];
|
|
9
|
+
//# sourceMappingURL=esQueryGroupModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esQueryGroupModel.d.ts","sourceRoot":"","sources":["../../src/profiles/esQueryGroupModel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,mBAAmB,EACvB,MAAM,oBAAoB,CAAC;AAE9B,+EAA+E;AAC/E,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,EACvC,EAAE,EAAE,MAAM,GACT,OAAO,CAET;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC;;;IAI3E"}
|