@manta-eu/react 0.1.10 → 0.2.1
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/channel-icon/index.d.ts +1 -0
- package/dist/components/channel-icon/index.d.ts.map +1 -1
- package/dist/components/channel-icon/index.js +1 -1
- package/dist/components/channel-icon/index.js.map +1 -1
- package/dist/components/chat-view/ChatTurnErrorNotice.d.ts.map +1 -1
- package/dist/components/chat-view/ChatTurnErrorNotice.js +3 -1
- package/dist/components/chat-view/ChatTurnErrorNotice.js.map +1 -1
- package/dist/components/layouts/ConnectedCustomApp.d.ts +13 -0
- package/dist/components/layouts/ConnectedCustomApp.d.ts.map +1 -0
- package/dist/components/layouts/ConnectedCustomApp.js +37 -0
- package/dist/components/layouts/ConnectedCustomApp.js.map +1 -0
- package/dist/components/layouts/Sidebar.d.ts.map +1 -1
- package/dist/components/layouts/Sidebar.js +6 -3
- package/dist/components/layouts/Sidebar.js.map +1 -1
- package/dist/components/planning/ActioningView.d.ts +1 -2
- package/dist/components/planning/ActioningView.d.ts.map +1 -1
- package/dist/components/planning/ActioningView.js +19 -44
- package/dist/components/planning/ActioningView.js.map +1 -1
- package/dist/components/planning/ManualActionCard.d.ts +4 -0
- package/dist/components/planning/ManualActionCard.d.ts.map +1 -1
- package/dist/components/planning/ManualActionCard.js +7 -5
- package/dist/components/planning/ManualActionCard.js.map +1 -1
- package/dist/components/planning/ManualActionList.d.ts +4 -0
- package/dist/components/planning/ManualActionList.d.ts.map +1 -1
- package/dist/components/planning/ManualActionList.js +8 -2
- package/dist/components/planning/ManualActionList.js.map +1 -1
- package/dist/components/planning/actioning-view-utils.d.ts +9 -0
- package/dist/components/planning/actioning-view-utils.d.ts.map +1 -1
- package/dist/components/planning/actioning-view-utils.js +19 -1
- package/dist/components/planning/actioning-view-utils.js.map +1 -1
- package/dist/components/table-skeleton/index.d.ts +2 -0
- package/dist/components/table-skeleton/index.d.ts.map +1 -1
- package/dist/components/table-skeleton/index.js +2 -1
- package/dist/components/table-skeleton/index.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +7 -0
- package/dist/components/tooltip/index.d.ts.map +1 -1
- package/dist/components/tooltip/index.js +10 -1
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/globals.css +19 -6
- package/dist/graph/createNodeRouter.js +3 -3
- package/dist/graph/createNodeRouter.js.map +1 -1
- package/dist/graph/entity-link.d.ts +14 -0
- package/dist/graph/entity-link.d.ts.map +1 -0
- package/dist/graph/entity-link.js +12 -0
- package/dist/graph/entity-link.js.map +1 -0
- package/dist/graph/graph-list-utils.d.ts +1 -0
- package/dist/graph/graph-list-utils.d.ts.map +1 -1
- package/dist/graph/graph-list-utils.js +1 -0
- package/dist/graph/graph-list-utils.js.map +1 -1
- package/dist/graph/graph-model.d.ts.map +1 -1
- package/dist/graph/graph-model.js +14 -5
- package/dist/graph/graph-model.js.map +1 -1
- package/dist/graph/nodes/BrandAssetAnalysisView.d.ts.map +1 -1
- package/dist/graph/nodes/BrandAssetAnalysisView.js +2 -1
- package/dist/graph/nodes/BrandAssetAnalysisView.js.map +1 -1
- package/dist/graph/nodes/BrandFontSuggestionView.d.ts +3 -0
- package/dist/graph/nodes/BrandFontSuggestionView.d.ts.map +1 -0
- package/dist/graph/nodes/{BrandFontFamilyView.js → BrandFontSuggestionView.js} +22 -13
- package/dist/graph/nodes/BrandFontSuggestionView.js.map +1 -0
- package/dist/graph/nodes/BrandGuidelinesView.js +1 -1
- package/dist/graph/nodes/BrandGuidelinesView.js.map +1 -1
- package/dist/graph/nodes/NodePropertyTable.d.ts +4 -2
- package/dist/graph/nodes/NodePropertyTable.d.ts.map +1 -1
- package/dist/graph/nodes/NodePropertyTable.js +12 -59
- package/dist/graph/nodes/NodePropertyTable.js.map +1 -1
- package/dist/graph/nodes/brand-font.d.ts +8 -0
- package/dist/graph/nodes/brand-font.d.ts.map +1 -1
- package/dist/graph/nodes/brand-font.js +6 -0
- package/dist/graph/nodes/brand-font.js.map +1 -1
- package/dist/graph/nodes/brand-shared.d.ts +0 -3
- package/dist/graph/nodes/brand-shared.d.ts.map +1 -1
- package/dist/graph/nodes/brand-shared.js +1 -4
- package/dist/graph/nodes/brand-shared.js.map +1 -1
- package/dist/graph/nodes/node-property-row.d.ts +30 -0
- package/dist/graph/nodes/node-property-row.d.ts.map +1 -0
- package/dist/graph/nodes/node-property-row.js +35 -0
- package/dist/graph/nodes/node-property-row.js.map +1 -0
- package/dist/graph/property-formatters.d.ts +1 -0
- package/dist/graph/property-formatters.d.ts.map +1 -1
- package/dist/graph/property-formatters.js +4 -1
- package/dist/graph/property-formatters.js.map +1 -1
- package/dist/graph/special-nodes/AttributeList.d.ts +27 -0
- package/dist/graph/special-nodes/AttributeList.d.ts.map +1 -0
- package/dist/graph/special-nodes/AttributeList.js +57 -0
- package/dist/graph/special-nodes/AttributeList.js.map +1 -0
- package/dist/graph/special-nodes/EntityPreview.d.ts +5 -0
- package/dist/graph/special-nodes/EntityPreview.d.ts.map +1 -0
- package/dist/graph/special-nodes/EntityPreview.js +19 -0
- package/dist/graph/special-nodes/EntityPreview.js.map +1 -0
- package/dist/graph/special-nodes/EntityValueChip.d.ts +11 -0
- package/dist/graph/special-nodes/EntityValueChip.d.ts.map +1 -0
- package/dist/graph/special-nodes/EntityValueChip.js +40 -0
- package/dist/graph/special-nodes/EntityValueChip.js.map +1 -0
- package/dist/graph/special-nodes/GenericView.d.ts +2 -1
- package/dist/graph/special-nodes/GenericView.d.ts.map +1 -1
- package/dist/graph/special-nodes/GenericView.js +23 -69
- package/dist/graph/special-nodes/GenericView.js.map +1 -1
- package/dist/graph/special-nodes/card-facts.d.ts +52 -0
- package/dist/graph/special-nodes/card-facts.d.ts.map +1 -0
- package/dist/graph/special-nodes/card-facts.js +189 -0
- package/dist/graph/special-nodes/card-facts.js.map +1 -0
- package/dist/graph/special-nodes/property-icons.d.ts +9 -0
- package/dist/graph/special-nodes/property-icons.d.ts.map +1 -0
- package/dist/graph/special-nodes/property-icons.js +39 -0
- package/dist/graph/special-nodes/property-icons.js.map +1 -0
- package/dist/graph/status-utils.d.ts +16 -0
- package/dist/graph/status-utils.d.ts.map +1 -1
- package/dist/graph/status-utils.js +35 -0
- package/dist/graph/status-utils.js.map +1 -1
- package/dist/graph/types.d.ts +5 -0
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/hooks/use-approve-anyway.d.ts +12 -0
- package/dist/hooks/use-approve-anyway.d.ts.map +1 -0
- package/dist/hooks/use-approve-anyway.js +81 -0
- package/dist/hooks/use-approve-anyway.js.map +1 -0
- package/dist/hooks/use-connection-problems.d.ts.map +1 -1
- package/dist/hooks/useAuth.d.ts +2 -2
- package/dist/hooks/useAuth.d.ts.map +1 -1
- package/dist/hooks/useAuth.js +2 -2
- package/dist/hooks/useAuth.js.map +1 -1
- package/dist/hooks/useOnboardingState.js +1 -1
- package/dist/hooks/useOnboardingState.js.map +1 -1
- package/dist/hooks/useValidateActionPlan.d.ts.map +1 -1
- package/dist/ldo-ui.d.ts +2 -1
- package/dist/ldo-ui.d.ts.map +1 -1
- package/dist/ldo-ui.js +1 -0
- package/dist/ldo-ui.js.map +1 -1
- package/dist/lib/datastore-route-table.d.ts +2 -1
- package/dist/lib/datastore-route-table.d.ts.map +1 -1
- package/dist/lib/datastore-route-table.js +2 -1
- package/dist/lib/datastore-route-table.js.map +1 -1
- package/dist/lib/manual-actions.d.ts +2 -1
- package/dist/lib/manual-actions.d.ts.map +1 -1
- package/dist/lib/manual-actions.js +3 -2
- package/dist/lib/manual-actions.js.map +1 -1
- package/dist/providers/ActiveChatProvider.js +3 -1
- package/dist/providers/ActiveChatProvider.js.map +1 -1
- package/dist/providers/AuthContext.d.ts +2 -1
- package/dist/providers/AuthContext.d.ts.map +1 -1
- package/dist/providers/AuthContext.js.map +1 -1
- package/dist/providers/ChatManagerProvider.d.ts.map +1 -1
- package/dist/providers/ChatManagerProvider.js +22 -9
- package/dist/providers/ChatManagerProvider.js.map +1 -1
- package/dist/providers/chat-socket-auth.d.ts +7 -2
- package/dist/providers/chat-socket-auth.d.ts.map +1 -1
- package/dist/providers/chat-socket-auth.js +87 -16
- package/dist/providers/chat-socket-auth.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +8 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/routes/activity/detail/ActivityChanges.d.ts +2 -0
- package/dist/routes/activity/detail/ActivityChanges.d.ts.map +1 -1
- package/dist/routes/activity/detail/ActivityChanges.js +8 -7
- package/dist/routes/activity/detail/ActivityChanges.js.map +1 -1
- package/dist/routes/activity/detail/ActivityDetail.d.ts +1 -0
- package/dist/routes/activity/detail/ActivityDetail.d.ts.map +1 -1
- package/dist/routes/activity/detail/ActivityDetail.js +5 -4
- package/dist/routes/activity/detail/ActivityDetail.js.map +1 -1
- package/dist/routes/activity/detail/ActivityStepsRail.d.ts +1 -0
- package/dist/routes/activity/detail/ActivityStepsRail.d.ts.map +1 -1
- package/dist/routes/activity/detail/ActivityStepsRail.js +3 -2
- package/dist/routes/activity/detail/ActivityStepsRail.js.map +1 -1
- package/dist/routes/activity/detail/ActivityTimeline.js +2 -2
- package/dist/routes/activity/detail/ActivityTimeline.js.map +1 -1
- package/dist/routes/activity/detail/NoChangesMessage.d.ts +6 -0
- package/dist/routes/activity/detail/NoChangesMessage.d.ts.map +1 -0
- package/dist/routes/activity/detail/NoChangesMessage.js +10 -0
- package/dist/routes/activity/detail/NoChangesMessage.js.map +1 -0
- package/dist/routes/data-explorer/components/RawTriples.js +1 -1
- package/dist/routes/data-explorer/components/RawTriples.js.map +1 -1
- package/dist/routes/data-explorer/components/RecentTypes.js +1 -1
- package/dist/routes/data-explorer/components/RecentTypes.js.map +1 -1
- package/dist/routes/data-explorer/components/class-detail/Instances.js +1 -1
- package/dist/routes/data-explorer/components/class-detail/Instances.js.map +1 -1
- package/dist/routes/data-explorer/components/namespace-detail/NamespaceClassRow.js +1 -1
- package/dist/routes/data-explorer/components/namespace-detail/NamespaceClassRow.js.map +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/CoverageTermColumns.js +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/CoverageTermColumns.js.map +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/UnobservedRuleVocabulary.js +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/UnobservedRuleVocabulary.js.map +1 -1
- package/dist/routes/data-explorer/components/record-detail/ChatPreview.js +2 -2
- package/dist/routes/data-explorer/components/record-detail/ChatPreview.js.map +1 -1
- package/dist/routes/data-explorer/declared-namespaces.d.ts +3 -0
- package/dist/routes/data-explorer/declared-namespaces.d.ts.map +1 -1
- package/dist/routes/data-explorer/declared-namespaces.js +21 -13
- package/dist/routes/data-explorer/declared-namespaces.js.map +1 -1
- package/dist/routes/data-explorer/namespaces.d.ts +1 -0
- package/dist/routes/data-explorer/namespaces.d.ts.map +1 -1
- package/dist/routes/data-explorer/namespaces.js +7 -6
- package/dist/routes/data-explorer/namespaces.js.map +1 -1
- package/dist/routes/datastores/components/DeleteDatastoreDialog.d.ts +10 -0
- package/dist/routes/datastores/components/DeleteDatastoreDialog.d.ts.map +1 -0
- package/dist/routes/datastores/components/DeleteDatastoreDialog.js +20 -0
- package/dist/routes/datastores/components/DeleteDatastoreDialog.js.map +1 -0
- package/dist/routes/datastores/flatten.d.ts +1 -0
- package/dist/routes/datastores/flatten.d.ts.map +1 -1
- package/dist/routes/datastores/flatten.js +17 -0
- package/dist/routes/datastores/flatten.js.map +1 -1
- package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts +3 -1
- package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts.map +1 -1
- package/dist/routes/datastores/hooks/useDatastoreColumns.js +14 -6
- package/dist/routes/datastores/hooks/useDatastoreColumns.js.map +1 -1
- package/dist/routes/datastores/index.d.ts.map +1 -1
- package/dist/routes/datastores/index.js +31 -5
- package/dist/routes/datastores/index.js.map +1 -1
- package/dist/routes/integrations/components/ProviderGroup.js +2 -2
- package/dist/routes/integrations/components/ProviderGroup.js.map +1 -1
- package/dist/routes/integrations/components/connect-forms/DataConnectionConnectForm.d.ts.map +1 -1
- package/dist/routes/integrations/components/connect-forms/DataConnectionConnectForm.js +13 -6
- package/dist/routes/integrations/components/connect-forms/DataConnectionConnectForm.js.map +1 -1
- package/dist/routes/integrations/components/connect-forms/data-connection-fields.d.ts +3 -0
- package/dist/routes/integrations/components/connect-forms/data-connection-fields.d.ts.map +1 -1
- package/dist/routes/integrations/components/connect-forms/data-connection-fields.js +9 -2
- package/dist/routes/integrations/components/connect-forms/data-connection-fields.js.map +1 -1
- package/dist/routes/plans/components/ActionPlanPage.d.ts.map +1 -1
- package/dist/routes/plans/components/ActionPlanPage.js +4 -7
- package/dist/routes/plans/components/ActionPlanPage.js.map +1 -1
- package/dist/routes/plans/components/PlanDetailRouteContent.d.ts.map +1 -1
- package/dist/routes/plans/components/PlanDetailRouteContent.js +2 -1
- package/dist/routes/plans/components/PlanDetailRouteContent.js.map +1 -1
- package/package.json +12 -7
- package/src/app-subpaths.json +1 -0
- package/src/components/channel-icon/index.tsx +1 -1
- package/src/components/chat-view/ChatTurnErrorNotice.tsx +3 -1
- package/src/components/layouts/ConnectedCustomApp.tsx +63 -0
- package/src/components/layouts/Sidebar.tsx +9 -3
- package/src/components/planning/ActioningView.tsx +62 -70
- package/src/components/planning/ManualActionCard.tsx +66 -14
- package/src/components/planning/ManualActionList.tsx +30 -11
- package/src/components/planning/actioning-view-utils.ts +27 -1
- package/src/components/table-skeleton/index.tsx +7 -1
- package/src/components/tooltip/index.tsx +35 -2
- package/src/graph/createNodeRouter.tsx +3 -3
- package/src/graph/entity-link.tsx +20 -0
- package/src/graph/graph-list-utils.ts +2 -0
- package/src/graph/graph-model.ts +15 -6
- package/src/graph/nodes/BrandAssetAnalysisView.tsx +3 -1
- package/src/graph/nodes/{BrandFontFamilyView.tsx → BrandFontSuggestionView.tsx} +41 -27
- package/src/graph/nodes/BrandGuidelinesView.tsx +1 -1
- package/src/graph/nodes/NodePropertyTable.tsx +32 -143
- package/src/graph/nodes/brand-font.ts +17 -0
- package/src/graph/nodes/brand-shared.tsx +1 -4
- package/src/graph/nodes/node-property-row.tsx +154 -0
- package/src/graph/property-formatters.ts +5 -1
- package/src/graph/special-nodes/AttributeList.tsx +177 -0
- package/src/graph/special-nodes/EntityPreview.tsx +27 -0
- package/src/graph/special-nodes/EntityValueChip.tsx +85 -0
- package/src/graph/special-nodes/GenericView.tsx +49 -139
- package/src/graph/special-nodes/card-facts.ts +278 -0
- package/src/graph/special-nodes/property-icons.ts +59 -0
- package/src/graph/status-utils.ts +40 -0
- package/src/graph/types.ts +4 -0
- package/src/hooks/use-approve-anyway.ts +100 -0
- package/src/hooks/useAuth.ts +3 -3
- package/src/hooks/useOnboardingState.ts +1 -1
- package/src/ldo-ui.ts +8 -0
- package/src/lib/datastore-route-table.ts +4 -2
- package/src/lib/manual-actions.ts +3 -2
- package/src/providers/ActiveChatProvider.tsx +3 -1
- package/src/providers/AuthContext.ts +3 -1
- package/src/providers/ChatManagerProvider.tsx +19 -9
- package/src/providers/chat-socket-auth.ts +95 -16
- package/src/providers/index.tsx +16 -1
- package/src/routes/activity/detail/ActivityChanges.tsx +21 -5
- package/src/routes/activity/detail/ActivityDetail.tsx +24 -5
- package/src/routes/activity/detail/ActivityStepsRail.tsx +4 -2
- package/src/routes/activity/detail/ActivityTimeline.tsx +2 -2
- package/src/routes/activity/detail/NoChangesMessage.tsx +20 -0
- package/src/routes/data-explorer/components/RawTriples.tsx +1 -1
- package/src/routes/data-explorer/components/RecentTypes.tsx +1 -1
- package/src/routes/data-explorer/components/class-detail/Instances.tsx +1 -1
- package/src/routes/data-explorer/components/namespace-detail/NamespaceClassRow.tsx +1 -1
- package/src/routes/data-explorer/components/ontology-coverage/CoverageTermColumns.tsx +1 -1
- package/src/routes/data-explorer/components/ontology-coverage/UnobservedRuleVocabulary.tsx +1 -1
- package/src/routes/data-explorer/components/record-detail/ChatPreview.tsx +2 -2
- package/src/routes/data-explorer/declared-namespaces.ts +21 -13
- package/src/routes/data-explorer/namespaces.ts +7 -6
- package/src/routes/datastores/components/DeleteDatastoreDialog.tsx +78 -0
- package/src/routes/datastores/flatten.ts +15 -0
- package/src/routes/datastores/hooks/useDatastoreColumns.tsx +88 -49
- package/src/routes/datastores/index.tsx +41 -2
- package/src/routes/integrations/components/ProviderGroup.tsx +2 -2
- package/src/routes/integrations/components/connect-forms/DataConnectionConnectForm.tsx +38 -12
- package/src/routes/integrations/components/connect-forms/data-connection-fields.ts +11 -2
- package/src/routes/plans/components/ActionPlanPage.tsx +9 -8
- package/src/routes/plans/components/PlanDetailRouteContent.tsx +4 -3
- package/dist/components/planning/ExecutionActivityRow.d.ts +0 -9
- package/dist/components/planning/ExecutionActivityRow.d.ts.map +0 -1
- package/dist/components/planning/ExecutionActivityRow.js +0 -53
- package/dist/components/planning/ExecutionActivityRow.js.map +0 -1
- package/dist/components/planning/ExecutionSectionItem.d.ts +0 -20
- package/dist/components/planning/ExecutionSectionItem.d.ts.map +0 -1
- package/dist/components/planning/ExecutionSectionItem.js +0 -66
- package/dist/components/planning/ExecutionSectionItem.js.map +0 -1
- package/dist/components/planning/ExecutionSections.d.ts +0 -16
- package/dist/components/planning/ExecutionSections.d.ts.map +0 -1
- package/dist/components/planning/ExecutionSections.js +0 -32
- package/dist/components/planning/ExecutionSections.js.map +0 -1
- package/dist/components/planning/action-plan-icons.d.ts +0 -3
- package/dist/components/planning/action-plan-icons.d.ts.map +0 -1
- package/dist/components/planning/action-plan-icons.js +0 -25
- package/dist/components/planning/action-plan-icons.js.map +0 -1
- package/dist/components/planning/execution-section-model.d.ts +0 -24
- package/dist/components/planning/execution-section-model.d.ts.map +0 -1
- package/dist/components/planning/execution-section-model.js +0 -150
- package/dist/components/planning/execution-section-model.js.map +0 -1
- package/dist/graph/nodes/BrandFontFamilyView.d.ts +0 -3
- package/dist/graph/nodes/BrandFontFamilyView.d.ts.map +0 -1
- package/dist/graph/nodes/BrandFontFamilyView.js.map +0 -1
- package/dist/graph/nodes/BrandFontUploadButton.d.ts +0 -6
- package/dist/graph/nodes/BrandFontUploadButton.d.ts.map +0 -1
- package/dist/graph/nodes/BrandFontUploadButton.js +0 -69
- package/dist/graph/nodes/BrandFontUploadButton.js.map +0 -1
- package/dist/routes/data-explorer/components/TruncateTooltip.d.ts +0 -7
- package/dist/routes/data-explorer/components/TruncateTooltip.d.ts.map +0 -1
- package/dist/routes/data-explorer/components/TruncateTooltip.js +0 -9
- package/dist/routes/data-explorer/components/TruncateTooltip.js.map +0 -1
- package/src/components/planning/ExecutionActivityRow.tsx +0 -89
- package/src/components/planning/ExecutionSectionItem.tsx +0 -184
- package/src/components/planning/ExecutionSections.tsx +0 -97
- package/src/components/planning/action-plan-icons.tsx +0 -27
- package/src/components/planning/execution-section-model.ts +0 -190
- package/src/graph/nodes/BrandFontUploadButton.tsx +0 -95
- package/src/routes/data-explorer/components/TruncateTooltip.tsx +0 -25
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { BarChart2, Bell, CircleDot, DollarSign, Image, Settings, Target, UsersRound, Zap } from "lucide-react";
|
|
3
|
-
const stepIconKeywords = [
|
|
4
|
-
[["campaign", "ad", "advertising", "promote", "advertise", "boost"], Target],
|
|
5
|
-
[["audience", "target", "people", "customer", "user", "segment"], UsersRound],
|
|
6
|
-
[["remind", "review", "check", "monitor", "follow"], Bell],
|
|
7
|
-
[["budget", "spend", "cost", "money", "bid"], DollarSign],
|
|
8
|
-
[["creative", "image", "video", "asset", "copy", "content"], Image],
|
|
9
|
-
[["launch", "publish", "start", "run", "enable", "activate"], Zap],
|
|
10
|
-
[["report", "analys", "track", "metric", "data", "insight"], BarChart2],
|
|
11
|
-
[["rule", "logic", "automat", "workflow"], Settings],
|
|
12
|
-
];
|
|
13
|
-
function matchStepIcon(name) {
|
|
14
|
-
const lower = name.toLowerCase();
|
|
15
|
-
for (const [keywords, icon] of stepIconKeywords) {
|
|
16
|
-
if (keywords.some((kw) => lower.includes(kw)))
|
|
17
|
-
return icon;
|
|
18
|
-
}
|
|
19
|
-
return CircleDot;
|
|
20
|
-
}
|
|
21
|
-
export function resolveStepIcon(name, className) {
|
|
22
|
-
const Icon = matchStepIcon(name);
|
|
23
|
-
return _jsx(Icon, { className: className });
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=action-plan-icons.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-plan-icons.js","sourceRoot":"","sources":["../../../src/components/planning/action-plan-icons.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAIhH,MAAM,gBAAgB,GAA6B;IACjD,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAC5E,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC;IAC7E,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC;IAC1D,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC;IACzD,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC;IACnE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC;IAClE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC;IACvE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC;CACrD,CAAC;AAEF,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAChD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,SAAiB;IAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,KAAC,IAAI,IAAC,SAAS,EAAE,SAAS,GAAI,CAAC;AACxC,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { EntityTypeEntry } from "./ActionPlanDetailView.js";
|
|
2
|
-
import type { ActionPlanExecutionProvenanceResult, ExecutionProvenanceActivity, ManualAction } from "#ldo-ui";
|
|
3
|
-
export type SectionStatus = "pending" | "running" | "completed" | "failed";
|
|
4
|
-
export type SectionData = {
|
|
5
|
-
key: string;
|
|
6
|
-
entry: EntityTypeEntry;
|
|
7
|
-
activities: ExecutionProvenanceActivity[];
|
|
8
|
-
status: SectionStatus;
|
|
9
|
-
};
|
|
10
|
-
export type ResolvedManualActionStatus = Extract<ManualAction["status"], "COMPLETED" | "REJECTED">;
|
|
11
|
-
export type BuildSectionsArgs = {
|
|
12
|
-
entityTypes: EntityTypeEntry[];
|
|
13
|
-
activities: ExecutionProvenanceActivity[];
|
|
14
|
-
provenance: ActionPlanExecutionProvenanceResult | null;
|
|
15
|
-
planFailed: boolean;
|
|
16
|
-
};
|
|
17
|
-
export declare function parseTimestampMs(timestamp: string | null | undefined): number | null;
|
|
18
|
-
export declare function deriveSectionStatus(activities: ExecutionProvenanceActivity[], provenance: ActionPlanExecutionProvenanceResult | null, planFailed: boolean): SectionStatus;
|
|
19
|
-
export declare function matchesSection(activity: ExecutionProvenanceActivity, entry: EntityTypeEntry): boolean;
|
|
20
|
-
export declare function matchesManualActionSection(manualAction: ManualAction, entry: EntityTypeEntry, sectionCount: number): boolean;
|
|
21
|
-
export declare function matchesManualActionActivity(manualAction: ManualAction, activity: ExecutionProvenanceActivity): boolean;
|
|
22
|
-
export declare function findResolvedManualActionStatus(activity: ExecutionProvenanceActivity, manualActions: ManualAction[]): ResolvedManualActionStatus | null;
|
|
23
|
-
export declare function buildSections(args: BuildSectionsArgs): SectionData[];
|
|
24
|
-
//# sourceMappingURL=execution-section-model.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution-section-model.d.ts","sourceRoot":"","sources":["../../../src/components/planning/execution-section-model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,mCAAmC,EAAE,2BAA2B,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9G,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;AAEnG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,UAAU,EAAE,mCAAmC,GAAG,IAAI,CAAC;IACvD,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIpF;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,2BAA2B,EAAE,EACzC,UAAU,EAAE,mCAAmC,GAAG,IAAI,EACtD,UAAU,EAAE,OAAO,GAClB,aAAa,CAYf;AAqDD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,2BAA2B,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAWrG;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAgBT;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,2BAA2B,GACpC,OAAO,CAQT;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,2BAA2B,EACrC,aAAa,EAAE,YAAY,EAAE,GAC5B,0BAA0B,GAAG,IAAI,CAGnC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,WAAW,EAAE,CAmCpE"}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { iriLocalName } from "@manta-eu/client/shared/rdf-namespaces";
|
|
2
|
-
import { isPresent } from "@manta-eu/lib/present";
|
|
3
|
-
export function parseTimestampMs(timestamp) {
|
|
4
|
-
if (!timestamp)
|
|
5
|
-
return null;
|
|
6
|
-
const value = new Date(timestamp).getTime();
|
|
7
|
-
return Number.isFinite(value) ? value : null;
|
|
8
|
-
}
|
|
9
|
-
export function deriveSectionStatus(activities, provenance, planFailed) {
|
|
10
|
-
if (!isPresent(activities)) {
|
|
11
|
-
if (planFailed)
|
|
12
|
-
return "failed";
|
|
13
|
-
if (provenance?.planEndedAtTime)
|
|
14
|
-
return "completed";
|
|
15
|
-
return "pending";
|
|
16
|
-
}
|
|
17
|
-
if (activities.some((a) => a.errorMessage))
|
|
18
|
-
return "failed";
|
|
19
|
-
if (activities.every((a) => a.endedAtTime)) {
|
|
20
|
-
return planFailed ? "failed" : "completed";
|
|
21
|
-
}
|
|
22
|
-
if (activities.some((a) => a.startedAtTime))
|
|
23
|
-
return "running";
|
|
24
|
-
return "pending";
|
|
25
|
-
}
|
|
26
|
-
function isSectionLabelOrIriMatch(activity, typeName) {
|
|
27
|
-
const entityLabel = activity.entityLabel.toLowerCase();
|
|
28
|
-
const activityIri = activity.iri.toLowerCase();
|
|
29
|
-
const typeSlug = typeName.replace(/\s+/g, "_");
|
|
30
|
-
return entityLabel.includes(typeName) || activityIri.includes(typeSlug) || activityIri.includes(typeName);
|
|
31
|
-
}
|
|
32
|
-
function isSectionPauseAliasMatch(activity, typeName) {
|
|
33
|
-
if (!typeName.includes("pause"))
|
|
34
|
-
return false;
|
|
35
|
-
const entityLabel = activity.entityLabel.toLowerCase();
|
|
36
|
-
const opType = (activity.operationType ?? "").toLowerCase();
|
|
37
|
-
return opType.includes("delete") || opType.includes("pause") || entityLabel.includes("pause");
|
|
38
|
-
}
|
|
39
|
-
function isSectionScaleAliasMatch(activity, typeName) {
|
|
40
|
-
if (!typeName.includes("scale"))
|
|
41
|
-
return false;
|
|
42
|
-
const entityLabel = activity.entityLabel.toLowerCase();
|
|
43
|
-
const opType = (activity.operationType ?? "").toLowerCase();
|
|
44
|
-
return (opType.includes("addit") ||
|
|
45
|
-
opType.includes("scale") ||
|
|
46
|
-
opType.includes("budget") ||
|
|
47
|
-
entityLabel.includes("scale") ||
|
|
48
|
-
entityLabel.includes("budget"));
|
|
49
|
-
}
|
|
50
|
-
function isSectionMonitorAliasMatch(activity, typeName) {
|
|
51
|
-
if (!typeName.includes("monitor"))
|
|
52
|
-
return false;
|
|
53
|
-
const entityLabel = activity.entityLabel.toLowerCase();
|
|
54
|
-
const opType = (activity.operationType ?? "").toLowerCase();
|
|
55
|
-
return opType.includes("monitor") || entityLabel.includes("monitor") || entityLabel.includes("verif");
|
|
56
|
-
}
|
|
57
|
-
function isSectionEntityTypeNameMatch(activity, typeName) {
|
|
58
|
-
if (!activity.entityTypeName)
|
|
59
|
-
return false;
|
|
60
|
-
return typeName.includes(activity.entityTypeName.toLowerCase());
|
|
61
|
-
}
|
|
62
|
-
function isSectionRelatedEntitiesMatch(activity, entry) {
|
|
63
|
-
const typeName = entry.typeName.toLowerCase();
|
|
64
|
-
const entryTypeIri = entry.typeIri.toLowerCase();
|
|
65
|
-
for (const entity of activity.entities) {
|
|
66
|
-
if (!entity.typeName)
|
|
67
|
-
continue;
|
|
68
|
-
const entityTypeLower = entity.typeName.toLowerCase();
|
|
69
|
-
if (typeName.includes(entityTypeLower))
|
|
70
|
-
return true;
|
|
71
|
-
if (entryTypeIri.includes(entityTypeLower))
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
export function matchesSection(activity, entry) {
|
|
77
|
-
const typeName = entry.typeName.toLowerCase();
|
|
78
|
-
const predicates = [
|
|
79
|
-
() => isSectionLabelOrIriMatch(activity, typeName),
|
|
80
|
-
() => isSectionPauseAliasMatch(activity, typeName),
|
|
81
|
-
() => isSectionScaleAliasMatch(activity, typeName),
|
|
82
|
-
() => isSectionMonitorAliasMatch(activity, typeName),
|
|
83
|
-
() => isSectionEntityTypeNameMatch(activity, typeName),
|
|
84
|
-
() => isSectionRelatedEntitiesMatch(activity, entry),
|
|
85
|
-
];
|
|
86
|
-
return predicates.some((p) => p());
|
|
87
|
-
}
|
|
88
|
-
export function matchesManualActionSection(manualAction, entry, sectionCount) {
|
|
89
|
-
if (sectionCount === 1)
|
|
90
|
-
return true;
|
|
91
|
-
const entryTypeIri = entry.typeIri.toLowerCase();
|
|
92
|
-
const entryTypeName = entry.typeName.toLowerCase();
|
|
93
|
-
const manualTypeIri = manualAction.typeIri.toLowerCase();
|
|
94
|
-
const manualTypeName = manualAction.typeName.toLowerCase();
|
|
95
|
-
const manualSubject = manualAction.subjectLabel?.toLowerCase() ?? manualAction.subjectIri.toLowerCase();
|
|
96
|
-
return (manualTypeIri === entryTypeIri ||
|
|
97
|
-
manualTypeName === entryTypeName ||
|
|
98
|
-
entryTypeIri.includes(manualTypeName) ||
|
|
99
|
-
manualTypeIri.includes(entryTypeName) ||
|
|
100
|
-
manualSubject.includes(entryTypeName));
|
|
101
|
-
}
|
|
102
|
-
export function matchesManualActionActivity(manualAction, activity) {
|
|
103
|
-
if (activity.entityIri === manualAction.subjectIri)
|
|
104
|
-
return true;
|
|
105
|
-
if (activity.entities.some((entity) => entity.iri === manualAction.subjectIri))
|
|
106
|
-
return true;
|
|
107
|
-
const subjectLabel = manualAction.subjectLabel?.toLowerCase();
|
|
108
|
-
if (subjectLabel && activity.entityLabel.toLowerCase().includes(subjectLabel))
|
|
109
|
-
return true;
|
|
110
|
-
return activity.iri.toLowerCase().includes(iriLocalName(manualAction.subjectIri).toLowerCase());
|
|
111
|
-
}
|
|
112
|
-
export function findResolvedManualActionStatus(activity, manualActions) {
|
|
113
|
-
const found = manualActions.find((manualAction) => matchesManualActionActivity(manualAction, activity));
|
|
114
|
-
return found?.status === "COMPLETED" || found?.status === "REJECTED" ? found.status : null;
|
|
115
|
-
}
|
|
116
|
-
export function buildSections(args) {
|
|
117
|
-
const { entityTypes, activities, provenance, planFailed } = args;
|
|
118
|
-
const matched = new Set();
|
|
119
|
-
const sections = entityTypes.map((entry) => {
|
|
120
|
-
const sectionActivities = activities.filter((a) => {
|
|
121
|
-
if (matched.has(a.iri))
|
|
122
|
-
return false;
|
|
123
|
-
return matchesSection(a, entry);
|
|
124
|
-
});
|
|
125
|
-
for (const a of sectionActivities)
|
|
126
|
-
matched.add(a.iri);
|
|
127
|
-
return {
|
|
128
|
-
key: entry.typeIri,
|
|
129
|
-
entry,
|
|
130
|
-
activities: sectionActivities,
|
|
131
|
-
status: deriveSectionStatus(sectionActivities, provenance, planFailed),
|
|
132
|
-
};
|
|
133
|
-
});
|
|
134
|
-
const unmatched = activities.filter((a) => !matched.has(a.iri));
|
|
135
|
-
if (isPresent(unmatched)) {
|
|
136
|
-
sections.push({
|
|
137
|
-
key: "__unmatched",
|
|
138
|
-
entry: {
|
|
139
|
-
typeIri: "__unmatched",
|
|
140
|
-
typeName: "Other actions",
|
|
141
|
-
addedCount: 0,
|
|
142
|
-
updatedCount: unmatched.length,
|
|
143
|
-
},
|
|
144
|
-
activities: unmatched,
|
|
145
|
-
status: deriveSectionStatus(unmatched, provenance, planFailed),
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
return sections;
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=execution-section-model.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution-section-model.js","sourceRoot":"","sources":["../../../src/components/planning/execution-section-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrandFontFamilyView.d.ts","sourceRoot":"","sources":["../../../src/graph/nodes/BrandFontFamilyView.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAiEhD,eAAO,MAAM,mBAAmB,uDA6C9B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrandFontFamilyView.js","sourceRoot":"","sources":["../../../src/graph/nodes/BrandFontFamilyView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrandFontUploadButton.d.ts","sourceRoot":"","sources":["../../../src/graph/nodes/BrandFontUploadButton.tsx"],"names":[],"mappings":"AAsDA,KAAK,0BAA0B,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,2CAsCtE"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useAbortUploadMutation, useCompleteUploadMutation, useExecuteAgentActionAdditionMutation, useInitiateUploadMutation, } from "@manta-eu/client";
|
|
3
|
-
import { namespaces } from "@manta-eu/rdf-lib/namespaces";
|
|
4
|
-
import { Upload } from "lucide-react";
|
|
5
|
-
import { use, useRef, useState } from "react";
|
|
6
|
-
import { toast } from "sonner";
|
|
7
|
-
import { Button } from "#components/button/index";
|
|
8
|
-
import { buildActionDocument, mintSubjectIri } from "#lib/action-document";
|
|
9
|
-
import { uploadFile } from "#lib/upload-client";
|
|
10
|
-
import { MantaClientProviderContext } from "#providers/manta-client-context";
|
|
11
|
-
const acceptedFontFiles = ".woff2,.woff,.ttf,.otf";
|
|
12
|
-
const attachFontFile = `${namespaces.brand}AttachFontFile`;
|
|
13
|
-
const attachFontFileShape = `${namespaces.brand}AttachFontFileShape`;
|
|
14
|
-
function ignoreProgress() { }
|
|
15
|
-
// Graph views sit below the provider barrels, so this reads the client context directly instead of useExecuteAction.
|
|
16
|
-
function useAttachFontFile(family) {
|
|
17
|
-
const clientContext = use(MantaClientProviderContext);
|
|
18
|
-
const mantaClient = clientContext?.mantaClient;
|
|
19
|
-
if (!mantaClient)
|
|
20
|
-
throw new Error("BrandFontUploadButton must be used within a MantaClientProvider");
|
|
21
|
-
const uploadRelay = clientContext?.uploadRelay;
|
|
22
|
-
const { mutateAsync: initiateUpload } = useInitiateUploadMutation(mantaClient);
|
|
23
|
-
const { mutateAsync: completeUpload } = useCompleteUploadMutation(mantaClient);
|
|
24
|
-
const { mutateAsync: abortUpload } = useAbortUploadMutation(mantaClient);
|
|
25
|
-
const { mutateAsync: startAddition } = useExecuteAgentActionAdditionMutation(mantaClient);
|
|
26
|
-
return async (file) => {
|
|
27
|
-
const { fileIri } = await uploadFile({
|
|
28
|
-
file,
|
|
29
|
-
onFileProgress: ignoreProgress,
|
|
30
|
-
initiateUpload,
|
|
31
|
-
completeUpload,
|
|
32
|
-
abortUpload,
|
|
33
|
-
...(uploadRelay ? { relay: uploadRelay } : {}),
|
|
34
|
-
});
|
|
35
|
-
const subjectIri = mintSubjectIri(attachFontFile);
|
|
36
|
-
const properties = buildActionDocument({ subjectIri, rdfType: attachFontFile }, { [`${namespaces.brand}fontFamily`]: family, [`${namespaces.brand}fontFile`]: { "@id": fileIri } });
|
|
37
|
-
const { executeActionAddition } = await startAddition({
|
|
38
|
-
input: { subjectIri, rdfType: attachFontFile, actionShape: attachFontFileShape, properties },
|
|
39
|
-
});
|
|
40
|
-
if (!executeActionAddition.success)
|
|
41
|
-
throw new Error(executeActionAddition.error ?? "The font was not attached");
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
export function BrandFontUploadButton(props) {
|
|
45
|
-
const { family } = props;
|
|
46
|
-
const input = useRef(null);
|
|
47
|
-
const [isAttaching, setIsAttaching] = useState(false);
|
|
48
|
-
const attach = useAttachFontFile(family);
|
|
49
|
-
async function attachChosen(file) {
|
|
50
|
-
setIsAttaching(true);
|
|
51
|
-
try {
|
|
52
|
-
await attach(file);
|
|
53
|
-
toast.success(`${file.name} is being attached to ${family}`);
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
toast.error(error instanceof Error ? error.message : `Could not attach ${file.name}`);
|
|
57
|
-
}
|
|
58
|
-
finally {
|
|
59
|
-
setIsAttaching(false);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return (_jsxs(_Fragment, { children: [_jsx("input", { ref: input, type: "file", accept: acceptedFontFiles, className: "hidden", onChange: (event) => {
|
|
63
|
-
const file = event.target.files?.[0];
|
|
64
|
-
event.target.value = "";
|
|
65
|
-
if (file)
|
|
66
|
-
void attachChosen(file);
|
|
67
|
-
} }), _jsxs(Button, { variant: "secondary", size: "sm", disabled: isAttaching, onClick: () => input.current?.click(), children: [_jsx(Upload, { size: 12 }), "Upload font"] })] }));
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=BrandFontUploadButton.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrandFontUploadButton.js","sourceRoot":"","sources":["../../../src/graph/nodes/BrandFontUploadButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TruncateTooltip.d.ts","sourceRoot":"","sources":["../../../../src/routes/data-explorer/components/TruncateTooltip.tsx"],"names":[],"mappings":"AAGA,KAAK,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAmB1D"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import { Tooltip, TooltipContent, TooltipTrigger } from "#components/tooltip/index";
|
|
4
|
-
export function TruncateTooltip(props) {
|
|
5
|
-
const { text, className } = props;
|
|
6
|
-
const [isTruncated, setIsTruncated] = useState(false);
|
|
7
|
-
return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: className, onMouseEnter: (event) => setIsTruncated(event.currentTarget.scrollWidth > event.currentTarget.clientWidth), children: text }) }), isTruncated && _jsx(TooltipContent, { children: text })] }));
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=TruncateTooltip.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TruncateTooltip.js","sourceRoot":"","sources":["../../../../src/routes/data-explorer/components/TruncateTooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIpF,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAElC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtD,OAAO,CACL,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,eACE,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,YAEzG,IAAI,GACA,GACQ,EAEhB,WAAW,IAAI,KAAC,cAAc,cAAE,IAAI,GAAkB,IAC/C,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { humanDuration } from "@manta-eu/lib/humanize";
|
|
2
|
-
import { AlertCircle, Check, ClockFading, Loader2, X } from "lucide-react";
|
|
3
|
-
import { useEffect, useState } from "react";
|
|
4
|
-
import { match } from "ts-pattern";
|
|
5
|
-
import { parseTimestampMs, type ResolvedManualActionStatus } from "./execution-section-model";
|
|
6
|
-
import type { ExecutionProvenanceActivity } from "#ldo-ui";
|
|
7
|
-
import { cn } from "#lib/utils";
|
|
8
|
-
|
|
9
|
-
type ExecutionActivityRowProps = {
|
|
10
|
-
activity: ExecutionProvenanceActivity;
|
|
11
|
-
manualActionStatus?: ResolvedManualActionStatus | null;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
type ActivityIconState = "error" | "rejected" | "completed" | "running" | "pending";
|
|
15
|
-
|
|
16
|
-
function resolveIconState(
|
|
17
|
-
activity: ExecutionProvenanceActivity,
|
|
18
|
-
manualActionStatus: ResolvedManualActionStatus | null,
|
|
19
|
-
): ActivityIconState {
|
|
20
|
-
if (activity.errorMessage) return "error";
|
|
21
|
-
if (manualActionStatus === "REJECTED") return "rejected";
|
|
22
|
-
if (manualActionStatus === "COMPLETED" || !!activity.endedAtTime) return "completed";
|
|
23
|
-
if (activity.startedAtTime) return "running";
|
|
24
|
-
return "pending";
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function ExecutionActivityRow(props: ExecutionActivityRowProps) {
|
|
28
|
-
const { activity, manualActionStatus = null } = props;
|
|
29
|
-
const iconState = resolveIconState(activity, manualActionStatus);
|
|
30
|
-
const hasError = iconState === "error";
|
|
31
|
-
const isPending = iconState === "pending";
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<div className={cn("flex items-center justify-between pl-5 pr-3 py-2", hasError && "bg-error/10")}>
|
|
35
|
-
<div className="flex items-center gap-3 min-w-0">
|
|
36
|
-
{match(iconState)
|
|
37
|
-
.with("error", () => <AlertCircle className="size-4 shrink-0 text-error-foreground" />)
|
|
38
|
-
.with("rejected", () => <X className="size-4 shrink-0 text-error-foreground" />)
|
|
39
|
-
.with("completed", () => <Check className="size-4 shrink-0 text-success-foreground" />)
|
|
40
|
-
.with("running", () => <Loader2 className="size-4 shrink-0 text-muted-foreground animate-spin" />)
|
|
41
|
-
.with("pending", () => <ClockFading className="size-4 shrink-0 text-muted-foreground/40" />)
|
|
42
|
-
.exhaustive()}
|
|
43
|
-
<span
|
|
44
|
-
className={cn(
|
|
45
|
-
"text-[12px] font-mono leading-[18px] truncate",
|
|
46
|
-
hasError ? "text-error-foreground" : isPending ? "text-muted-foreground" : "text-default-foreground",
|
|
47
|
-
)}
|
|
48
|
-
>
|
|
49
|
-
{activity.errorMessage ?? activity.entityLabel}
|
|
50
|
-
</span>
|
|
51
|
-
</div>
|
|
52
|
-
<ActivityElapsed activity={activity} hasError={hasError} isPending={isPending} />
|
|
53
|
-
</div>
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function ActivityElapsed(props: { activity: ExecutionProvenanceActivity; hasError: boolean; isPending: boolean }) {
|
|
58
|
-
const { activity, hasError, isPending } = props;
|
|
59
|
-
const isRunning = !!activity.startedAtTime && !activity.endedAtTime;
|
|
60
|
-
const [now, setNow] = useState(() => Date.now());
|
|
61
|
-
|
|
62
|
-
useEffect(() => {
|
|
63
|
-
if (!isRunning) return;
|
|
64
|
-
const id = setInterval(() => setNow(Date.now()), 1000);
|
|
65
|
-
return () => clearInterval(id);
|
|
66
|
-
}, [isRunning]);
|
|
67
|
-
|
|
68
|
-
if (!activity.startedAtTime) {
|
|
69
|
-
return <span className="text-[12px] font-mono leading-[18px] shrink-0 ml-3 text-muted-foreground">-</span>;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const start = parseTimestampMs(activity.startedAtTime);
|
|
73
|
-
if (start === null) {
|
|
74
|
-
return <span className="text-[12px] font-mono leading-[18px] shrink-0 ml-3 text-muted-foreground">-</span>;
|
|
75
|
-
}
|
|
76
|
-
const end = parseTimestampMs(activity.endedAtTime) ?? now;
|
|
77
|
-
const label = humanDuration({ start, end, largest: 2 }) || "0 seconds";
|
|
78
|
-
|
|
79
|
-
return (
|
|
80
|
-
<span
|
|
81
|
-
className={cn(
|
|
82
|
-
"text-[12px] font-mono leading-[18px] shrink-0 ml-3",
|
|
83
|
-
hasError ? "text-error-foreground" : isPending ? "text-muted-foreground" : "text-default-foreground",
|
|
84
|
-
)}
|
|
85
|
-
>
|
|
86
|
-
{label}
|
|
87
|
-
</span>
|
|
88
|
-
);
|
|
89
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { humanDuration } from "@manta-eu/lib/humanize";
|
|
2
|
-
import { isPresent } from "@manta-eu/lib/present";
|
|
3
|
-
import { AlertCircle, Check, ChevronDown, ClockFading, Loader2 } from "lucide-react";
|
|
4
|
-
import { isNotNil } from "ramda";
|
|
5
|
-
import { useEffect, useState } from "react";
|
|
6
|
-
import { match } from "ts-pattern";
|
|
7
|
-
import { resolveStepIcon } from "./action-plan-icons";
|
|
8
|
-
import type { EntityTypeEntry } from "./ActionPlanDetailView";
|
|
9
|
-
import { findResolvedManualActionStatus, parseTimestampMs, type SectionStatus } from "./execution-section-model";
|
|
10
|
-
import { ExecutionActivityRow } from "./ExecutionActivityRow";
|
|
11
|
-
import { ManualActionCard, type ManualActionTarget } from "./ManualActionCard";
|
|
12
|
-
import type { ExecutionProvenanceActivity, ManualAction, ManualActionResolution, ManualActionResolving } from "#ldo-ui";
|
|
13
|
-
import { getPendingManualActions, getResolvedManualActions } from "#lib/manual-actions";
|
|
14
|
-
import { cn } from "#lib/utils";
|
|
15
|
-
|
|
16
|
-
export type ExecutionSectionItemProps = {
|
|
17
|
-
entry: EntityTypeEntry;
|
|
18
|
-
activities: ExecutionProvenanceActivity[];
|
|
19
|
-
status: SectionStatus;
|
|
20
|
-
fallbackStartedAtMs?: number | null;
|
|
21
|
-
isExpanded: boolean;
|
|
22
|
-
onToggle: () => void;
|
|
23
|
-
manualActions?: ManualAction[];
|
|
24
|
-
manualActionEntities?: Map<string, ManualActionTarget[]>;
|
|
25
|
-
onManualActionResolve?: (subjectIri: string, resolution: ManualActionResolution) => void;
|
|
26
|
-
resolvingManualAction?: ManualActionResolving;
|
|
27
|
-
canResolveManualAction?: boolean;
|
|
28
|
-
manualActionDisabledReason?: string;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export function ExecutionSectionItem(props: ExecutionSectionItemProps) {
|
|
32
|
-
const {
|
|
33
|
-
entry,
|
|
34
|
-
activities,
|
|
35
|
-
status,
|
|
36
|
-
fallbackStartedAtMs = null,
|
|
37
|
-
isExpanded,
|
|
38
|
-
onToggle,
|
|
39
|
-
manualActions = [],
|
|
40
|
-
manualActionEntities,
|
|
41
|
-
onManualActionResolve,
|
|
42
|
-
resolvingManualAction,
|
|
43
|
-
canResolveManualAction,
|
|
44
|
-
manualActionDisabledReason,
|
|
45
|
-
} = props;
|
|
46
|
-
|
|
47
|
-
const pendingManualActions = getPendingManualActions(manualActions);
|
|
48
|
-
const resolvedManualActions = getResolvedManualActions(manualActions);
|
|
49
|
-
const hasContent = isPresent(activities) || isPresent(pendingManualActions);
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<div>
|
|
53
|
-
<button
|
|
54
|
-
type="button"
|
|
55
|
-
onClick={onToggle}
|
|
56
|
-
className="flex w-full items-center gap-3 pl-2 pr-3 py-3 text-left transition-colors hover:bg-muted/30"
|
|
57
|
-
>
|
|
58
|
-
<div className="flex shrink-0 items-center p-1.5 rounded-lg">
|
|
59
|
-
<ChevronDown
|
|
60
|
-
className={cn("size-5 shrink-0 text-muted-foreground transition-transform", !isExpanded && "-rotate-90")}
|
|
61
|
-
/>
|
|
62
|
-
</div>
|
|
63
|
-
|
|
64
|
-
<div className="flex size-9 shrink-0 items-center justify-center rounded-lg bg-faint">
|
|
65
|
-
{resolveStepIcon(entry.typeName, "size-5 text-muted-foreground")}
|
|
66
|
-
</div>
|
|
67
|
-
|
|
68
|
-
<div className="flex-1 min-w-0 flex flex-col gap-0.5">
|
|
69
|
-
<span
|
|
70
|
-
className={cn(
|
|
71
|
-
"typography-small-medium block truncate",
|
|
72
|
-
status === "pending" ? "text-muted-foreground" : "text-default-foreground",
|
|
73
|
-
)}
|
|
74
|
-
>
|
|
75
|
-
{entry.typeName}
|
|
76
|
-
</span>
|
|
77
|
-
{entry.description && (
|
|
78
|
-
<span className="typography-tiny text-muted-foreground block truncate">{entry.description}</span>
|
|
79
|
-
)}
|
|
80
|
-
</div>
|
|
81
|
-
|
|
82
|
-
<div className="flex items-center gap-3 shrink-0">
|
|
83
|
-
<SectionElapsed
|
|
84
|
-
activities={activities}
|
|
85
|
-
status={status}
|
|
86
|
-
estimatedTime={entry.estimatedTime ?? null}
|
|
87
|
-
fallbackStartedAtMs={fallbackStartedAtMs}
|
|
88
|
-
/>
|
|
89
|
-
<SectionStatusIcon status={status} />
|
|
90
|
-
</div>
|
|
91
|
-
</button>
|
|
92
|
-
|
|
93
|
-
{isExpanded && hasContent && (
|
|
94
|
-
<div className="bg-faint border-t border-default-border py-1.5">
|
|
95
|
-
{activities.map((activity) => (
|
|
96
|
-
<ExecutionActivityRow
|
|
97
|
-
key={activity.iri}
|
|
98
|
-
activity={activity}
|
|
99
|
-
manualActionStatus={findResolvedManualActionStatus(activity, resolvedManualActions)}
|
|
100
|
-
/>
|
|
101
|
-
))}
|
|
102
|
-
|
|
103
|
-
{pendingManualActions.map((ma) => (
|
|
104
|
-
<ManualActionCard
|
|
105
|
-
key={ma.subjectIri}
|
|
106
|
-
manualAction={ma}
|
|
107
|
-
entities={manualActionEntities?.get(ma.subjectIri) ?? []}
|
|
108
|
-
description={ma.description ?? entry.description ?? undefined}
|
|
109
|
-
resolving={resolvingManualAction}
|
|
110
|
-
onResolve={(resolution) => onManualActionResolve?.(ma.subjectIri, resolution)}
|
|
111
|
-
canResolve={canResolveManualAction}
|
|
112
|
-
disabledReason={manualActionDisabledReason}
|
|
113
|
-
/>
|
|
114
|
-
))}
|
|
115
|
-
</div>
|
|
116
|
-
)}
|
|
117
|
-
</div>
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function SectionStatusIcon(props: { status: SectionStatus }) {
|
|
122
|
-
return match(props.status)
|
|
123
|
-
.with("completed", () => (
|
|
124
|
-
<div className="size-5 flex items-center justify-center rounded-full bg-success">
|
|
125
|
-
<Check className="size-3 text-success-foreground" />
|
|
126
|
-
</div>
|
|
127
|
-
))
|
|
128
|
-
.with("running", () => <Loader2 className="size-5 text-muted-foreground animate-spin" />)
|
|
129
|
-
.with("failed", () => (
|
|
130
|
-
<div className="size-5 flex items-center justify-center rounded-full bg-error">
|
|
131
|
-
<AlertCircle className="size-3 text-error-foreground" />
|
|
132
|
-
</div>
|
|
133
|
-
))
|
|
134
|
-
.with("pending", () => <ClockFading className="size-5 text-muted-foreground/40" />)
|
|
135
|
-
.exhaustive();
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
function SectionElapsed(props: {
|
|
139
|
-
activities: ExecutionProvenanceActivity[];
|
|
140
|
-
status: SectionStatus;
|
|
141
|
-
estimatedTime: string | null;
|
|
142
|
-
fallbackStartedAtMs?: number | null;
|
|
143
|
-
}) {
|
|
144
|
-
const { activities, status, estimatedTime, fallbackStartedAtMs = null } = props;
|
|
145
|
-
const isRunning = status === "running";
|
|
146
|
-
const [now, setNow] = useState(() => Date.now());
|
|
147
|
-
|
|
148
|
-
useEffect(() => {
|
|
149
|
-
if (!isRunning) return;
|
|
150
|
-
const id = setInterval(() => setNow(Date.now()), 1000);
|
|
151
|
-
return () => clearInterval(id);
|
|
152
|
-
}, [isRunning]);
|
|
153
|
-
|
|
154
|
-
const started = activities
|
|
155
|
-
.map((a) => a.startedAtTime)
|
|
156
|
-
.filter(isNotNil)
|
|
157
|
-
.sort();
|
|
158
|
-
if (!isPresent(started)) {
|
|
159
|
-
if (fallbackStartedAtMs !== null) {
|
|
160
|
-
return (
|
|
161
|
-
<span className="typography-tiny text-muted-foreground whitespace-nowrap">
|
|
162
|
-
{humanDuration({ start: fallbackStartedAtMs, end: now, largest: 2 }) || "0 seconds"}
|
|
163
|
-
</span>
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
if (estimatedTime) {
|
|
167
|
-
return <span className="typography-tiny text-muted-foreground/60 whitespace-nowrap">{estimatedTime}</span>;
|
|
168
|
-
}
|
|
169
|
-
return null;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const ended = activities
|
|
173
|
-
.map((a) => a.endedAtTime)
|
|
174
|
-
.filter(isNotNil)
|
|
175
|
-
.sort()
|
|
176
|
-
.reverse();
|
|
177
|
-
const start = parseTimestampMs(started[0]);
|
|
178
|
-
if (start === null) return null;
|
|
179
|
-
const end = isPresent(ended) && !isRunning ? parseTimestampMs(ended[0]) : now;
|
|
180
|
-
if (end === null) return null;
|
|
181
|
-
const label = humanDuration({ start, end, largest: 2 }) || "0 seconds";
|
|
182
|
-
|
|
183
|
-
return <span className="typography-tiny text-muted-foreground whitespace-nowrap">{label}</span>;
|
|
184
|
-
}
|