@manta-eu/react 0.8.0 → 0.8.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/action-plan-changes/ActionPlanChangesTable.js +1 -1
- package/dist/action-plan-changes/build-change-tree.js.map +1 -1
- package/dist/ad-preview/AdPluralDisplay.js +1 -1
- package/dist/ad-preview/GoogleAdGroupAdSingularDisplay.js +1 -3
- package/dist/ad-preview/GoogleAdGroupAdSingularDisplay.js.map +1 -1
- package/dist/ad-preview/MetaAdPreview.js +1 -1
- package/dist/ad-preview/meta-ad-copy.d.ts.map +1 -1
- package/dist/ad-preview/meta-ad-model.js.map +1 -1
- package/dist/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/components/ad-preview/business-avatar.d.ts.map +1 -1
- package/dist/components/ad-preview/business-identity.d.ts.map +1 -1
- package/dist/components/ad-preview/business-info.d.ts.map +1 -1
- package/dist/components/ad-preview/facebook/carousel.d.ts.map +1 -1
- package/dist/components/ad-preview/facebook/constants.d.ts.map +1 -1
- package/dist/components/ad-preview/facebook/header.js +1 -1
- package/dist/components/ad-preview/facebook/instream-reels.d.ts.map +1 -1
- package/dist/components/ad-preview/facebook/marketplace.d.ts.map +1 -1
- package/dist/components/ad-preview/google/search.js +1 -1
- package/dist/components/ad-preview/instagram/feed.js +1 -1
- package/dist/components/ad-preview/instagram/search-result.d.ts.map +1 -1
- package/dist/components/ad-preview/use-scroll-navigation.d.ts.map +1 -1
- package/dist/components/ai-elements/conversation.js +1 -1
- package/dist/components/badge/index.d.ts.map +1 -1
- package/dist/components/badge/index.js +1 -1
- package/dist/components/banner/index.d.ts.map +1 -1
- package/dist/components/branding/MantaGridAnimation.js +1 -1
- package/dist/components/breadcrumbs/index.js +1 -1
- package/dist/components/button/index.d.ts.map +1 -1
- package/dist/components/calendar/index.js +2 -2
- package/dist/components/card/index.d.ts.map +1 -1
- package/dist/components/chart/ForecastEventCard.js +1 -1
- package/dist/components/chart/ForecastHoverCard.js +1 -1
- package/dist/components/chart/annotations.d.ts.map +1 -1
- package/dist/components/chart/chart-colors.d.ts.map +1 -1
- package/dist/components/chart/chart-schemas.d.ts +599 -599
- package/dist/components/chart/chart-schemas.d.ts.map +1 -1
- package/dist/components/chart/chart-schemas.js.map +1 -1
- package/dist/components/chart/chart.js +1 -1
- package/dist/components/chart/forecast-model.d.ts +1 -1
- package/dist/components/chart/forecast-model.d.ts.map +1 -1
- package/dist/components/chart/forecast.d.ts.map +1 -1
- package/dist/components/chat/chat-input/index.d.ts +1 -1
- package/dist/components/chat/chat-input/index.js +1 -1
- package/dist/components/chat/chat-input-footer/index.js +1 -1
- package/dist/components/chat/chat-reasoning/index.js +1 -1
- package/dist/components/chat-view/Chat.js +1 -1
- package/dist/components/chat-view/FileMessagePart.js +1 -1
- package/dist/components/chat-view/GraphContextPanel.js +1 -1
- package/dist/components/chat-view/MessageItem.js +1 -1
- package/dist/components/command/index.d.ts +15 -15
- package/dist/components/command/index.d.ts.map +1 -1
- package/dist/components/command/index.js +1 -1
- package/dist/components/dropdown/index.js +1 -1
- package/dist/components/graph/AgentsGraphListRow.js +1 -1
- package/dist/components/input/ai-action-buttons.js +1 -1
- package/dist/components/input/input-date-range.js +1 -1
- package/dist/components/input/input-field.d.ts.map +1 -1
- package/dist/components/input/input-field.js +1 -1
- package/dist/components/input/textarea.d.ts.map +1 -1
- package/dist/components/input/textarea.js +2 -2
- package/dist/components/input-otp/index.d.ts +6 -6
- package/dist/components/input-otp/index.d.ts.map +1 -1
- package/dist/components/layouts/InstallPrompt.js +1 -1
- package/dist/components/layouts/KnowledgeGraphStartupGate.d.ts +1 -1
- package/dist/components/layouts/RouteLayout.js +1 -1
- package/dist/components/layouts/page/PageHeaderActions.js +1 -1
- package/dist/components/loader/index.d.ts.map +1 -1
- package/dist/components/manta-logo/index.d.ts.map +1 -1
- package/dist/components/modal/index.d.ts.map +1 -1
- package/dist/components/onboarding/SidebarSpotlight.js +1 -1
- package/dist/components/pill/index.d.ts.map +1 -1
- package/dist/components/planning/ActionPlanDetailView.js +1 -1
- package/dist/components/planning/ManualActionList.d.ts +1 -1
- package/dist/components/planning/PlanDetailFooter.js +1 -1
- package/dist/components/progress/index.d.ts.map +1 -1
- package/dist/components/radio/index.d.ts.map +1 -1
- package/dist/components/rdf-insights/CampaignPerformanceSummary.js +1 -1
- package/dist/components/rdf-insights/InsightCard.js +1 -1
- package/dist/components/rdf-insights/ProductProfitability.js +1 -1
- package/dist/components/rdf-insights/ProductSalesRanking.js +1 -1
- package/dist/components/rdf-insights/ProductVariantsTable.js +1 -1
- package/dist/components/rdf-insights/RoasBenchmark.js +1 -1
- package/dist/components/select/index.d.ts.map +1 -1
- package/dist/components/sheet/index.d.ts.map +1 -1
- package/dist/components/sidebar/company-picker.js +1 -1
- package/dist/components/sidebar/nav-menu.js +1 -1
- package/dist/components/skeleton/index.d.ts +4 -4
- package/dist/components/skeleton/index.d.ts.map +1 -1
- package/dist/components/status/index.d.ts.map +1 -1
- package/dist/components/table/index.d.ts.map +1 -1
- package/dist/components/table/index.js.map +1 -1
- package/dist/components/table/use-table-state.js.map +1 -1
- package/dist/components/table-skeleton/index.js +1 -1
- package/dist/components/tabs/index.d.ts.map +1 -1
- package/dist/components/thinking/index.d.ts.map +1 -1
- package/dist/components/toast/index.d.ts.map +1 -1
- package/dist/components/tool-invocation-card/DefaultResultDisplay.js +1 -1
- package/dist/components/tool-invocation-card/ToolOutputRenderer.js +1 -1
- package/dist/components/tree-multi-select/tree-multi-select-rows.js.map +1 -1
- package/dist/datastore-picker/DatastoreRow.js +1 -1
- package/dist/easing.d.ts.map +1 -1
- package/dist/entity-tree/EntityRelationTree.js +1 -1
- package/dist/explain-fact/EntityChip.js +1 -1
- package/dist/explain-fact/conclusion/ConclusionSubtitle.js +1 -1
- package/dist/explain-fact/inspector/InspectorBindings.js +1 -1
- package/dist/explain-fact/inspector/SupportsSection.js +1 -1
- package/dist/explain-fact/proof-tree/ProofRowContent.js +1 -1
- package/dist/explain-fact/proof-tree/ProofRowValue.js +1 -1
- package/dist/globals.css +6 -0
- package/dist/graph/GraphContextPanel.js +1 -1
- package/dist/graph/GraphControls.d.ts +1 -1
- package/dist/graph/GraphControls.d.ts.map +1 -1
- package/dist/graph/GraphControls.js +1 -1
- package/dist/graph/GraphErrorBoundary.d.ts +1 -1
- package/dist/graph/GraphErrorBoundary.d.ts.map +1 -1
- package/dist/graph/NodeContextMenu.d.ts +1 -1
- package/dist/graph/NodeContextMenu.d.ts.map +1 -1
- package/dist/graph/NodeContextMenu.js +1 -1
- package/dist/graph/NodeDetailPanel/PropertyDiffView.js +1 -1
- package/dist/graph/custom-nodes.d.ts +4 -4
- package/dist/graph/custom-nodes.d.ts.map +1 -1
- package/dist/graph/custom-nodes.js +1 -1
- package/dist/graph/graph-layout.js.map +1 -1
- package/dist/graph/graph-list-utils.js.map +1 -1
- package/dist/graph/graph-model.js.map +1 -1
- package/dist/graph/graph-store.js.map +1 -1
- package/dist/graph/nodes/AdsDailyReportTemplateView.d.ts +1 -1
- package/dist/graph/nodes/AdsDailyReportTemplateView.d.ts.map +1 -1
- package/dist/graph/nodes/AttioCallRecordingView.d.ts +1 -1
- package/dist/graph/nodes/AttioCallRecordingView.d.ts.map +1 -1
- package/dist/graph/nodes/AttioCompanyView.d.ts +1 -1
- package/dist/graph/nodes/AttioCompanyView.d.ts.map +1 -1
- package/dist/graph/nodes/AttioDealView.d.ts +1 -1
- package/dist/graph/nodes/AttioDealView.d.ts.map +1 -1
- package/dist/graph/nodes/AttioMeetingView.d.ts +1 -1
- package/dist/graph/nodes/AttioMeetingView.d.ts.map +1 -1
- package/dist/graph/nodes/AttioNoteView.d.ts +1 -1
- package/dist/graph/nodes/AttioNoteView.d.ts.map +1 -1
- package/dist/graph/nodes/AttioTaskView.d.ts +1 -1
- package/dist/graph/nodes/AttioTaskView.d.ts.map +1 -1
- package/dist/graph/nodes/BrandAssetAnalysisActionView.d.ts +1 -1
- package/dist/graph/nodes/BrandAssetAnalysisActionView.d.ts.map +1 -1
- package/dist/graph/nodes/BrandAssetAnalysisView.d.ts +1 -1
- package/dist/graph/nodes/BrandAssetAnalysisView.d.ts.map +1 -1
- package/dist/graph/nodes/BrandFontSuggestionView.d.ts +1 -1
- package/dist/graph/nodes/BrandFontSuggestionView.d.ts.map +1 -1
- package/dist/graph/nodes/BrandGuidelinesView.d.ts +1 -1
- package/dist/graph/nodes/BrandGuidelinesView.d.ts.map +1 -1
- package/dist/graph/nodes/ConnectedAccountCard.d.ts +1 -1
- package/dist/graph/nodes/ConnectedAccountCard.d.ts.map +1 -1
- package/dist/graph/nodes/CoresignalCompanyView.d.ts +1 -1
- package/dist/graph/nodes/CoresignalCompanyView.d.ts.map +1 -1
- package/dist/graph/nodes/CoresignalEmployeeView.d.ts +1 -1
- package/dist/graph/nodes/CoresignalEmployeeView.d.ts.map +1 -1
- package/dist/graph/nodes/CoresignalExperienceView.d.ts +1 -1
- package/dist/graph/nodes/CoresignalExperienceView.d.ts.map +1 -1
- package/dist/graph/nodes/CoresignalJobView.d.ts +1 -1
- package/dist/graph/nodes/CoresignalJobView.d.ts.map +1 -1
- package/dist/graph/nodes/CoresignalKeyExecutiveDepartureView.d.ts +1 -1
- package/dist/graph/nodes/CoresignalKeyExecutiveDepartureView.d.ts.map +1 -1
- package/dist/graph/nodes/EntityCardShell.d.ts +1 -1
- package/dist/graph/nodes/EntityCardShell.d.ts.map +1 -1
- package/dist/graph/nodes/Ga4DailyOverviewView.d.ts +1 -1
- package/dist/graph/nodes/Ga4DailyOverviewView.d.ts.map +1 -1
- package/dist/graph/nodes/Ga4FunnelEventCountView.d.ts +1 -1
- package/dist/graph/nodes/Ga4FunnelEventCountView.d.ts.map +1 -1
- package/dist/graph/nodes/Ga4TrafficSourceView.d.ts +1 -1
- package/dist/graph/nodes/Ga4TrafficSourceView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleAdGroupAdView.d.ts +1 -1
- package/dist/graph/nodes/GoogleAdGroupAdView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleAdGroupCriterionView.d.ts +1 -1
- package/dist/graph/nodes/GoogleAdGroupCriterionView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleAdGroupView.d.ts +1 -1
- package/dist/graph/nodes/GoogleAdGroupView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleCampaignBudgetView.d.ts +1 -1
- package/dist/graph/nodes/GoogleCampaignBudgetView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleCampaignCriterionView.d.ts +1 -1
- package/dist/graph/nodes/GoogleCampaignCriterionView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleCampaignInsightView.d.ts +1 -1
- package/dist/graph/nodes/GoogleCampaignInsightView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleCampaignView.d.ts +1 -1
- package/dist/graph/nodes/GoogleCampaignView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleCustomerClientView.d.ts +1 -1
- package/dist/graph/nodes/GoogleCustomerClientView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleCustomerView.d.ts +1 -1
- package/dist/graph/nodes/GoogleCustomerView.d.ts.map +1 -1
- package/dist/graph/nodes/GoogleSearchTermInsightView.d.ts +1 -1
- package/dist/graph/nodes/GoogleSearchTermInsightView.d.ts.map +1 -1
- package/dist/graph/nodes/LinkedinAdAccountView.d.ts +1 -1
- package/dist/graph/nodes/LinkedinAdAccountView.d.ts.map +1 -1
- package/dist/graph/nodes/MetaAdAccountActivityView.d.ts +1 -1
- package/dist/graph/nodes/MetaAdAccountActivityView.d.ts.map +1 -1
- package/dist/graph/nodes/MetaAdAccountView.d.ts +1 -1
- package/dist/graph/nodes/MetaAdAccountView.d.ts.map +1 -1
- package/dist/graph/nodes/MetaAdImageView.d.ts +1 -1
- package/dist/graph/nodes/MetaAdImageView.d.ts.map +1 -1
- package/dist/graph/nodes/MetaAdSetView.d.ts +1 -1
- package/dist/graph/nodes/MetaAdSetView.d.ts.map +1 -1
- package/dist/graph/nodes/MetaAdView.d.ts +1 -1
- package/dist/graph/nodes/MetaAdView.d.ts.map +1 -1
- package/dist/graph/nodes/MetaCampaignView.d.ts +1 -1
- package/dist/graph/nodes/MetaCampaignView.d.ts.map +1 -1
- package/dist/graph/nodes/MetaInsightView.d.ts +1 -1
- package/dist/graph/nodes/MetaInsightView.d.ts.map +1 -1
- package/dist/graph/nodes/RenderedTemplateView.d.ts +1 -1
- package/dist/graph/nodes/RenderedTemplateView.d.ts.map +1 -1
- package/dist/graph/nodes/SchemaActionView.d.ts +1 -1
- package/dist/graph/nodes/SchemaActionView.d.ts.map +1 -1
- package/dist/graph/nodes/ShopifyShopView.d.ts +1 -1
- package/dist/graph/nodes/ShopifyShopView.d.ts.map +1 -1
- package/dist/graph/nodes/SlackChannelView.d.ts +1 -1
- package/dist/graph/nodes/SlackChannelView.d.ts.map +1 -1
- package/dist/graph/nodes/SlackMessageView.d.ts +1 -1
- package/dist/graph/nodes/SlackMessageView.d.ts.map +1 -1
- package/dist/graph/nodes/SlackUserView.d.ts +1 -1
- package/dist/graph/nodes/SlackUserView.d.ts.map +1 -1
- package/dist/graph/nodes/SlackWorkspaceView.d.ts +1 -1
- package/dist/graph/nodes/SlackWorkspaceView.d.ts.map +1 -1
- package/dist/graph/nodes/attio-shared.d.ts +1 -1
- package/dist/graph/nodes/attio-shared.d.ts.map +1 -1
- package/dist/graph/nodes/attio-shared.js +1 -1
- package/dist/graph/nodes/brand-shared.d.ts.map +1 -1
- package/dist/graph/nodes/card-rows.js +1 -1
- package/dist/graph/nodes/google-campaign-utils.d.ts.map +1 -1
- package/dist/graph/nodes/insight-shared.d.ts +1 -1
- package/dist/graph/nodes/insight-shared.d.ts.map +1 -1
- package/dist/graph/special-nodes/BaseNode.d.ts +2 -2
- package/dist/graph/special-nodes/BaseNode.d.ts.map +1 -1
- package/dist/graph/special-nodes/BaseNode.js +1 -1
- package/dist/graph/special-nodes/DynamicNode.d.ts +1 -1
- package/dist/graph/special-nodes/DynamicNode.d.ts.map +1 -1
- package/dist/graph/special-nodes/EntityValueChip.js +1 -1
- package/dist/graph/special-nodes/GenericNode.d.ts +1 -1
- package/dist/graph/special-nodes/GenericNode.d.ts.map +1 -1
- package/dist/graph/special-nodes/GenericView.d.ts +1 -1
- package/dist/graph/special-nodes/GenericView.d.ts.map +1 -1
- package/dist/graph/special-nodes/NodeFrame.d.ts +1 -1
- package/dist/graph/special-nodes/NodeFrame.d.ts.map +1 -1
- package/dist/graph/special-nodes/NodeFrame.js +1 -1
- package/dist/graph/special-nodes/TypeSummaryNode.d.ts +1 -1
- package/dist/graph/special-nodes/TypeSummaryNode.d.ts.map +1 -1
- package/dist/graph/special-nodes/TypeSummaryNode.js +1 -1
- package/dist/graph/special-nodes/card-facts.js.map +1 -1
- package/dist/hooks/resolved-terms.d.ts +1 -0
- package/dist/hooks/resolved-terms.d.ts.map +1 -1
- package/dist/hooks/resolved-terms.js +2 -1
- package/dist/hooks/resolved-terms.js.map +1 -1
- package/dist/hooks/use-action-plans-list.d.ts.map +1 -1
- package/dist/hooks/use-action-plans-list.js.map +1 -1
- package/dist/hooks/use-activity-feed.js.map +1 -1
- package/dist/hooks/use-connection-problems.d.ts.map +1 -1
- package/dist/hooks/use-conversation-starters.d.ts +2 -2
- package/dist/hooks/use-entity-relations.d.ts.map +1 -1
- package/dist/hooks/use-entity.d.ts.map +1 -1
- package/dist/hooks/use-latest-rendered-template.d.ts.map +1 -1
- package/dist/hooks/use-manual-actions.d.ts.map +1 -1
- package/dist/hooks/use-manual-actions.js.map +1 -1
- package/dist/hooks/useActionGraph.d.ts.map +1 -1
- package/dist/hooks/useActionGraph.js.map +1 -1
- package/dist/hooks/useActionPlanDetail.d.ts +2 -2
- package/dist/hooks/useActionPlanDetail.d.ts.map +1 -1
- package/dist/hooks/useAuth.d.ts +1 -1
- package/dist/hooks/useAuth.d.ts.map +1 -1
- package/dist/hooks/useAuth.js +3 -1
- package/dist/hooks/useAuth.js.map +1 -1
- package/dist/hooks/useConversationGraphContext.js.map +1 -1
- package/dist/hooks/useConversations.js.map +1 -1
- package/dist/hooks/useDatastoreSelection.js.map +1 -1
- package/dist/hooks/useValidateActionPlan.d.ts.map +1 -1
- package/dist/lib/build-config.js.map +1 -1
- package/dist/lib/default-map.d.ts.map +1 -1
- package/dist/lib/default-map.js.map +1 -1
- package/dist/lib/merge-refs.d.ts.map +1 -1
- package/dist/lib/rdf/insights.js.map +1 -1
- package/dist/lib/structured-data/schema-converter.d.ts +2 -2
- package/dist/lib/structured-data/schema-converter.d.ts.map +1 -1
- package/dist/lib/structured-data/schema-converter.js.map +1 -1
- package/dist/lib/tanstack-query.js +1 -1
- package/dist/lib/tanstack-query.js.map +1 -1
- package/dist/lib/term-batcher.d.ts +3 -1
- package/dist/lib/term-batcher.d.ts.map +1 -1
- package/dist/lib/term-batcher.js +2 -2
- package/dist/lib/term-batcher.js.map +1 -1
- package/dist/lib/use-can-scroll.d.ts.map +1 -1
- package/dist/lib/use-color-palette.d.ts.map +1 -1
- package/dist/lib/use-toggle-set.js.map +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/ontology/OntologyTermText.js +1 -1
- package/dist/providers/ActiveChatProvider.d.ts +1 -1
- package/dist/providers/ActiveDatastoreProvider.js.map +1 -1
- package/dist/providers/ChatManagerProvider.js.map +1 -1
- package/dist/providers/commands/CommandContext.js +1 -1
- package/dist/routes/activity/components/ActivityTable.js +1 -1
- package/dist/routes/activity/detail/ActivityDetail.d.ts.map +1 -1
- package/dist/routes/activity/detail/ActivityDetail.js +1 -1
- package/dist/routes/activity/detail/ActivityStepsRail.js +1 -1
- package/dist/routes/activity/detail/ActivityTimeline.js +1 -1
- package/dist/routes/data-explorer/class-properties.js.map +1 -1
- package/dist/routes/data-explorer/class-relations.d.ts +2 -2
- package/dist/routes/data-explorer/components/DetailHeader.js +1 -1
- package/dist/routes/data-explorer/components/DetailHeader.js.map +1 -1
- package/dist/routes/data-explorer/components/SegmentBuilder.js +1 -1
- package/dist/routes/data-explorer/components/class-detail/ClassDetail.js +1 -1
- package/dist/routes/data-explorer/components/class-detail/CreateRecordAction.js +1 -1
- package/dist/routes/data-explorer/components/class-detail/Overview.js +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/CoverageNamespaceRail.js +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/CoverageSkeleton.js +1 -1
- package/dist/routes/data-explorer/components/record-detail/CreateAction.js +1 -1
- package/dist/routes/data-explorer/components/record-detail/RecordActions.d.ts.map +1 -1
- package/dist/routes/data-explorer/components/record-detail/RecordActions.js +12 -9
- package/dist/routes/data-explorer/components/record-detail/RecordActions.js.map +1 -1
- package/dist/routes/data-explorer/components/record-detail/RecordDetail.js +1 -1
- package/dist/routes/data-explorer/components/record-detail/RecordRefresh.d.ts +7 -0
- package/dist/routes/data-explorer/components/record-detail/RecordRefresh.d.ts.map +1 -0
- package/dist/routes/data-explorer/components/record-detail/RecordRefresh.js +104 -0
- package/dist/routes/data-explorer/components/record-detail/RecordRefresh.js.map +1 -0
- package/dist/routes/data-explorer/coverage.d.ts.map +1 -1
- package/dist/routes/data-explorer/sparql-client.js.map +1 -1
- package/dist/routes/datastores/components/DatastoreTableSkeleton.js +1 -1
- package/dist/routes/datastores/components/DatastoresToolbar.js +1 -1
- package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.js +1 -1
- package/dist/routes/datastores/components/UnlinkedDatastoresPanel.js +1 -1
- package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts +2 -2
- package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts.map +1 -1
- package/dist/routes/datastores/hooks/useDatastoreColumns.js +2 -4
- package/dist/routes/datastores/hooks/useDatastoreColumns.js.map +1 -1
- package/dist/routes/datastores/index.js +1 -1
- package/dist/routes/integrations/catalog-shape.js.map +1 -1
- package/dist/routes/integrations/components/ConnectionRow.js +1 -1
- package/dist/routes/integrations/components/ProviderLogo.d.ts.map +1 -1
- package/dist/routes/integrations/components/connect-forms/DashConnectForm.js.map +1 -1
- package/dist/routes/integrations/components/connect-forms/MetaAdsConnectForm.js.map +1 -1
- package/dist/routes/integrations/components/connect-forms/MicrosoftAdsConnectForm.js.map +1 -1
- package/dist/routes/integrations/components/connect-forms/google-ads-account-tree.js.map +1 -1
- package/dist/routes/integrations/components/connect-forms/google-analytics-property-tree.js.map +1 -1
- package/dist/routes/integrations/types.d.ts.map +1 -1
- package/dist/routes/memories/components/ChangeScopeDialog.js +1 -1
- package/dist/routes/memories/components/ConflictMemoryCard.js +1 -1
- package/dist/routes/memories/components/ConsolidationReviewDialog.js +1 -1
- package/dist/routes/memories/components/LoadingSkeleton.js +1 -1
- package/dist/routes/memories/components/MemoriesFilters.js +1 -1
- package/dist/routes/memories/components/MemoriesTabPanel.js +1 -1
- package/dist/routes/memories/components/MemoryActions.js +1 -1
- package/dist/routes/memories/components/MemoryFields.js +1 -1
- package/dist/routes/memories/components/MemoryFormDialog.js +1 -1
- package/dist/routes/memories/expiry-utils.js.map +1 -1
- package/dist/routes/memories/hooks/useDuplicateDetection.js.map +1 -1
- package/dist/routes/memories/hooks/useLiveContext.d.ts.map +1 -1
- package/dist/routes/memories/hooks/useMemoryColumns.d.ts.map +1 -1
- package/dist/routes/memories/hooks/useMemoryColumns.js +1 -1
- package/dist/routes/memories/hooks/useMemoryTable.js.map +1 -1
- package/dist/routes/plans/components/ActionPlanPage.js +1 -1
- package/dist/routes/plans/components/ActionPlansFilters.js +1 -1
- package/dist/routes/plans/components/ActionPlansPage.js +1 -1
- package/dist/routes/plans/components/ActionPlansTableBody.js +1 -1
- package/dist/routes/plans/components/actionPlansTableConfig.d.ts +7 -7
- package/dist/routes/plans/components/actionPlansTableConfig.d.ts.map +1 -1
- package/dist/routes/plans/index.js +1 -1
- package/dist/routes/rules/components/RuleAffectedActionPlansSection.js +1 -1
- package/dist/routes/rules/components/RuleDetailsPage.js +1 -1
- package/dist/routes/rules/components/RuleProducersSection.js +1 -1
- package/dist/routes/rules/components/RuleSetup.js +1 -1
- package/dist/routes/rules/components/RulesOverviewPage.js +1 -1
- package/dist/routes/rules/components/datalog-editor/FactsPreview.js +1 -1
- package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.js +1 -1
- package/dist/routes/rules/components/rule-actionability.js.map +1 -1
- package/dist/rules/RuleNarrativeSegments.js +1 -1
- package/dist/rules/datalog-ast/DatalogAtomComponent.js +1 -1
- package/dist/rules/datalog-ast/DatalogBodyFormulaComponent.js +1 -1
- package/dist/rules/datalog-ast/DatalogExpressionRenderer.js +1 -1
- package/dist/rules/datalog-ast/DatalogTermComponent.js +1 -1
- package/dist/rules/datalog-cache.js.map +1 -1
- package/dist/rules/rule-narrative-format.d.ts.map +1 -1
- package/dist/rules/rule-narrative-renderer.js.map +1 -1
- package/dist/style.js +1 -1
- package/dist/templates/slack-to-markdown.js +1 -1
- package/package.json +13 -12
- package/src/components/badge/index.tsx +1 -1
- package/src/components/calendar/index.tsx +2 -2
- package/src/components/input/input-field.tsx +1 -1
- package/src/components/input/textarea.tsx +1 -1
- package/src/components/table/index.tsx +0 -1
- package/src/hooks/resolved-terms.ts +6 -1
- package/src/hooks/useAuth.ts +3 -1
- package/src/lib/chat-types.ts +1 -1
- package/src/lib/tanstack-query.ts +2 -2
- package/src/lib/term-batcher.ts +3 -3
- package/src/lib/utils.ts +1 -1
- package/src/routes/data-explorer/components/DetailHeader.tsx +4 -4
- package/src/routes/data-explorer/components/record-detail/RecordActions.tsx +22 -16
- package/src/routes/data-explorer/components/record-detail/RecordRefresh.tsx +150 -0
- package/src/rules/datalog-ast/DatalogBodyFormulaComponent.tsx +1 -1
- package/src/rules/datalog-ast/DatalogTermComponent.tsx +1 -1
- package/src/shacl/shacl-form-types.ts +1 -1
- package/src/style.ts +1 -1
- package/src/templates/slack-to-markdown.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manta-eu/react",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "The Manta design system, knowledge-graph UI and agent components",
|
|
5
5
|
"homepage": "https://developers.manta.eu",
|
|
6
6
|
"keywords": [
|
|
@@ -1139,12 +1139,12 @@
|
|
|
1139
1139
|
"usehooks-ts": "^3.1.1",
|
|
1140
1140
|
"zod": "^4.5.0",
|
|
1141
1141
|
"zustand": "^5.0.2",
|
|
1142
|
-
"@manta-eu/auth": "0.8.
|
|
1143
|
-
"@manta-eu/client": "0.8.
|
|
1144
|
-
"@manta-eu/
|
|
1145
|
-
"@manta-eu/
|
|
1146
|
-
"@manta-eu/
|
|
1147
|
-
"@manta-eu/
|
|
1142
|
+
"@manta-eu/auth": "0.8.1",
|
|
1143
|
+
"@manta-eu/client": "0.8.1",
|
|
1144
|
+
"@manta-eu/lib": "0.8.1",
|
|
1145
|
+
"@manta-eu/rdf-lib": "0.8.1",
|
|
1146
|
+
"@manta-eu/datalog-parser": "0.8.1",
|
|
1147
|
+
"@manta-eu/ldo": "0.8.1"
|
|
1148
1148
|
},
|
|
1149
1149
|
"peerDependencies": {
|
|
1150
1150
|
"@ulb-darmstadt/shacl-form": "^2.1.1-rc1",
|
|
@@ -1166,10 +1166,10 @@
|
|
|
1166
1166
|
"@types/react": "^19.2.7",
|
|
1167
1167
|
"@types/react-dom": "^19.2.3",
|
|
1168
1168
|
"ajv": "^8.17.1",
|
|
1169
|
-
"eslint": "^9.39.2",
|
|
1170
1169
|
"happy-dom": "^15.11.7",
|
|
1171
1170
|
"jsdom": "^28.1.0",
|
|
1172
1171
|
"next-themes": "^0.4.6",
|
|
1172
|
+
"oxlint": "1.90.0",
|
|
1173
1173
|
"postcss-cli": "^11.0.0",
|
|
1174
1174
|
"react": "^19.2.3",
|
|
1175
1175
|
"react-dom": "^19.2.3",
|
|
@@ -1177,11 +1177,11 @@
|
|
|
1177
1177
|
"storybook": "^10.6.4",
|
|
1178
1178
|
"tailwindcss": "^4.3.3",
|
|
1179
1179
|
"tsc-alias": "^1.9.5",
|
|
1180
|
-
"typescript": "^
|
|
1180
|
+
"typescript": "^7.0.2",
|
|
1181
1181
|
"uuid": "^13.0.0",
|
|
1182
1182
|
"vite": "^8.3.5",
|
|
1183
1183
|
"vitest": "^4.1.8",
|
|
1184
|
-
"@manta-eu/
|
|
1184
|
+
"@manta-eu/oxlint-config": "0.1.0"
|
|
1185
1185
|
},
|
|
1186
1186
|
"imports": {
|
|
1187
1187
|
"#*": {
|
|
@@ -1202,10 +1202,11 @@
|
|
|
1202
1202
|
"scripts": {
|
|
1203
1203
|
"build": "rimraf dist && postcss src/globals.css -o dist/globals.css && tsc --project tsconfig.build.json && tsc-alias --project tsconfig.build.json --resolve-full-paths",
|
|
1204
1204
|
"build-storybook": "NODE_OPTIONS=\"$NODE_OPTIONS --max-old-space-size=6144\" storybook build",
|
|
1205
|
-
"lint": "
|
|
1205
|
+
"lint": "oxlint --type-aware --report-unused-disable-directives-severity=warn .",
|
|
1206
1206
|
"storybook": "storybook dev -p 6007",
|
|
1207
1207
|
"test": "vitest --run",
|
|
1208
1208
|
"types": "tsc --noEmit",
|
|
1209
|
-
"generate:action-shapes": "tsx scripts/generate-action-shapes.ts"
|
|
1209
|
+
"generate:action-shapes": "tsx scripts/generate-action-shapes.ts",
|
|
1210
|
+
"lint:fix": "oxlint --fix --type-aware --report-unused-disable-directives-severity=warn ."
|
|
1210
1211
|
}
|
|
1211
1212
|
}
|
|
@@ -15,7 +15,7 @@ export const badgeConfig = {
|
|
|
15
15
|
primary: "bg-primary text-primary-foreground",
|
|
16
16
|
secondary: "bg-accent text-default-foreground",
|
|
17
17
|
copy: "bg-accent text-muted-foreground",
|
|
18
|
-
//
|
|
18
|
+
// oxlint-disable-next-line @manta-eu/no-theme-primitive-colors
|
|
19
19
|
promo: "bg-pink-100 text-pink-700",
|
|
20
20
|
success: "bg-success text-success-foreground",
|
|
21
21
|
warning: "bg-warning text-warning-foreground",
|
|
@@ -189,7 +189,7 @@ export function CalendarDayButton(props: ComponentProps<typeof DayButton>) {
|
|
|
189
189
|
"flex-col",
|
|
190
190
|
"gap-1",
|
|
191
191
|
"leading-none",
|
|
192
|
-
//
|
|
192
|
+
// oxlint-disable-next-line @manta-eu/no-raw-typography
|
|
193
193
|
"font-normal",
|
|
194
194
|
"group-data-[focused=true]/day:relative",
|
|
195
195
|
"group-data-[focused=true]/day:z-10",
|
|
@@ -197,7 +197,7 @@ export function CalendarDayButton(props: ComponentProps<typeof DayButton>) {
|
|
|
197
197
|
"data-[range-end=true]:rounded-2xl-v4",
|
|
198
198
|
"data-[range-middle=true]:rounded-none",
|
|
199
199
|
"data-[range-start=true]:rounded-2xl-v4",
|
|
200
|
-
//
|
|
200
|
+
// oxlint-disable-next-line @manta-eu/no-raw-typography
|
|
201
201
|
"[&>span]:text-xs",
|
|
202
202
|
"[&>span]:opacity-70",
|
|
203
203
|
dayButtonClassName,
|
|
@@ -170,7 +170,7 @@ export const Input = React.forwardRef<HTMLInputElement, InputArgs>(function Inpu
|
|
|
170
170
|
inputRef.current.value = next;
|
|
171
171
|
setInternalCount(next.length);
|
|
172
172
|
onChange?.({ target: inputRef.current } as ChangeEvent<HTMLInputElement>);
|
|
173
|
-
//
|
|
173
|
+
// oxlint-disable-next-line no-useless-catch
|
|
174
174
|
} catch (error) {
|
|
175
175
|
throw error;
|
|
176
176
|
} finally {
|
|
@@ -178,7 +178,7 @@ export const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaArgs>(func
|
|
|
178
178
|
textareaRef.current.value = next;
|
|
179
179
|
setInternalCount(next.length);
|
|
180
180
|
onChange?.({ target: textareaRef.current } as ChangeEvent<HTMLTextAreaElement>);
|
|
181
|
-
//
|
|
181
|
+
// oxlint-disable-next-line no-useless-catch
|
|
182
182
|
} catch (error) {
|
|
183
183
|
throw error;
|
|
184
184
|
} finally {
|
|
@@ -120,7 +120,6 @@ export enum SortingHandlerPlacement {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
declare module "@tanstack/react-table" {
|
|
123
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
124
123
|
interface ColumnMeta<TData, TValue> {
|
|
125
124
|
/**
|
|
126
125
|
* Placement of the sorting handler relative to the cell header
|
|
@@ -4,6 +4,7 @@ import { createTermBatcher, type TermBatcher } from "../lib/term-batcher";
|
|
|
4
4
|
export type ResolvedTerms<T> = {
|
|
5
5
|
values: Map<string, T>;
|
|
6
6
|
request: (iris: string[]) => void;
|
|
7
|
+
refresh?: (iris: string[]) => void;
|
|
7
8
|
// IRIs whose lookup has completed, found or not. Absent in static contexts
|
|
8
9
|
// (tests), which are treated as already settled.
|
|
9
10
|
settledIris?: ReadonlySet<string>;
|
|
@@ -137,6 +138,10 @@ export function useResolvedTermsState<T>(
|
|
|
137
138
|
}, [batcher]);
|
|
138
139
|
|
|
139
140
|
const request = useCallback((iris: string[]) => batcher.request(iris), [batcher]);
|
|
141
|
+
const refresh = useCallback((iris: string[]) => batcher.request(iris, { force: true }), [batcher]);
|
|
140
142
|
|
|
141
|
-
return useMemo(
|
|
143
|
+
return useMemo(
|
|
144
|
+
() => ({ values, request, refresh, settledIris, failedIris }),
|
|
145
|
+
[values, request, refresh, settledIris, failedIris],
|
|
146
|
+
);
|
|
142
147
|
}
|
package/src/hooks/useAuth.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SessionContextDocument } from "@manta-eu/client";
|
|
2
|
+
import { loginStatusPollMs } from "@manta-eu/client/shared/constants";
|
|
2
3
|
import { datastoreHeader } from "@manta-eu/client/shared/datastore-path";
|
|
3
4
|
import { createHttpError, isHttpError } from "@manta-eu/client/shared/error-utils";
|
|
4
5
|
import { isValidModelId, type MantaModelId } from "@manta-eu/client/shared/model";
|
|
@@ -189,7 +190,8 @@ export function useAuth(): UseAuthResult {
|
|
|
189
190
|
// Keycloak's SSO session idle timeout (default 30 min) only resets when a request
|
|
190
191
|
// actually reaches processMiddleware. A long WS-only chat session with no other HTTP
|
|
191
192
|
// traffic would otherwise let the underlying session go idle and die silently.
|
|
192
|
-
|
|
193
|
+
// The poll also renews the access token before it expires, so it must run more often than the token lives.
|
|
194
|
+
refetchInterval: loginStatusPollMs,
|
|
193
195
|
refetchIntervalInBackground: true,
|
|
194
196
|
});
|
|
195
197
|
|
package/src/lib/chat-types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* oxlint-disable import-js/order -- each type is imported beside the re-export it exists for, which is
|
|
2
2
|
how this file is organized; they are type-only, so the positions have no runtime meaning. */
|
|
3
3
|
import type { ConversationMode } from "@manta-eu/client/shared/chat-manager";
|
|
4
4
|
import type { MantaModelId } from "@manta-eu/client/shared/model";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { QueryClient, QueryKey } from "@tanstack/react-query";
|
|
2
2
|
|
|
3
3
|
export type QueryWithGetKey = {
|
|
4
|
-
//
|
|
4
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
5
5
|
getKey: (variables?: any) => QueryKey;
|
|
6
6
|
};
|
|
7
7
|
|
|
@@ -12,7 +12,7 @@ function isQueryWithGetKey(keyLike: KeyLike): keyLike is QueryWithGetKey {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
function getTopQueryKey(query: QueryWithGetKey): QueryKey {
|
|
15
|
-
//
|
|
15
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
16
16
|
const keys = query.getKey({} as any);
|
|
17
17
|
return keys.slice(0, 1);
|
|
18
18
|
}
|
package/src/lib/term-batcher.ts
CHANGED
|
@@ -14,7 +14,7 @@ export type TermBatcherConfig<T> = {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
export type TermBatcher = {
|
|
17
|
-
request: (iris: IRI[]) => void;
|
|
17
|
+
request: (iris: IRI[], options?: { force: boolean }) => void;
|
|
18
18
|
cancel: () => void;
|
|
19
19
|
};
|
|
20
20
|
|
|
@@ -98,13 +98,13 @@ export function createTermBatcher<T>(config: TermBatcherConfig<T>): TermBatcher
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
return {
|
|
101
|
-
request(iris) {
|
|
101
|
+
request(iris, options) {
|
|
102
102
|
cancelled = false;
|
|
103
103
|
|
|
104
104
|
const unresolvable: IRI[] = [];
|
|
105
105
|
|
|
106
106
|
for (const iri of iris) {
|
|
107
|
-
if (requested.has(iri)) continue;
|
|
107
|
+
if (requested.has(iri) && !options?.force) continue;
|
|
108
108
|
|
|
109
109
|
requested.add(iri);
|
|
110
110
|
|
package/src/lib/utils.ts
CHANGED
|
@@ -42,14 +42,14 @@ export function DetailHeader(props: DetailHeaderProps) {
|
|
|
42
42
|
<div>
|
|
43
43
|
{badges && <div className="mb-3 flex items-center gap-2">{badges}</div>}
|
|
44
44
|
|
|
45
|
-
<div className="flex items-start justify-between gap-4">
|
|
46
|
-
<div className="flex items-center gap-3">
|
|
47
|
-
<h2 className="typography-header wrap-
|
|
45
|
+
<div className="flex flex-col items-start justify-between gap-4 sm:flex-row">
|
|
46
|
+
<div className="flex min-w-0 items-center gap-3">
|
|
47
|
+
<h2 className="typography-header wrap-anywhere text-default-foreground">{title}</h2>
|
|
48
48
|
|
|
49
49
|
{titleBadges}
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
|
-
{actions && <div className="flex
|
|
52
|
+
{actions && <div className="flex flex-wrap items-center gap-2 sm:shrink-0">{actions}</div>}
|
|
53
53
|
</div>
|
|
54
54
|
|
|
55
55
|
{iri &&
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { Button } from "#components/button/index";
|
|
2
|
+
import { DeleteConfirmationDialog } from "#components/layouts/DeleteConfirmationDialog";
|
|
3
|
+
import { useExecuteAction, type ExecuteActionResult } from "#hooks/useExecuteAction";
|
|
4
|
+
import { useTriples, type TripleRow } from "#routes/data-explorer/triples";
|
|
1
5
|
import { GQLExecuteActionErrorCode } from "@manta-eu/client";
|
|
2
|
-
import { compactUri } from "@manta-eu/client/shared/rdf-namespaces";
|
|
6
|
+
import { compactUri, wellKnownPredicates } from "@manta-eu/client/shared/rdf-namespaces";
|
|
3
7
|
import { useState } from "react";
|
|
4
8
|
import { toast } from "sonner";
|
|
5
9
|
import type { PropertyMap } from "./action-properties";
|
|
@@ -7,10 +11,7 @@ import { useRecordActionShapes, type RecordActionShape } from "./action-shapes";
|
|
|
7
11
|
import { ActionFormDialog } from "./ActionFormDialog";
|
|
8
12
|
import { CreateAction } from "./CreateAction";
|
|
9
13
|
import { RecordActionFeedback } from "./RecordActionFeedback";
|
|
10
|
-
import {
|
|
11
|
-
import { DeleteConfirmationDialog } from "#components/layouts/DeleteConfirmationDialog";
|
|
12
|
-
import { useExecuteAction, type ExecuteActionResult } from "#hooks/useExecuteAction";
|
|
13
|
-
import { useTriples, type TripleRow } from "#routes/data-explorer/triples";
|
|
14
|
+
import { RecordRefresh } from "./RecordRefresh";
|
|
14
15
|
|
|
15
16
|
type RecordActionsProps = { iri: string; typeIris: string[] };
|
|
16
17
|
|
|
@@ -20,20 +21,25 @@ export function RecordActions(props: RecordActionsProps) {
|
|
|
20
21
|
const { shapes, error } = useRecordActionShapes(typeIris);
|
|
21
22
|
const { triples, isLoading: triplesLoading } = useTriples(iri);
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
const recordTypes = triples
|
|
25
|
+
.filter((row) => row.predicate === wellKnownPredicates.type && row.objectIsIri)
|
|
26
|
+
.map((row) => row.object);
|
|
24
27
|
|
|
25
28
|
return (
|
|
26
29
|
<>
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
<RecordRefresh iri={iri} typeIris={recordTypes} />
|
|
31
|
+
{error && <span className="typography-tiny text-muted-foreground">Actions unavailable</span>}
|
|
32
|
+
{!error &&
|
|
33
|
+
shapes.map((shape) => (
|
|
34
|
+
<ShapeActions
|
|
35
|
+
key={`${iri}|${shape.actionShape}`}
|
|
36
|
+
subjectIri={iri}
|
|
37
|
+
shape={shape}
|
|
38
|
+
triples={triples}
|
|
39
|
+
triplesLoading={triplesLoading}
|
|
40
|
+
qualifyLabels={shapes.length > 1}
|
|
41
|
+
/>
|
|
42
|
+
))}
|
|
37
43
|
</>
|
|
38
44
|
);
|
|
39
45
|
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Button } from "#components/button/index";
|
|
2
|
+
import { InstanceLabelsContext } from "#hooks/use-instance-labels";
|
|
3
|
+
import { useMantaClient } from "#providers/MantaClientProvider";
|
|
4
|
+
import {
|
|
5
|
+
GQLRefreshResourceStatus,
|
|
6
|
+
GQLRefreshWorkflowStatus,
|
|
7
|
+
RefreshResourcesDocument,
|
|
8
|
+
RefreshResourcesStatusDocument,
|
|
9
|
+
type GQLRefreshResourceInput,
|
|
10
|
+
type GQLRefreshResourcesMutation,
|
|
11
|
+
type GQLRefreshResourcesMutationVariables,
|
|
12
|
+
type GQLRefreshResourcesStatusQuery,
|
|
13
|
+
type GQLRefreshResourcesStatusQueryVariables,
|
|
14
|
+
useRefreshResourceCapabilitiesQuery,
|
|
15
|
+
} from "@manta-eu/client";
|
|
16
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
17
|
+
import { sleep } from "@manta-eu/lib/sleep";
|
|
18
|
+
import { useIsMutating, useMutation, useQueryClient } from "@tanstack/react-query";
|
|
19
|
+
import type { GraphQLClient } from "graphql-request";
|
|
20
|
+
import { useContext } from "react";
|
|
21
|
+
import { toast } from "sonner";
|
|
22
|
+
import { match } from "ts-pattern";
|
|
23
|
+
|
|
24
|
+
type RecordRefreshProps = { iri: string; typeIris: string[] };
|
|
25
|
+
|
|
26
|
+
export function RecordRefresh(props: RecordRefreshProps) {
|
|
27
|
+
const { iri, typeIris } = props;
|
|
28
|
+
const { mantaClient } = useMantaClient();
|
|
29
|
+
const { data } = useRefreshResourceCapabilitiesQuery(
|
|
30
|
+
mantaClient,
|
|
31
|
+
{ rdfTypes: typeIris },
|
|
32
|
+
{ enabled: isPresent(typeIris) },
|
|
33
|
+
);
|
|
34
|
+
const rdfType = data?.refreshResourceCapabilities.capabilities.find((type) => type.supportsRefresh)?.rdfType;
|
|
35
|
+
|
|
36
|
+
return rdfType ? <RefreshButton key={`${iri}|${rdfType}`} iri={iri} rdfType={rdfType} /> : null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
type RefreshButtonProps = { iri: string; rdfType: string };
|
|
40
|
+
|
|
41
|
+
type RefreshResult = GQLRefreshResourcesStatusQuery["refreshResourcesStatus"];
|
|
42
|
+
|
|
43
|
+
class RefreshError extends Error {
|
|
44
|
+
constructor(
|
|
45
|
+
readonly phase: "start" | "status" | "timeout",
|
|
46
|
+
cause: unknown,
|
|
47
|
+
) {
|
|
48
|
+
super("Unable to complete source refresh", { cause });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async function refreshResource(client: GraphQLClient, resource: GQLRefreshResourceInput): Promise<RefreshResult> {
|
|
53
|
+
const controller = new AbortController();
|
|
54
|
+
const timeoutMs = 5 * 60 * 1000;
|
|
55
|
+
const deadline = Date.now() + timeoutMs;
|
|
56
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
57
|
+
let phase: "start" | "status" = "start";
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
const { refreshResources } = await client.request<
|
|
61
|
+
GQLRefreshResourcesMutation,
|
|
62
|
+
GQLRefreshResourcesMutationVariables
|
|
63
|
+
>({
|
|
64
|
+
document: RefreshResourcesDocument,
|
|
65
|
+
variables: { resources: [resource] },
|
|
66
|
+
signal: controller.signal,
|
|
67
|
+
});
|
|
68
|
+
phase = "status";
|
|
69
|
+
|
|
70
|
+
while (true) {
|
|
71
|
+
controller.signal.throwIfAborted();
|
|
72
|
+
const { refreshResourcesStatus } = await client.request<
|
|
73
|
+
GQLRefreshResourcesStatusQuery,
|
|
74
|
+
GQLRefreshResourcesStatusQueryVariables
|
|
75
|
+
>({
|
|
76
|
+
document: RefreshResourcesStatusDocument,
|
|
77
|
+
variables: { workflowId: refreshResources.workflowId },
|
|
78
|
+
signal: controller.signal,
|
|
79
|
+
});
|
|
80
|
+
controller.signal.throwIfAborted();
|
|
81
|
+
if (refreshResourcesStatus.status !== GQLRefreshWorkflowStatus.Running) return refreshResourcesStatus;
|
|
82
|
+
|
|
83
|
+
await sleep(Math.min(2000, Math.max(0, deadline - Date.now())));
|
|
84
|
+
}
|
|
85
|
+
} catch (error) {
|
|
86
|
+
throw new RefreshError(controller.signal.aborted ? "timeout" : phase, error);
|
|
87
|
+
} finally {
|
|
88
|
+
clearTimeout(timer);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function RefreshButton(props: RefreshButtonProps) {
|
|
93
|
+
const { iri, rdfType } = props;
|
|
94
|
+
const { mantaClient, datastoreId } = useMantaClient();
|
|
95
|
+
const queryClient = useQueryClient();
|
|
96
|
+
const labels = useContext(InstanceLabelsContext);
|
|
97
|
+
const refreshLabels = labels?.refresh;
|
|
98
|
+
const pendingFilter = { mutationKey: ["RefreshResource", datastoreId, iri], exact: true };
|
|
99
|
+
const refreshing = useIsMutating(pendingFilter) > 0;
|
|
100
|
+
const { mutate } = useMutation<RefreshResult, RefreshError>({
|
|
101
|
+
mutationKey: pendingFilter.mutationKey,
|
|
102
|
+
mutationFn: () => refreshResource(mantaClient, { iri, type: rdfType }),
|
|
103
|
+
retry: false,
|
|
104
|
+
onSuccess: (result) => {
|
|
105
|
+
if (result.status === GQLRefreshWorkflowStatus.Failed) {
|
|
106
|
+
toast.error("Refresh failed", { description: result.error ?? undefined });
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const status = result.results?.find(
|
|
111
|
+
(resource) => resource.iri === iri && resource.type === rdfType,
|
|
112
|
+
)?.refreshStatus;
|
|
113
|
+
match(status)
|
|
114
|
+
.with(GQLRefreshResourceStatus.Synced, () => {
|
|
115
|
+
void queryClient.invalidateQueries({ queryKey: ["data-explorer"] });
|
|
116
|
+
refreshLabels?.([iri]);
|
|
117
|
+
toast.success("Refreshed from source");
|
|
118
|
+
})
|
|
119
|
+
.with(GQLRefreshResourceStatus.NotReadable, () => toast.error("This entity does not support refresh"))
|
|
120
|
+
.with(GQLRefreshResourceStatus.NotSynced, () =>
|
|
121
|
+
toast.error("The entity could not be refreshed from its source"),
|
|
122
|
+
)
|
|
123
|
+
.with(undefined, () => toast.error("Refresh returned no result for this entity"))
|
|
124
|
+
.exhaustive();
|
|
125
|
+
},
|
|
126
|
+
onError: (error) => {
|
|
127
|
+
match(error.phase)
|
|
128
|
+
.with("start", () => toast.error("Could not start refresh"))
|
|
129
|
+
.with("status", () =>
|
|
130
|
+
toast.error("Could not check refresh status", { description: "The refresh may still be running." }),
|
|
131
|
+
)
|
|
132
|
+
.with("timeout", () =>
|
|
133
|
+
toast.warning("Refresh is taking longer than expected", {
|
|
134
|
+
description: "It may still finish in the background.",
|
|
135
|
+
}),
|
|
136
|
+
)
|
|
137
|
+
.exhaustive();
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
function startRefresh() {
|
|
142
|
+
if (queryClient.isMutating(pendingFilter) === 0) mutate();
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return (
|
|
146
|
+
<Button variant="secondary" size="sm" disabled={refreshing} aria-busy={refreshing} onClick={startRefresh}>
|
|
147
|
+
{refreshing ? "Refreshing…" : "Refresh from source"}
|
|
148
|
+
</Button>
|
|
149
|
+
);
|
|
150
|
+
}
|
|
@@ -41,7 +41,7 @@ declare module "@ulb-darmstadt/shacl-form" {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
declare module "react" {
|
|
44
|
-
//
|
|
44
|
+
// oxlint-disable-next-line typescript/no-namespace -- augmenting JSX needs a namespace.
|
|
45
45
|
namespace JSX {
|
|
46
46
|
interface IntrinsicElements {
|
|
47
47
|
"shacl-form": import("react").DetailedHTMLProps<
|
package/src/style.ts
CHANGED
|
@@ -19,7 +19,7 @@ export function slackToMarkdown(input: string): string {
|
|
|
19
19
|
|
|
20
20
|
output = output.replace(/([^\n])\n(?!\n)/g, "$1 \n");
|
|
21
21
|
|
|
22
|
-
//
|
|
22
|
+
// oxlint-disable-next-line no-control-regex -- NUL delimits the code placeholders this file writes.
|
|
23
23
|
output = output.replace(/\x00CODE(\d+)\x00/g, (_, i) => placeholders[Number(i)]!);
|
|
24
24
|
|
|
25
25
|
return output;
|