@manta-eu/react 0.1.0 → 0.1.2
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 +100 -37
- package/dist/components/breadcrumbs/index.d.ts +26 -0
- package/dist/components/breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/breadcrumbs/index.js +36 -0
- package/dist/components/channel-icon/index.d.ts +1 -2
- package/dist/components/channel-icon/index.d.ts.map +1 -1
- package/dist/components/channel-icon/index.js +0 -4
- package/dist/components/chip/index.d.ts +14 -0
- package/dist/components/chip/index.d.ts.map +1 -0
- package/dist/components/chip/index.js +8 -0
- package/dist/components/editable-text/index.d.ts +13 -0
- package/dist/components/editable-text/index.d.ts.map +1 -0
- package/dist/components/editable-text/index.js +61 -0
- package/dist/components/explain-fact/ExplainFact.d.ts +16 -0
- package/dist/components/explain-fact/ExplainFact.d.ts.map +1 -0
- package/dist/components/{rdfox-explain/RDFoxExplain.js → explain-fact/ExplainFact.js} +12 -12
- package/dist/components/explain-fact/OutdatedFactNotice.d.ts.map +1 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.d.ts.map +1 -1
- package/dist/components/input/index.js +2 -0
- package/dist/components/input/input-numeric.d.ts +19 -0
- package/dist/components/input/input-numeric.d.ts.map +1 -0
- package/dist/components/input/input-numeric.js +85 -0
- package/dist/components/input/input-tags.d.ts +17 -0
- package/dist/components/input/input-tags.d.ts.map +1 -0
- package/dist/components/input/input-tags.js +46 -0
- package/dist/components/multi-select/index.d.ts +32 -0
- package/dist/components/multi-select/index.d.ts.map +1 -0
- package/dist/components/multi-select/index.js +33 -0
- package/dist/components/multi-select/toggle-value.d.ts +2 -0
- package/dist/components/multi-select/toggle-value.d.ts.map +1 -0
- package/dist/components/multi-select/toggle-value.js +3 -0
- package/dist/components/plan-row/index.d.ts +2 -1
- package/dist/components/plan-row/index.d.ts.map +1 -1
- package/dist/components/plan-row/index.js +2 -14
- package/dist/components/sidebar/index.d.ts +4 -1
- package/dist/components/sidebar/index.d.ts.map +1 -1
- package/dist/components/sidebar/index.js +2 -2
- package/dist/components/skeleton/index.js +1 -1
- package/dist/components/tool-invocation-card/ExplainFactResultDisplay.d.ts +9 -0
- package/dist/components/tool-invocation-card/ExplainFactResultDisplay.d.ts.map +1 -0
- package/dist/components/tool-invocation-card/{ExplainRDFoxResultDisplay.js → ExplainFactResultDisplay.js} +3 -3
- package/dist/components/tool-invocation-card/ToolOutputRenderer.js +2 -2
- package/dist/components/tool-invocation-card/types.d.ts +4 -4
- package/dist/components/tool-invocation-card/types.d.ts.map +1 -1
- package/dist/components/tool-invocation-card/types.js +2 -2
- package/dist/components/tree-multi-select/index.d.ts +1 -1
- package/dist/components/tree-multi-select/index.d.ts.map +1 -1
- package/dist/components/tree-multi-select/index.js +1 -1
- package/dist/components/tree-multi-select/tree-multi-select-rows.d.ts +2 -1
- package/dist/components/tree-multi-select/tree-multi-select-rows.d.ts.map +1 -1
- package/dist/components/tree-multi-select/tree-multi-select-rows.js +21 -31
- package/dist/components/tree-multi-select/tree-multi-select.d.ts +2 -0
- package/dist/components/tree-multi-select/tree-multi-select.d.ts.map +1 -1
- package/dist/components/tree-multi-select/tree-multi-select.js +21 -8
- package/dist/explain-fact/DatalogCode.d.ts.map +1 -0
- package/dist/explain-fact/EntityChip.d.ts.map +1 -0
- package/dist/explain-fact/EntityChip.js +17 -0
- package/dist/explain-fact/ExplainCompactView.d.ts.map +1 -0
- package/dist/explain-fact/ExplainFactState.d.ts +7 -0
- package/dist/explain-fact/ExplainFactState.d.ts.map +1 -0
- package/dist/{rdfox-explain/RDFoxExplainState.js → explain-fact/ExplainFactState.js} +1 -1
- package/dist/explain-fact/ExplainFullView.d.ts.map +1 -0
- package/dist/explain-fact/ExplainStates.d.ts.map +1 -0
- package/dist/explain-fact/ExplainTag.d.ts.map +1 -0
- package/dist/explain-fact/FactNotice.d.ts +7 -0
- package/dist/explain-fact/FactNotice.d.ts.map +1 -0
- package/dist/explain-fact/FactNotice.js +25 -0
- package/dist/explain-fact/FactValue.d.ts.map +1 -0
- package/dist/explain-fact/NumDot.d.ts.map +1 -0
- package/dist/explain-fact/PanelLabel.d.ts.map +1 -0
- package/dist/explain-fact/ProofSubjectHeader.d.ts.map +1 -0
- package/dist/explain-fact/ProvenanceBadge.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/ProvenanceBadge.js +2 -1
- package/dist/explain-fact/RuleVariableTypes.d.ts.map +1 -0
- package/dist/explain-fact/SubstitutedFactNotice.d.ts.map +1 -0
- package/dist/explain-fact/ValuePill.d.ts.map +1 -0
- package/dist/explain-fact/conclusion/ConclusionCard.d.ts.map +1 -0
- package/dist/explain-fact/conclusion/ConclusionSubtitle.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionSubtitle.js +3 -1
- package/dist/explain-fact/conclusion/index.d.ts.map +1 -0
- package/dist/explain-fact/explain-styles.d.ts.map +1 -0
- package/dist/explain-fact/fact-token.d.ts.map +1 -0
- package/dist/explain-fact/formula-hues.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/index.d.ts +2 -3
- package/dist/explain-fact/index.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/index.js +2 -3
- package/dist/explain-fact/inspector/ExplainInspector.d.ts.map +1 -0
- package/dist/explain-fact/inspector/ExplainInspector.js +20 -0
- package/dist/explain-fact/inspector/InspectorBindings.d.ts.map +1 -0
- package/dist/explain-fact/inspector/InspectorFact.d.ts.map +1 -0
- package/dist/explain-fact/inspector/InspectorHeader.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/inspector/InspectorRule.d.ts +3 -0
- package/dist/explain-fact/inspector/InspectorRule.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/inspector/InspectorRule.js +4 -5
- package/dist/explain-fact/inspector/SupportsSection.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/inspector/SupportsSection.js +2 -1
- package/dist/explain-fact/inspector/index.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofFactLabel.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofRowBadge.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofRowContent.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofRowValue.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofTree.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTree.js +1 -1
- package/dist/explain-fact/proof-tree/ProofTreeFormulaFooter.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofTreeNode.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/SupportsTag.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/SupportsTag.js +6 -0
- package/dist/explain-fact/proof-tree/index.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/proof-tree-navigation.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/proof-tree-root-view.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/visible-premises.d.ts.map +1 -0
- package/dist/explain-fact/rule-presentation.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/tree-model.d.ts +18 -9
- package/dist/explain-fact/tree-model.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/tree-model.js +19 -10
- package/dist/explain-fact/use-fact-measure.d.ts.map +1 -0
- package/dist/globals.css +383 -108
- package/dist/graph/nodes/AdMockupCard.js +1 -1
- package/dist/graph/nodes/CreativeMediaCard.js +1 -1
- package/dist/graph/nodes/EntityCardShell.js +1 -1
- package/dist/hooks/use-conversation-starters.d.ts +1 -1
- package/dist/hooks/useValidateActionPlan.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/ldo-ui.d.ts +1 -1
- package/dist/ldo-ui.d.ts.map +1 -1
- package/dist/ldo-ui.js +1 -1
- package/dist/lib/datastore-route-paths.d.ts +2 -2
- package/dist/lib/datastore-route-paths.d.ts.map +1 -1
- package/dist/lib/datastore-route-paths.js +2 -2
- package/dist/lib/datastore-route-table.d.ts +36 -0
- package/dist/lib/datastore-route-table.d.ts.map +1 -0
- package/dist/lib/datastore-route-table.js +43 -0
- package/dist/lib/datastore-routes.d.ts +1 -1
- package/dist/lib/datastore-routes.d.ts.map +1 -1
- package/dist/lib/datastore-routes.js +1 -1
- package/dist/lib/spa-routes.d.ts +3 -0
- package/dist/lib/spa-routes.d.ts.map +1 -0
- package/dist/lib/spa-routes.js +5 -0
- package/dist/routes/data-explorer/components/Breadcrumbs.d.ts.map +1 -1
- package/dist/routes/data-explorer/components/Breadcrumbs.js +5 -5
- package/dist/routes/datastores/components/DatastoreFormDialog.d.ts +18 -0
- package/dist/routes/datastores/components/DatastoreFormDialog.d.ts.map +1 -0
- package/dist/routes/datastores/components/DatastoreFormDialog.js +27 -0
- package/dist/routes/datastores/components/DatastoreTableSkeleton.d.ts +2 -0
- package/dist/routes/datastores/components/DatastoreTableSkeleton.d.ts.map +1 -0
- package/dist/routes/datastores/components/DatastoreTableSkeleton.js +7 -0
- package/dist/routes/datastores/components/DatastoresToolbar.d.ts +18 -0
- package/dist/routes/datastores/components/DatastoresToolbar.d.ts.map +1 -0
- package/dist/routes/datastores/components/DatastoresToolbar.js +29 -0
- package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.d.ts +14 -0
- package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.d.ts.map +1 -0
- package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.js +83 -0
- package/dist/routes/datastores/components/RenameDatastoreGroupDialog.d.ts +9 -0
- package/dist/routes/datastores/components/RenameDatastoreGroupDialog.d.ts.map +1 -0
- package/dist/routes/datastores/components/RenameDatastoreGroupDialog.js +21 -0
- package/dist/routes/datastores/components/StatusBadge.d.ts +21 -0
- package/dist/routes/datastores/components/StatusBadge.d.ts.map +1 -0
- package/dist/routes/datastores/components/StatusBadge.js +49 -0
- package/dist/routes/datastores/components/UnlinkedDatastoresPanel.d.ts +20 -0
- package/dist/routes/datastores/components/UnlinkedDatastoresPanel.d.ts.map +1 -0
- package/dist/routes/datastores/components/UnlinkedDatastoresPanel.js +13 -0
- package/dist/routes/datastores/flatten.d.ts +33 -0
- package/dist/routes/datastores/flatten.d.ts.map +1 -0
- package/dist/routes/datastores/flatten.js +86 -0
- package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts +47 -0
- package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts.map +1 -0
- package/dist/routes/datastores/hooks/useDatastoreColumns.js +165 -0
- package/dist/routes/datastores/hooks/useDatastoreTable.d.ts +14 -0
- package/dist/routes/datastores/hooks/useDatastoreTable.d.ts.map +1 -0
- package/dist/routes/datastores/hooks/useDatastoreTable.js +45 -0
- package/dist/routes/datastores/index.d.ts +2 -0
- package/dist/routes/datastores/index.d.ts.map +1 -0
- package/dist/routes/datastores/index.js +467 -0
- package/dist/routes/explain/ExplainEmpty.d.ts +2 -0
- package/dist/routes/explain/ExplainEmpty.d.ts.map +1 -0
- package/dist/routes/explain/ExplainEmpty.js +8 -0
- package/dist/routes/explain/index.d.ts +2 -0
- package/dist/routes/explain/index.d.ts.map +1 -0
- package/dist/routes/explain/index.js +16 -0
- package/dist/routes/explain/url-params.d.ts +9 -0
- package/dist/routes/explain/url-params.d.ts.map +1 -0
- package/dist/routes/explain/url-params.js +21 -0
- package/dist/routes/integrations/components/ConnectionRow.d.ts.map +1 -1
- package/dist/routes/integrations/components/ConnectionRow.js +1 -1
- package/dist/routes/integrations/connection-view.d.ts.map +1 -1
- package/dist/routes/integrations/connection-view.js +17 -1
- package/dist/routes/integrations/types.d.ts +2 -1
- package/dist/routes/integrations/types.d.ts.map +1 -1
- package/dist/routes/memories/components/ChangeScopeDialog.d.ts +12 -0
- package/dist/routes/memories/components/ChangeScopeDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/ChangeScopeDialog.js +89 -0
- package/dist/routes/memories/components/ConflictMemoryCard.d.ts +13 -0
- package/dist/routes/memories/components/ConflictMemoryCard.d.ts.map +1 -0
- package/dist/routes/memories/components/ConflictMemoryCard.js +43 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts +7 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts.map +1 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.js +6 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts +61 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.js +121 -0
- package/dist/routes/memories/components/EmptyStates.d.ts +18 -0
- package/dist/routes/memories/components/EmptyStates.d.ts.map +1 -0
- package/dist/routes/memories/components/EmptyStates.js +22 -0
- package/dist/routes/memories/components/ImportanceSlider.d.ts +11 -0
- package/dist/routes/memories/components/ImportanceSlider.d.ts.map +1 -0
- package/dist/routes/memories/components/ImportanceSlider.js +31 -0
- package/dist/routes/memories/components/LiveContextTab.d.ts +6 -0
- package/dist/routes/memories/components/LiveContextTab.d.ts.map +1 -0
- package/dist/routes/memories/components/LiveContextTab.js +37 -0
- package/dist/routes/memories/components/LoadingSkeleton.d.ts +2 -0
- package/dist/routes/memories/components/LoadingSkeleton.d.ts.map +1 -0
- package/dist/routes/memories/components/LoadingSkeleton.js +7 -0
- package/dist/routes/memories/components/MemoriesFilters.d.ts +31 -0
- package/dist/routes/memories/components/MemoriesFilters.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesFilters.js +88 -0
- package/dist/routes/memories/components/MemoriesPanel.d.ts +6 -0
- package/dist/routes/memories/components/MemoriesPanel.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesPanel.js +99 -0
- package/dist/routes/memories/components/MemoriesTabPanel.d.ts +30 -0
- package/dist/routes/memories/components/MemoriesTabPanel.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesTabPanel.js +11 -0
- package/dist/routes/memories/components/MemoryActions.d.ts +12 -0
- package/dist/routes/memories/components/MemoryActions.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryActions.js +24 -0
- package/dist/routes/memories/components/MemoryFields.d.ts +32 -0
- package/dist/routes/memories/components/MemoryFields.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryFields.js +30 -0
- package/dist/routes/memories/components/MemoryFormDialog.d.ts +15 -0
- package/dist/routes/memories/components/MemoryFormDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryFormDialog.js +299 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts +9 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.js +99 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.d.ts +8 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.js +7 -0
- package/dist/routes/memories/components/SchemasTab.d.ts +6 -0
- package/dist/routes/memories/components/SchemasTab.d.ts.map +1 -0
- package/dist/routes/memories/components/SchemasTab.js +35 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.d.ts +18 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.js +78 -0
- package/dist/routes/memories/components/TeamPicker.d.ts +8 -0
- package/dist/routes/memories/components/TeamPicker.d.ts.map +1 -0
- package/dist/routes/memories/components/TeamPicker.js +25 -0
- package/dist/routes/memories/components/badges.d.ts +50 -0
- package/dist/routes/memories/components/badges.d.ts.map +1 -0
- package/dist/routes/memories/components/badges.js +106 -0
- package/dist/routes/memories/expiry-utils.d.ts +23 -0
- package/dist/routes/memories/expiry-utils.d.ts.map +1 -0
- package/dist/routes/memories/expiry-utils.js +97 -0
- package/dist/routes/memories/hooks/useConflictCheck.d.ts +18 -0
- package/dist/routes/memories/hooks/useConflictCheck.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useConflictCheck.js +35 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.d.ts +11 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.js +73 -0
- package/dist/routes/memories/hooks/useLiveContext.d.ts +23 -0
- package/dist/routes/memories/hooks/useLiveContext.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useLiveContext.js +102 -0
- package/dist/routes/memories/hooks/useMemoryColumns.d.ts +33 -0
- package/dist/routes/memories/hooks/useMemoryColumns.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useMemoryColumns.js +188 -0
- package/dist/routes/memories/hooks/useMemoryTable.d.ts +33 -0
- package/dist/routes/memories/hooks/useMemoryTable.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useMemoryTable.js +121 -0
- package/dist/routes/memories/index.d.ts +11 -0
- package/dist/routes/memories/index.d.ts.map +1 -0
- package/dist/routes/memories/index.js +472 -0
- package/dist/routes/memories/memory-form-validation.d.ts +8 -0
- package/dist/routes/memories/memory-form-validation.d.ts.map +1 -0
- package/dist/routes/memories/memory-form-validation.js +33 -0
- package/dist/routes/memories/memory-mutation-input.d.ts +6 -0
- package/dist/routes/memories/memory-mutation-input.d.ts.map +1 -0
- package/dist/routes/memories/memory-mutation-input.js +41 -0
- package/dist/routes/plans/components/actionPlansTableConfig.d.ts +3 -3
- package/dist/routes/rules/components/CreateRuleChatModal.d.ts +10 -0
- package/dist/routes/rules/components/CreateRuleChatModal.d.ts.map +1 -0
- package/dist/routes/rules/components/CreateRuleChatModal.js +52 -0
- package/dist/routes/rules/components/RuleActionabilityBadge.d.ts +8 -0
- package/dist/routes/rules/components/RuleActionabilityBadge.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleActionabilityBadge.js +18 -0
- package/dist/routes/rules/components/RuleAffectedActionPlansSection.d.ts +6 -0
- package/dist/routes/rules/components/RuleAffectedActionPlansSection.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleAffectedActionPlansSection.js +151 -0
- package/dist/routes/rules/components/RuleAst.d.ts +6 -0
- package/dist/routes/rules/components/RuleAst.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleAst.js +23 -0
- package/dist/routes/rules/components/RuleDependentRulesSection.d.ts +6 -0
- package/dist/routes/rules/components/RuleDependentRulesSection.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleDependentRulesSection.js +16 -0
- package/dist/routes/rules/components/RuleDetailsPage.d.ts +14 -0
- package/dist/routes/rules/components/RuleDetailsPage.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleDetailsPage.js +51 -0
- package/dist/routes/rules/components/RuleProducersSection.d.ts +7 -0
- package/dist/routes/rules/components/RuleProducersSection.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleProducersSection.js +10 -0
- package/dist/routes/rules/components/RuleSampleFactsSection.d.ts +7 -0
- package/dist/routes/rules/components/RuleSampleFactsSection.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleSampleFactsSection.js +70 -0
- package/dist/routes/rules/components/RulesOverviewHeaderActions.d.ts +17 -0
- package/dist/routes/rules/components/RulesOverviewHeaderActions.d.ts.map +1 -0
- package/dist/routes/rules/components/RulesOverviewHeaderActions.js +55 -0
- package/dist/routes/rules/components/RulesOverviewPage.d.ts +13 -0
- package/dist/routes/rules/components/RulesOverviewPage.d.ts.map +1 -0
- package/dist/routes/rules/components/RulesOverviewPage.js +236 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.d.ts +7 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.js +47 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.d.ts +8 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.js +76 -0
- package/dist/routes/rules/components/SupportedActionShapesList/TokenList.d.ts +6 -0
- package/dist/routes/rules/components/SupportedActionShapesList/TokenList.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/TokenList.js +9 -0
- package/dist/routes/rules/components/SupportedActionShapesList/index.d.ts +2 -0
- package/dist/routes/rules/components/SupportedActionShapesList/index.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/index.js +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.d.ts +20 -0
- package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.js +48 -0
- package/dist/routes/rules/components/datalog-editor/BindingsPreview.d.ts +9 -0
- package/dist/routes/rules/components/datalog-editor/BindingsPreview.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/BindingsPreview.js +38 -0
- package/dist/routes/rules/components/datalog-editor/FactsPreview.d.ts +10 -0
- package/dist/routes/rules/components/datalog-editor/FactsPreview.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/FactsPreview.js +43 -0
- package/dist/routes/rules/components/datalog-editor/PreviewPanel.d.ts +7 -0
- package/dist/routes/rules/components/datalog-editor/PreviewPanel.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/PreviewPanel.js +8 -0
- package/dist/routes/rules/components/datalog-editor/QueryResults.d.ts +9 -0
- package/dist/routes/rules/components/datalog-editor/QueryResults.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/QueryResults.js +22 -0
- package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.d.ts +11 -0
- package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.js +21 -0
- package/dist/routes/rules/components/rule-producers.d.ts +15 -0
- package/dist/routes/rules/components/rule-producers.d.ts.map +1 -0
- package/dist/routes/rules/components/rule-producers.js +76 -0
- package/dist/routes/rules/components/sample-facts-query.d.ts +9 -0
- package/dist/routes/rules/components/sample-facts-query.d.ts.map +1 -0
- package/dist/routes/rules/components/sample-facts-query.js +71 -0
- package/dist/routes/rules/datalog-editor.d.ts +6 -0
- package/dist/routes/rules/datalog-editor.d.ts.map +1 -0
- package/dist/routes/rules/datalog-editor.js +7 -0
- package/dist/routes/rules/hooks/useRuleFactsPreview.d.ts +53 -0
- package/dist/routes/rules/hooks/useRuleFactsPreview.d.ts.map +1 -0
- package/dist/routes/rules/hooks/useRuleFactsPreview.js +214 -0
- package/dist/routes/rules/hooks/useSparqlQueryExecution.d.ts +14 -0
- package/dist/routes/rules/hooks/useSparqlQueryExecution.d.ts.map +1 -0
- package/dist/routes/rules/hooks/useSparqlQueryExecution.js +77 -0
- package/dist/routes/rules/pages.d.ts +6 -0
- package/dist/routes/rules/pages.d.ts.map +1 -0
- package/dist/routes/rules/pages.js +7 -0
- package/dist/rules/RuleNameLink.d.ts +6 -0
- package/dist/rules/RuleNameLink.d.ts.map +1 -0
- package/dist/rules/RuleNameLink.js +8 -0
- package/package.json +64 -24
- package/src/globals.css +18 -18
- package/src/themes/manta-dark.css +1 -4
- package/src/themes/manta.css +1 -0
- package/src/themes/standard.css +12 -11
- package/dist/components/channel-icon/marketer-icon.d.ts +0 -4
- package/dist/components/channel-icon/marketer-icon.d.ts.map +0 -1
- package/dist/components/channel-icon/marketer-icon.js +0 -6
- package/dist/components/rdfox-explain/OutdatedFactNotice.d.ts.map +0 -1
- package/dist/components/rdfox-explain/RDFoxExplain.d.ts +0 -16
- package/dist/components/rdfox-explain/RDFoxExplain.d.ts.map +0 -1
- package/dist/components/tool-invocation-card/ExplainRDFoxResultDisplay.d.ts +0 -9
- package/dist/components/tool-invocation-card/ExplainRDFoxResultDisplay.d.ts.map +0 -1
- package/dist/lib/test-utils.d.ts +0 -4
- package/dist/lib/test-utils.d.ts.map +0 -1
- package/dist/lib/test-utils.js +0 -16
- package/dist/rdfox-explain/AbsentFactNotice.d.ts +0 -5
- package/dist/rdfox-explain/AbsentFactNotice.d.ts.map +0 -1
- package/dist/rdfox-explain/AbsentFactNotice.js +0 -6
- package/dist/rdfox-explain/DatalogCode.d.ts.map +0 -1
- package/dist/rdfox-explain/EntityChip.d.ts.map +0 -1
- package/dist/rdfox-explain/EntityChip.js +0 -9
- package/dist/rdfox-explain/ExplainCompactView.d.ts.map +0 -1
- package/dist/rdfox-explain/ExplainFullView.d.ts.map +0 -1
- package/dist/rdfox-explain/ExplainStates.d.ts.map +0 -1
- package/dist/rdfox-explain/ExplainTag.d.ts.map +0 -1
- package/dist/rdfox-explain/FactValue.d.ts.map +0 -1
- package/dist/rdfox-explain/NumDot.d.ts.map +0 -1
- package/dist/rdfox-explain/PanelLabel.d.ts.map +0 -1
- package/dist/rdfox-explain/ProofSubjectHeader.d.ts.map +0 -1
- package/dist/rdfox-explain/ProvenanceBadge.d.ts.map +0 -1
- package/dist/rdfox-explain/RDFoxExplainState.d.ts +0 -7
- package/dist/rdfox-explain/RDFoxExplainState.d.ts.map +0 -1
- package/dist/rdfox-explain/RuleVariableTypes.d.ts.map +0 -1
- package/dist/rdfox-explain/StoredFactNotice.d.ts +0 -5
- package/dist/rdfox-explain/StoredFactNotice.d.ts.map +0 -1
- package/dist/rdfox-explain/StoredFactNotice.js +0 -6
- package/dist/rdfox-explain/SubstitutedFactNotice.d.ts.map +0 -1
- package/dist/rdfox-explain/ValuePill.d.ts.map +0 -1
- package/dist/rdfox-explain/busy-aggregate-fixture.d.ts +0 -7
- package/dist/rdfox-explain/busy-aggregate-fixture.d.ts.map +0 -1
- package/dist/rdfox-explain/busy-aggregate-fixture.js +0 -6
- package/dist/rdfox-explain/conclusion/ConclusionCard.d.ts.map +0 -1
- package/dist/rdfox-explain/conclusion/ConclusionSubtitle.d.ts.map +0 -1
- package/dist/rdfox-explain/conclusion/index.d.ts.map +0 -1
- package/dist/rdfox-explain/explain-styles.d.ts.map +0 -1
- package/dist/rdfox-explain/fact-token.d.ts.map +0 -1
- package/dist/rdfox-explain/formula-hues.d.ts.map +0 -1
- package/dist/rdfox-explain/index.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/ExplainInspector.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/ExplainInspector.js +0 -22
- package/dist/rdfox-explain/inspector/InspectorBindings.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/InspectorFact.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/InspectorHeader.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/InspectorRule.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/SupportsSection.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/index.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofFactLabel.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofRowBadge.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofRowContent.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofRowValue.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofTree.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofTreeFormulaFooter.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofTreeNode.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/SupportsTag.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/SupportsTag.js +0 -6
- package/dist/rdfox-explain/proof-tree/index.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/proof-tree-navigation.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/proof-tree-root-view.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/visible-premises.d.ts.map +0 -1
- package/dist/rdfox-explain/rule-presentation.d.ts.map +0 -1
- package/dist/rdfox-explain/tree-model.d.ts.map +0 -1
- package/dist/rdfox-explain/use-fact-measure.d.ts.map +0 -1
- package/dist/test-support.d.ts +0 -9
- package/dist/test-support.d.ts.map +0 -1
- package/dist/test-support.js +0 -18
- package/src/themes/marketer-dark.css +0 -70
- /package/dist/components/{rdfox-explain → explain-fact}/OutdatedFactNotice.d.ts +0 -0
- /package/dist/components/{rdfox-explain → explain-fact}/OutdatedFactNotice.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/DatalogCode.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/DatalogCode.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/EntityChip.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainCompactView.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainCompactView.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainFullView.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainFullView.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainStates.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainStates.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainTag.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainTag.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/FactValue.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/FactValue.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/NumDot.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/NumDot.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/PanelLabel.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/PanelLabel.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ProofSubjectHeader.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ProofSubjectHeader.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ProvenanceBadge.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/RuleVariableTypes.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/RuleVariableTypes.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/SubstitutedFactNotice.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/SubstitutedFactNotice.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ValuePill.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ValuePill.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionCard.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionCard.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionSubtitle.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/index.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/index.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/explain-styles.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/explain-styles.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/fact-token.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/fact-token.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/formula-hues.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/formula-hues.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/ExplainInspector.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorBindings.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorBindings.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorFact.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorFact.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorHeader.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorHeader.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/SupportsSection.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/index.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/index.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofFactLabel.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofFactLabel.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowBadge.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowBadge.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowContent.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowContent.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowValue.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowValue.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTree.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeFormulaFooter.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeFormulaFooter.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeNode.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeNode.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/SupportsTag.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/index.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/index.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-navigation.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-navigation.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-root-view.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-root-view.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/visible-premises.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/visible-premises.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/rule-presentation.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/rule-presentation.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/use-fact-measure.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/use-fact-measure.js +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Button } from "#components/button/index";
|
|
4
|
+
import { Input } from "#components/input/index";
|
|
5
|
+
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "#components/modal/index";
|
|
6
|
+
export function RenameDatastoreGroupDialog(props) {
|
|
7
|
+
const { target, onSubmit, onCancel } = props;
|
|
8
|
+
const [name, setName] = useState(target.name);
|
|
9
|
+
const canSubmit = !!name.trim() && name.trim() !== target.name;
|
|
10
|
+
function submit() {
|
|
11
|
+
if (!canSubmit)
|
|
12
|
+
return;
|
|
13
|
+
onSubmit(name.trim());
|
|
14
|
+
}
|
|
15
|
+
return (_jsx(Dialog, { open: true, onOpenChange: (nextOpen) => !nextOpen && onCancel(), children: _jsxs(DialogContent, { className: "flex flex-col overflow-hidden", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { text: target.isOrganization ? "Rename organization" : "Rename datastore" }), _jsx(DialogDescription, { children: "Only changes the display name - the datastore id stays the same, so nothing else needs updating." })] }), _jsx(Input, { autoFocus: true, label: target.isOrganization ? "Organization name" : "Name", value: name, onChange: (event) => setName(event.target.value), onKeyDown: (event) => {
|
|
16
|
+
if (event.key === "Enter")
|
|
17
|
+
submit();
|
|
18
|
+
if (event.key === "Escape")
|
|
19
|
+
onCancel();
|
|
20
|
+
} }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "tertiary", onClick: onCancel, children: "Cancel" }), _jsx(Button, { onClick: submit, disabled: !canSubmit, children: "Rename" })] })] }) }));
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type DatastoreStatus, type DatastoreStatusCategory } from "#components/datastore-management/tree";
|
|
2
|
+
export type DatastoreStatusFilterValue = "noDatastore" | "checking" | DatastoreStatusCategory;
|
|
3
|
+
export declare function datastoreStatusFilterValue(node: {
|
|
4
|
+
datastoreId?: string;
|
|
5
|
+
removed: boolean;
|
|
6
|
+
isUnlinked?: boolean;
|
|
7
|
+
}, status?: DatastoreStatus): DatastoreStatusFilterValue;
|
|
8
|
+
export declare const datastoreStatusFilterOptions: {
|
|
9
|
+
id: "ALL" | DatastoreStatusFilterValue;
|
|
10
|
+
label: string;
|
|
11
|
+
}[];
|
|
12
|
+
export type DatastoreStatusBadgeProps = {
|
|
13
|
+
node: {
|
|
14
|
+
datastoreId?: string;
|
|
15
|
+
removed: boolean;
|
|
16
|
+
isUnlinked?: boolean;
|
|
17
|
+
};
|
|
18
|
+
status?: DatastoreStatus;
|
|
19
|
+
};
|
|
20
|
+
export declare function DatastoreStatusBadge(props: DatastoreStatusBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=StatusBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../../src/routes/datastores/components/StatusBadge.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC7B,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,0BAA0B,GAAG,aAAa,GAAG,UAAU,GAAG,uBAAuB,CAAC;AAE9F,wBAAgB,0BAA0B,CACxC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,MAAM,CAAC,EAAE,eAAe,GACvB,0BAA0B,CAG5B;AAkCD,eAAO,MAAM,4BAA4B,EAAE;IAAE,EAAE,EAAE,KAAK,GAAG,0BAA0B,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAGnG,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACvE,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAapE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
3
|
+
import { LoaderCircle } from "lucide-react";
|
|
4
|
+
import { Badge } from "#components/badge/index";
|
|
5
|
+
import { datastoreStatusCategory, } from "#components/datastore-management/tree";
|
|
6
|
+
export function datastoreStatusFilterValue(node, status) {
|
|
7
|
+
if (!isPresent(node.datastoreId))
|
|
8
|
+
return "noDatastore";
|
|
9
|
+
return datastoreStatusCategory(node, status) ?? "checking";
|
|
10
|
+
}
|
|
11
|
+
// The only place these strings live: the badge and the filter dropdown both read from here.
|
|
12
|
+
const badgeConfigByFilterValue = {
|
|
13
|
+
ready: { label: "Ready", variant: "success" },
|
|
14
|
+
materializing: {
|
|
15
|
+
label: "Materializing",
|
|
16
|
+
variant: "warning",
|
|
17
|
+
spinning: true,
|
|
18
|
+
title: "KGC is creating its knowledge graph. This can take a few minutes.",
|
|
19
|
+
},
|
|
20
|
+
notRegistered: {
|
|
21
|
+
label: "Not registered",
|
|
22
|
+
variant: "destructive",
|
|
23
|
+
title: "This id never reached the datastore registry, so nothing will build it. Provision it again.",
|
|
24
|
+
},
|
|
25
|
+
offline: { label: "Offline", variant: "destructive" },
|
|
26
|
+
unavailable: { label: "Status unavailable", variant: "copy" },
|
|
27
|
+
checking: { label: "Checking…", variant: "copy", spinning: true },
|
|
28
|
+
removed: { label: "Removed", variant: "copy" },
|
|
29
|
+
noDatastore: { label: "No datastore", variant: "copy" },
|
|
30
|
+
};
|
|
31
|
+
const filterOptionOrder = [
|
|
32
|
+
"ready",
|
|
33
|
+
"materializing",
|
|
34
|
+
"notRegistered",
|
|
35
|
+
"offline",
|
|
36
|
+
"unavailable",
|
|
37
|
+
"removed",
|
|
38
|
+
];
|
|
39
|
+
export const datastoreStatusFilterOptions = [
|
|
40
|
+
{ id: "ALL", label: "All statuses" },
|
|
41
|
+
...filterOptionOrder.map((id) => ({ id, label: badgeConfigByFilterValue[id].label })),
|
|
42
|
+
];
|
|
43
|
+
export function DatastoreStatusBadge(props) {
|
|
44
|
+
const { node, status } = props;
|
|
45
|
+
if (!isPresent(node.datastoreId))
|
|
46
|
+
return _jsx("span", { className: "typography-tiny text-muted-foreground", children: "\u2014" });
|
|
47
|
+
const config = badgeConfigByFilterValue[datastoreStatusFilterValue(node, status)];
|
|
48
|
+
return (_jsxs(Badge, { size: "sm", variant: config.variant, className: "cursor-default", title: config.title, children: [config.spinning && _jsx(LoaderCircle, { className: "size-3 animate-spin" }), config.label] }));
|
|
49
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Table } from "@tanstack/react-table";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import type { DatastoreRow } from "../flatten.js";
|
|
4
|
+
import type { StatusFilter } from "../hooks/useDatastoreTable.js";
|
|
5
|
+
type UnlinkedDatastoresPanelProps = {
|
|
6
|
+
tabs: ReactNode;
|
|
7
|
+
table: Table<DatastoreRow>;
|
|
8
|
+
rows: DatastoreRow[];
|
|
9
|
+
searchQuery: string;
|
|
10
|
+
onSearchQueryChange: (query: string) => void;
|
|
11
|
+
statusFilter: StatusFilter;
|
|
12
|
+
onStatusFilterChange: (status: StatusFilter) => void;
|
|
13
|
+
columnLabels: Record<string, string>;
|
|
14
|
+
columnDefaultOrder: string[];
|
|
15
|
+
isLoading: boolean;
|
|
16
|
+
errorMessage: string | null;
|
|
17
|
+
};
|
|
18
|
+
export declare function UnlinkedDatastoresPanel(props: UnlinkedDatastoresPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=UnlinkedDatastoresPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnlinkedDatastoresPanel.d.ts","sourceRoot":"","sources":["../../../../src/routes/datastores/components/UnlinkedDatastoresPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAQ/D,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACrD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,2CAmD1E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
3
|
+
import { Unlink } from "lucide-react";
|
|
4
|
+
import { DatastoresToolbar } from "./DatastoresToolbar.js";
|
|
5
|
+
import { DatastoreTableSkeleton } from "./DatastoreTableSkeleton.js";
|
|
6
|
+
import { Banner } from "#components/banner/index";
|
|
7
|
+
import { EmptyState } from "#components/empty-state/index";
|
|
8
|
+
import { DataTable } from "#components/table/index";
|
|
9
|
+
import { TablePagination } from "#components/table-pagination/index";
|
|
10
|
+
export function UnlinkedDatastoresPanel(props) {
|
|
11
|
+
const { tabs, table, rows, searchQuery, onSearchQueryChange, statusFilter, onStatusFilterChange, columnLabels, columnDefaultOrder, isLoading, errorMessage, } = props;
|
|
12
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "border-b border-muted-border px-5 py-3 shrink-0", children: _jsx(DatastoresToolbar, { tabs: tabs, searchQuery: searchQuery, onSearchQueryChange: onSearchQueryChange, searchPlaceholder: "Search by datastore ID...", statusFilter: statusFilter, onStatusFilterChange: onStatusFilterChange, table: table, columnLabels: columnLabels, columnDefaultOrder: columnDefaultOrder }) }), _jsxs("div", { className: "flex-1 overflow-auto p-4", children: [isLoading && _jsx(DatastoreTableSkeleton, {}), errorMessage && _jsx(Banner, { label: errorMessage }), !isLoading && !isPresent(rows) && (_jsx(EmptyState, { icon: Unlink, title: "No unlinked datastores", description: "Datastores that exist without an organization or group pointing at them show up here, ready to be linked." })), !isLoading && isPresent(rows) && (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx("div", { className: "rounded-xl border border-muted-border bg-card overflow-hidden", children: _jsx(DataTable, { table: table, noResultsMessage: "No unlinked datastores match your filters." }) }), _jsx(TablePagination, { table: table, total: rows.length })] }))] })] }));
|
|
13
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { GQLDatastoreTreeNode } from "@manta-eu/client";
|
|
2
|
+
import { type Realm } from "@manta-eu/ldo/realm";
|
|
3
|
+
import type { DatastoreStatusFilterValue } from "./components/StatusBadge.js";
|
|
4
|
+
export type DatastoreRow = {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
depth: number;
|
|
8
|
+
organizationId: string;
|
|
9
|
+
organizationName: string;
|
|
10
|
+
organizationAlias: string;
|
|
11
|
+
path: string;
|
|
12
|
+
datastoreId?: string;
|
|
13
|
+
removed: boolean;
|
|
14
|
+
provisionedAt?: string;
|
|
15
|
+
provisionedBy?: string;
|
|
16
|
+
isOrganization: boolean;
|
|
17
|
+
isRealmDefault?: boolean;
|
|
18
|
+
isUnlinked?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export declare function realmDefaultRow(datastoreId: Realm): DatastoreRow;
|
|
21
|
+
export type DatastoreRowVisibility = {
|
|
22
|
+
showArchived: boolean;
|
|
23
|
+
showUnprovisioned: boolean;
|
|
24
|
+
};
|
|
25
|
+
export declare function visibleDatastoreRows(rows: DatastoreRow[], visibility: DatastoreRowVisibility): DatastoreRow[];
|
|
26
|
+
export declare function hiddenRowCount(rows: DatastoreRow[], visibility: DatastoreRowVisibility, key: keyof DatastoreRowVisibility, shownCount: number): number;
|
|
27
|
+
export declare function organizationNameKey(name: string): string;
|
|
28
|
+
export declare function existingOrganizationNameKeys(rows: DatastoreRow[]): Set<string>;
|
|
29
|
+
export declare function organizationNames(rows: DatastoreRow[]): string[];
|
|
30
|
+
export declare function visibilityForStatusFilter(visibility: DatastoreRowVisibility, status: DatastoreStatusFilterValue | "ALL"): DatastoreRowVisibility;
|
|
31
|
+
export declare function unlinkedDatastoreRow(datastoreId: string): DatastoreRow;
|
|
32
|
+
export declare function toDatastoreRows(nodes: GQLDatastoreTreeNode[]): DatastoreRow[];
|
|
33
|
+
//# sourceMappingURL=flatten.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../../src/routes/datastores/flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,MAAM,MAAM,YAAY,GAAG;IAEzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,cAAc,EAAE,OAAO,CAAC;IAExB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,CAAC,WAAW,EAAE,KAAK,GAAG,YAAY,CAchE;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAcF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,sBAAsB,GAAG,YAAY,EAAE,CAG7G;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAAE,EACpB,UAAU,EAAE,sBAAsB,EAClC,GAAG,EAAE,MAAM,sBAAsB,EACjC,UAAU,EAAE,MAAM,GACjB,MAAM,CAIR;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAE9E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAEhE;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,sBAAsB,EAClC,MAAM,EAAE,0BAA0B,GAAG,KAAK,GACzC,sBAAsB,CAMxB;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CActE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,YAAY,EAAE,CAe7E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { realmVocabLabel } from "@manta-eu/ldo/realm";
|
|
2
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
3
|
+
import { match } from "ts-pattern";
|
|
4
|
+
export function realmDefaultRow(datastoreId) {
|
|
5
|
+
return {
|
|
6
|
+
id: datastoreId,
|
|
7
|
+
name: realmVocabLabel(datastoreId),
|
|
8
|
+
depth: 0,
|
|
9
|
+
organizationId: "",
|
|
10
|
+
organizationName: "",
|
|
11
|
+
organizationAlias: "",
|
|
12
|
+
path: "",
|
|
13
|
+
datastoreId,
|
|
14
|
+
removed: false,
|
|
15
|
+
isOrganization: false,
|
|
16
|
+
isRealmDefault: true,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function matchesVisibility(row, visibility) {
|
|
20
|
+
return (visibility.showArchived || !row.removed) && (visibility.showUnprovisioned || isPresent(row.datastoreId));
|
|
21
|
+
}
|
|
22
|
+
function hasVisibleDescendant(rows, shown, index) {
|
|
23
|
+
const depth = rows[index]?.depth ?? 0;
|
|
24
|
+
for (let i = index + 1; i < rows.length && (rows[i]?.depth ?? 0) > depth; i++) {
|
|
25
|
+
if (shown[i])
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
export function visibleDatastoreRows(rows, visibility) {
|
|
31
|
+
const shown = rows.map((row) => matchesVisibility(row, visibility));
|
|
32
|
+
return rows.filter((_row, index) => shown[index] || hasVisibleDescendant(rows, shown, index));
|
|
33
|
+
}
|
|
34
|
+
export function hiddenRowCount(rows, visibility, key, shownCount) {
|
|
35
|
+
if (visibility[key])
|
|
36
|
+
return 0;
|
|
37
|
+
return visibleDatastoreRows(rows, { ...visibility, [key]: true }).length - shownCount;
|
|
38
|
+
}
|
|
39
|
+
// Matches Keycloak's own org lookup (ensureOrganization), which is case-insensitive and trims too.
|
|
40
|
+
export function organizationNameKey(name) {
|
|
41
|
+
return name.trim().toLowerCase();
|
|
42
|
+
}
|
|
43
|
+
export function existingOrganizationNameKeys(rows) {
|
|
44
|
+
return new Set(rows.filter((row) => row.isOrganization).map((row) => organizationNameKey(row.organizationName)));
|
|
45
|
+
}
|
|
46
|
+
export function organizationNames(rows) {
|
|
47
|
+
return [...new Set(rows.filter((row) => row.isOrganization).map((row) => row.organizationName))].sort();
|
|
48
|
+
}
|
|
49
|
+
export function visibilityForStatusFilter(visibility, status) {
|
|
50
|
+
return match(status)
|
|
51
|
+
.with("removed", () => ({ ...visibility, showArchived: true }))
|
|
52
|
+
.with("noDatastore", () => ({ ...visibility, showUnprovisioned: true }))
|
|
53
|
+
.with("ALL", "ready", "materializing", "notRegistered", "offline", "unavailable", "checking", () => visibility)
|
|
54
|
+
.exhaustive();
|
|
55
|
+
}
|
|
56
|
+
export function unlinkedDatastoreRow(datastoreId) {
|
|
57
|
+
return {
|
|
58
|
+
id: `unlinked:${datastoreId}`,
|
|
59
|
+
name: datastoreId,
|
|
60
|
+
depth: 0,
|
|
61
|
+
organizationId: "",
|
|
62
|
+
organizationName: "",
|
|
63
|
+
organizationAlias: "",
|
|
64
|
+
path: "",
|
|
65
|
+
datastoreId,
|
|
66
|
+
removed: false,
|
|
67
|
+
isOrganization: false,
|
|
68
|
+
isUnlinked: true,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function toDatastoreRows(nodes) {
|
|
72
|
+
return nodes.map((node) => ({
|
|
73
|
+
id: node.id,
|
|
74
|
+
name: node.name,
|
|
75
|
+
depth: node.depth,
|
|
76
|
+
organizationId: node.organizationId,
|
|
77
|
+
organizationName: node.organizationName,
|
|
78
|
+
organizationAlias: node.organizationAlias,
|
|
79
|
+
path: node.path,
|
|
80
|
+
datastoreId: node.datastoreId ?? undefined,
|
|
81
|
+
removed: node.removed,
|
|
82
|
+
provisionedAt: node.provisionedAt ?? undefined,
|
|
83
|
+
provisionedBy: node.provisionedBy ?? undefined,
|
|
84
|
+
isOrganization: node.isOrganization,
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ColumnDef } from "@tanstack/react-table";
|
|
2
|
+
import type { DatastoreRow } from "../flatten.js";
|
|
3
|
+
import { type DatastoreStatus } from "#components/datastore-management/tree";
|
|
4
|
+
export declare const datastoreColumnIds: {
|
|
5
|
+
readonly name: "name";
|
|
6
|
+
readonly organizationName: "organizationName";
|
|
7
|
+
readonly datastoreId: "datastoreId";
|
|
8
|
+
readonly suggestedMatch: "suggestedMatch";
|
|
9
|
+
readonly status: "status";
|
|
10
|
+
readonly provisionedBy: "provisionedBy";
|
|
11
|
+
readonly provisionedAt: "provisionedAt";
|
|
12
|
+
readonly actions: "actions";
|
|
13
|
+
};
|
|
14
|
+
export declare const datastoreColumnLabels: {
|
|
15
|
+
name: string;
|
|
16
|
+
organizationName: string;
|
|
17
|
+
datastoreId: string;
|
|
18
|
+
status: string;
|
|
19
|
+
provisionedBy: string;
|
|
20
|
+
provisionedAt: string;
|
|
21
|
+
};
|
|
22
|
+
export declare const defaultColumnOrder: ("name" | "status" | "actions" | "datastoreId" | "organizationName" | "suggestedMatch" | "provisionedBy" | "provisionedAt")[];
|
|
23
|
+
export declare const unlinkedColumnLabels: Record<string, string>;
|
|
24
|
+
export declare const unlinkedColumnOrder: ("status" | "actions" | "datastoreId" | "suggestedMatch")[];
|
|
25
|
+
type UseDatastoreColumnsArgs = {
|
|
26
|
+
statusByDatastoreId: Record<string, DatastoreStatus>;
|
|
27
|
+
currentDatastoreId?: string;
|
|
28
|
+
isSwitching?: boolean;
|
|
29
|
+
indented: boolean;
|
|
30
|
+
matchableRowIds: Set<string>;
|
|
31
|
+
suggestedMatchByDatastoreId?: Record<string, DatastoreRow>;
|
|
32
|
+
onSelect: (row: DatastoreRow) => void;
|
|
33
|
+
onAddChild: (row: DatastoreRow) => void;
|
|
34
|
+
onLink: (row: DatastoreRow) => void;
|
|
35
|
+
onProvision: (row: DatastoreRow) => void;
|
|
36
|
+
onLinkExisting: (row: DatastoreRow) => void;
|
|
37
|
+
onRemove: (row: DatastoreRow) => void;
|
|
38
|
+
onRestore: (row: DatastoreRow) => void;
|
|
39
|
+
onRename: (row: DatastoreRow) => void;
|
|
40
|
+
onRegister: (row: DatastoreRow) => void;
|
|
41
|
+
onManageUsers: (row: DatastoreRow) => void;
|
|
42
|
+
onBringOnline: (row: DatastoreRow) => void;
|
|
43
|
+
isBringingOnline?: boolean;
|
|
44
|
+
};
|
|
45
|
+
export declare function useDatastoreColumns(args: UseDatastoreColumnsArgs): ColumnDef<DatastoreRow>[];
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=useDatastoreColumns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDatastoreColumns.d.ts","sourceRoot":"","sources":["../../../../src/routes/datastores/hooks/useDatastoreColumns.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAuBvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAYvH,eAAO,MAAM,kBAAkB;;;;;;;;;CASrB,CAAC;AASX,eAAO,MAAM,qBAAqB;;;;;;;CAOkB,CAAC;AAErD,eAAO,MAAM,kBAAkB,+HAAoC,CAAC;AAEpE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,6DAK/B,CAAC;AAcF,KAAK,uBAAuB,GAAG;IAC7B,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3D,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,CA0U5F"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { enableDatastoreRemoval } from "@manta-eu/client/shared/constants";
|
|
3
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
4
|
+
import { formatDistanceToNow } from "date-fns";
|
|
5
|
+
import { Check, DatabaseZap, Link2, MoreHorizontal, Pencil, Plus, Power, RefreshCw, RotateCcw, Trash2, TriangleAlert, Users, } from "lucide-react";
|
|
6
|
+
import { useMemo } from "react";
|
|
7
|
+
import { match } from "ts-pattern";
|
|
8
|
+
import { DatastoreStatusBadge, datastoreStatusFilterValue, } from "../components/StatusBadge.js";
|
|
9
|
+
import { Badge } from "#components/badge/index";
|
|
10
|
+
import { Button } from "#components/button/index";
|
|
11
|
+
import { datastoreStatusCategory, isMaterializing } from "#components/datastore-management/tree";
|
|
12
|
+
import { Dropdown, DropdownContent, DropdownItem, DropdownSeparator, DropdownTrigger, } from "#components/dropdown/index";
|
|
13
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "#components/tooltip/index";
|
|
14
|
+
import { NestedMarker, nestedIndent } from "#ldo-ui";
|
|
15
|
+
import { cn } from "#lib/utils";
|
|
16
|
+
export const datastoreColumnIds = {
|
|
17
|
+
name: "name",
|
|
18
|
+
organizationName: "organizationName",
|
|
19
|
+
datastoreId: "datastoreId",
|
|
20
|
+
suggestedMatch: "suggestedMatch",
|
|
21
|
+
status: "status",
|
|
22
|
+
provisionedBy: "provisionedBy",
|
|
23
|
+
provisionedAt: "provisionedAt",
|
|
24
|
+
actions: "actions",
|
|
25
|
+
};
|
|
26
|
+
export const datastoreColumnLabels = {
|
|
27
|
+
[datastoreColumnIds.name]: "Name",
|
|
28
|
+
[datastoreColumnIds.organizationName]: "Organization",
|
|
29
|
+
[datastoreColumnIds.datastoreId]: "Datastore ID",
|
|
30
|
+
[datastoreColumnIds.status]: "Status",
|
|
31
|
+
[datastoreColumnIds.provisionedBy]: "Provisioned by",
|
|
32
|
+
[datastoreColumnIds.provisionedAt]: "Provisioned",
|
|
33
|
+
};
|
|
34
|
+
export const defaultColumnOrder = Object.values(datastoreColumnIds);
|
|
35
|
+
export const unlinkedColumnLabels = {
|
|
36
|
+
...datastoreColumnLabels,
|
|
37
|
+
[datastoreColumnIds.suggestedMatch]: "Suggested match",
|
|
38
|
+
};
|
|
39
|
+
export const unlinkedColumnOrder = [
|
|
40
|
+
datastoreColumnIds.datastoreId,
|
|
41
|
+
datastoreColumnIds.suggestedMatch,
|
|
42
|
+
datastoreColumnIds.status,
|
|
43
|
+
datastoreColumnIds.actions,
|
|
44
|
+
];
|
|
45
|
+
// Floor width per column, so a narrow viewport scrolls instead of squeezing every column thin.
|
|
46
|
+
const columnMinWidths = {
|
|
47
|
+
[datastoreColumnIds.name]: "min-w-[180px]",
|
|
48
|
+
[datastoreColumnIds.organizationName]: "min-w-[140px]",
|
|
49
|
+
[datastoreColumnIds.datastoreId]: "min-w-[160px]",
|
|
50
|
+
[datastoreColumnIds.suggestedMatch]: "min-w-[200px]",
|
|
51
|
+
[datastoreColumnIds.status]: "min-w-[120px]",
|
|
52
|
+
[datastoreColumnIds.provisionedBy]: "min-w-[140px]",
|
|
53
|
+
[datastoreColumnIds.provisionedAt]: "min-w-[110px]",
|
|
54
|
+
[datastoreColumnIds.actions]: "min-w-[140px]",
|
|
55
|
+
};
|
|
56
|
+
export function useDatastoreColumns(args) {
|
|
57
|
+
const { statusByDatastoreId, currentDatastoreId, isSwitching, indented, matchableRowIds, suggestedMatchByDatastoreId, onSelect, onAddChild, onLink, onProvision, onLinkExisting, onRemove, onRestore, onRename, onRegister, onManageUsers, onBringOnline, isBringingOnline, } = args;
|
|
58
|
+
return useMemo(() => [
|
|
59
|
+
{
|
|
60
|
+
id: datastoreColumnIds.name,
|
|
61
|
+
accessorKey: "name",
|
|
62
|
+
header: datastoreColumnLabels[datastoreColumnIds.name],
|
|
63
|
+
cell: ({ row }) => {
|
|
64
|
+
const { name, depth, datastoreId, isOrganization, isRealmDefault } = row.original;
|
|
65
|
+
const current = isPresent(datastoreId) && datastoreId === currentDatastoreId;
|
|
66
|
+
return (_jsx("div", { className: columnMinWidths[datastoreColumnIds.name], children: _jsxs("div", { className: "flex min-w-0 items-center gap-2", style: indented ? nestedIndent(depth + 1) : undefined, children: [indented && depth > 0 && _jsx(NestedMarker, {}), _jsx("span", { className: cn("truncate", isOrganization || isRealmDefault ? "typography-caption-medium" : "typography-caption"), children: name }), !isPresent(datastoreId) && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(TriangleAlert, { className: "size-3.5 shrink-0 text-warning-foreground", "aria-label": "No datastore provisioned" }) }), _jsx(TooltipContent, { children: "No datastore provisioned for this group yet." })] })), isRealmDefault && (_jsx(Badge, { variant: "copy", size: "sm", className: "shrink-0", children: "Default" })), current && (_jsxs(Badge, { "data-testid": `datastore-selected-badge-${row.original.id}`, variant: "copy", size: "sm", className: "shrink-0", children: [_jsx(Check, { className: "size-3" }), "Selected"] }))] }) }));
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: datastoreColumnIds.organizationName,
|
|
71
|
+
accessorKey: "organizationName",
|
|
72
|
+
header: datastoreColumnLabels[datastoreColumnIds.organizationName],
|
|
73
|
+
cell: ({ row }) => (_jsx("div", { className: cn(columnMinWidths[datastoreColumnIds.organizationName], "truncate typography-caption"), children: row.original.organizationName || "—" })),
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: datastoreColumnIds.datastoreId,
|
|
77
|
+
accessorKey: "datastoreId",
|
|
78
|
+
header: datastoreColumnLabels[datastoreColumnIds.datastoreId],
|
|
79
|
+
cell: ({ row }) => (_jsx("div", { className: cn(columnMinWidths[datastoreColumnIds.datastoreId], "truncate typography-small text-muted-foreground"), children: row.original.datastoreId ?? "—" })),
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: datastoreColumnIds.suggestedMatch,
|
|
83
|
+
accessorKey: "datastoreId",
|
|
84
|
+
header: unlinkedColumnLabels[datastoreColumnIds.suggestedMatch],
|
|
85
|
+
enableSorting: false,
|
|
86
|
+
cell: ({ row }) => {
|
|
87
|
+
const match = suggestedMatchByDatastoreId?.[row.original.datastoreId ?? ""];
|
|
88
|
+
const minWidthClassName = columnMinWidths[datastoreColumnIds.suggestedMatch];
|
|
89
|
+
if (!match)
|
|
90
|
+
return _jsx("div", { className: cn(minWidthClassName, "typography-small text-muted-foreground"), children: "\u2014" });
|
|
91
|
+
return (_jsxs("div", { className: cn(minWidthClassName, "truncate typography-small"), title: `${match.organizationName}${match.isOrganization ? "" : match.path}`, children: [_jsx("span", { className: "text-muted-foreground", children: match.organizationName }), !match.isOrganization && _jsx("span", { className: "text-default-foreground", children: match.path })] }));
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: datastoreColumnIds.status,
|
|
96
|
+
accessorKey: "datastoreId",
|
|
97
|
+
header: datastoreColumnLabels[datastoreColumnIds.status],
|
|
98
|
+
enableSorting: false,
|
|
99
|
+
filterFn: (row, _columnId, filterValue) => datastoreStatusFilterValue(row.original, statusByDatastoreId[row.original.datastoreId ?? ""]) === filterValue,
|
|
100
|
+
cell: ({ row }) => (_jsx("div", { className: columnMinWidths[datastoreColumnIds.status], children: _jsx(DatastoreStatusBadge, { node: row.original, status: statusByDatastoreId[row.original.datastoreId ?? ""] }) })),
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: datastoreColumnIds.provisionedBy,
|
|
104
|
+
accessorKey: "provisionedBy",
|
|
105
|
+
header: datastoreColumnLabels[datastoreColumnIds.provisionedBy],
|
|
106
|
+
cell: ({ row }) => (_jsx("div", { className: cn(columnMinWidths[datastoreColumnIds.provisionedBy], "truncate typography-small text-muted-foreground"), children: row.original.provisionedBy ?? "—" })),
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: datastoreColumnIds.provisionedAt,
|
|
110
|
+
accessorKey: "provisionedAt",
|
|
111
|
+
header: datastoreColumnLabels[datastoreColumnIds.provisionedAt],
|
|
112
|
+
cell: ({ row }) => {
|
|
113
|
+
const { provisionedAt } = row.original;
|
|
114
|
+
const minWidthClassName = columnMinWidths[datastoreColumnIds.provisionedAt];
|
|
115
|
+
const at = isPresent(provisionedAt) ? new Date(provisionedAt) : undefined;
|
|
116
|
+
if (!isPresent(at) || Number.isNaN(at.getTime())) {
|
|
117
|
+
return _jsx("div", { className: cn(minWidthClassName, "typography-small text-muted-foreground"), children: "\u2014" });
|
|
118
|
+
}
|
|
119
|
+
return (_jsx("div", { className: cn(minWidthClassName, "truncate typography-small text-muted-foreground"), title: at.toLocaleString(), children: formatDistanceToNow(at, { addSuffix: true }) }));
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: datastoreColumnIds.actions,
|
|
124
|
+
header: "",
|
|
125
|
+
enableSorting: false,
|
|
126
|
+
cell: ({ row }) => {
|
|
127
|
+
const datastoreRow = row.original;
|
|
128
|
+
const { datastoreId, removed, name, isRealmDefault, isUnlinked } = datastoreRow;
|
|
129
|
+
const hasDatastore = isPresent(datastoreId);
|
|
130
|
+
const current = hasDatastore && datastoreId === currentDatastoreId;
|
|
131
|
+
const status = hasDatastore ? statusByDatastoreId[datastoreId] : undefined;
|
|
132
|
+
const category = datastoreStatusCategory(datastoreRow, status);
|
|
133
|
+
const notRegistered = category === "notRegistered";
|
|
134
|
+
const reason = match({ notRegistered, materializing: isMaterializing(status) && !isRealmDefault })
|
|
135
|
+
.with({ notRegistered: true }, () => "Not registered - use Register to fix, then try selecting again.")
|
|
136
|
+
.with({ materializing: true }, () => "Still materializing - this can take a few minutes.")
|
|
137
|
+
.otherwise(() => undefined);
|
|
138
|
+
const canSelect = hasDatastore && !reason && !current && !isSwitching;
|
|
139
|
+
return (_jsxs("div", { className: cn(columnMinWidths[datastoreColumnIds.actions], "flex items-center justify-end gap-1.5"), children: [isUnlinked && (_jsx(Button, { "data-testid": `datastore-link-${datastoreRow.id}`, size: "sm", variant: "secondary", icon: Link2, onClick: () => onLink(datastoreRow), children: "Link" })), hasDatastore && !removed && category === "offline" && (_jsx(Button, { "data-testid": `datastore-bring-online-${datastoreRow.id}`, size: "sm", variant: "secondary", icon: Power, disabled: isBringingOnline, onClick: () => onBringOnline(datastoreRow), children: "Bring online" })), !isUnlinked && hasDatastore && !removed && notRegistered && (_jsx(Button, { "data-testid": `datastore-register-${datastoreRow.id}`, size: "sm", variant: "secondary", icon: RefreshCw, onClick: () => onRegister(datastoreRow), children: "Register" })), !isUnlinked && hasDatastore && current && (_jsx(Button, { "data-testid": `datastore-select-${datastoreRow.id}`, size: "sm", variant: "secondary", disabled: true, children: "Selected" })), !isUnlinked && hasDatastore && !current && !removed && (_jsx(Button, { "data-testid": `datastore-select-${datastoreRow.id}`, size: "sm", variant: "secondary", disabled: !canSelect, title: reason, onClick: () => onSelect(datastoreRow), children: "Select" })), isRealmDefault || isUnlinked ? (
|
|
140
|
+
// Same-sized spacer keeps Select/Selected aligned with rows that have the ellipsis.
|
|
141
|
+
_jsx("div", { className: "size-6", "aria-hidden": "true" })) : (_jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsx("button", { type: "button", "aria-label": `Actions for ${name}`, className: "shrink-0 rounded-sm-v4 p-1 text-muted-foreground hover:bg-faint hover:text-default-foreground", children: _jsx(MoreHorizontal, { className: "size-4" }) }) }), _jsxs(DropdownContent, { align: "end", className: "min-w-52", children: [_jsx(DropdownItem, { icon: _jsx(Pencil, { className: "size-4" }), onSelect: () => onRename(datastoreRow), children: "Rename" }), isPresent(datastoreRow.organizationAlias) && (_jsx(DropdownItem, { icon: _jsx(Users, { className: "size-4" }), onSelect: () => onManageUsers(datastoreRow), children: "Manage users" })), !hasDatastore &&
|
|
142
|
+
(matchableRowIds.has(datastoreRow.id) ? (_jsx(DropdownItem, { icon: _jsx(Link2, { className: "size-4" }), onSelect: () => onLinkExisting(datastoreRow), children: "Link existing datastore" })) : (_jsx(DropdownItem, { icon: _jsx(DatabaseZap, { className: "size-4" }), onSelect: () => onProvision(datastoreRow), children: "Provision datastore" }))), _jsx(DropdownItem, { icon: _jsx(Plus, { className: "size-4" }), onSelect: () => onAddChild(datastoreRow), children: "Add datastore" }), enableDatastoreRemoval && hasDatastore && !removed && (_jsxs(_Fragment, { children: [_jsx(DropdownSeparator, {}), _jsx(DropdownItem, { className: "text-error-foreground", icon: _jsx(Trash2, { className: "size-4" }), onSelect: () => onRemove(datastoreRow), children: "Remove datastore" })] })), enableDatastoreRemoval && hasDatastore && removed && (_jsxs(_Fragment, { children: [_jsx(DropdownSeparator, {}), _jsx(DropdownItem, { icon: _jsx(RotateCcw, { className: "size-4" }), onSelect: () => onRestore(datastoreRow), children: "Restore datastore" })] }))] })] }))] }));
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
], [
|
|
146
|
+
statusByDatastoreId,
|
|
147
|
+
currentDatastoreId,
|
|
148
|
+
isSwitching,
|
|
149
|
+
indented,
|
|
150
|
+
matchableRowIds,
|
|
151
|
+
suggestedMatchByDatastoreId,
|
|
152
|
+
onSelect,
|
|
153
|
+
onAddChild,
|
|
154
|
+
onLink,
|
|
155
|
+
onProvision,
|
|
156
|
+
onLinkExisting,
|
|
157
|
+
onRemove,
|
|
158
|
+
onRestore,
|
|
159
|
+
onRegister,
|
|
160
|
+
onRename,
|
|
161
|
+
onManageUsers,
|
|
162
|
+
onBringOnline,
|
|
163
|
+
isBringingOnline,
|
|
164
|
+
]);
|
|
165
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ColumnDef, OnChangeFn, SortingState, Table } from "@tanstack/react-table";
|
|
2
|
+
import type { DatastoreStatusFilterValue } from "../components/StatusBadge.js";
|
|
3
|
+
import type { DatastoreRow } from "../flatten.js";
|
|
4
|
+
export type StatusFilter = "ALL" | DatastoreStatusFilterValue;
|
|
5
|
+
type UseDatastoreTableResult = {
|
|
6
|
+
table: Table<DatastoreRow>;
|
|
7
|
+
searchQuery: string;
|
|
8
|
+
onSearchQueryChange: (query: string) => void;
|
|
9
|
+
statusFilter: StatusFilter;
|
|
10
|
+
onStatusFilterChange: (status: StatusFilter) => void;
|
|
11
|
+
};
|
|
12
|
+
export declare function useDatastoreTable(tableKey: string, rows: DatastoreRow[], columns: ColumnDef<DatastoreRow>[], sorting: SortingState, setSorting: OnChangeFn<SortingState>): UseDatastoreTableResult;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=useDatastoreTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDatastoreTable.d.ts","sourceRoot":"","sources":["../../../../src/routes/datastores/hooks/useDatastoreTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGxF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,0BAA0B,CAAC;AAE9D,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CACtD,CAAC;AAGF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,YAAY,EAAE,EACpB,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,EAClC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,GACnC,uBAAuB,CAiEzB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useReactTable } from "@tanstack/react-table";
|
|
2
|
+
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { datastoreColumnIds } from "./useDatastoreColumns.js";
|
|
4
|
+
import { createTableConfig, useTableState } from "#components/table/index";
|
|
5
|
+
// Sorting is owned by the caller so the columns can drop the hierarchy indent once a sort makes it a lie.
|
|
6
|
+
export function useDatastoreTable(tableKey, rows, columns, sorting, setSorting) {
|
|
7
|
+
const { pagination, setPagination, columnFilters, setColumnFilters, columnVisibility, setColumnVisibility, columnOrder, setColumnOrder, searchQuery, setSearchQuery, debouncedSearchQuery, } = useTableState(tableKey, [], { useLocalState: true });
|
|
8
|
+
const filteredRows = useMemo(() => {
|
|
9
|
+
const term = debouncedSearchQuery.trim().toLowerCase();
|
|
10
|
+
if (!term)
|
|
11
|
+
return rows;
|
|
12
|
+
return rows.filter((row) => row.name.toLowerCase().includes(term) ||
|
|
13
|
+
row.organizationName.toLowerCase().includes(term) ||
|
|
14
|
+
(row.datastoreId ?? "").toLowerCase().includes(term));
|
|
15
|
+
}, [rows, debouncedSearchQuery]);
|
|
16
|
+
const table = useReactTable(createTableConfig({
|
|
17
|
+
data: filteredRows,
|
|
18
|
+
columns,
|
|
19
|
+
columnPinning: { left: [datastoreColumnIds.name], right: [datastoreColumnIds.actions] },
|
|
20
|
+
sorting,
|
|
21
|
+
setSorting,
|
|
22
|
+
columnFilters,
|
|
23
|
+
setColumnFilters,
|
|
24
|
+
columnVisibility,
|
|
25
|
+
setColumnVisibility,
|
|
26
|
+
columnOrder,
|
|
27
|
+
setColumnOrder,
|
|
28
|
+
pagination,
|
|
29
|
+
setPagination,
|
|
30
|
+
}));
|
|
31
|
+
const statusFilter = columnFilters.find((f) => f.id === datastoreColumnIds.status)?.value ?? "ALL";
|
|
32
|
+
const handleStatusFilterChange = useCallback((status) => {
|
|
33
|
+
setColumnFilters((prev) => [
|
|
34
|
+
...prev.filter((f) => f.id !== datastoreColumnIds.status),
|
|
35
|
+
...(status !== "ALL" ? [{ id: datastoreColumnIds.status, value: status }] : []),
|
|
36
|
+
]);
|
|
37
|
+
}, [setColumnFilters]);
|
|
38
|
+
return {
|
|
39
|
+
table,
|
|
40
|
+
searchQuery,
|
|
41
|
+
onSearchQueryChange: setSearchQuery,
|
|
42
|
+
statusFilter,
|
|
43
|
+
onStatusFilterChange: handleStatusFilterChange,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/datastores/index.tsx"],"names":[],"mappings":"AAqFA,wBAAgB,eAAe,4CAypB9B"}
|