@massdriver/backstage-plugin 1.0.0
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/LICENSE +202 -0
- package/README.md +196 -0
- package/dist/MassdriverRouter.esm.js +78 -0
- package/dist/MassdriverRouter.esm.js.map +1 -0
- package/dist/api.esm.js +119 -0
- package/dist/api.esm.js.map +1 -0
- package/dist/assets/massdriver-logo-dark.svg +55 -0
- package/dist/assets/massdriver-logo-light.svg +50 -0
- package/dist/components/AttributesColumn.esm.js +95 -0
- package/dist/components/AttributesColumn.esm.js.map +1 -0
- package/dist/components/AttributesSummaryCell.esm.js +103 -0
- package/dist/components/AttributesSummaryCell.esm.js.map +1 -0
- package/dist/components/AuthedIcon.esm.js +26 -0
- package/dist/components/AuthedIcon.esm.js.map +1 -0
- package/dist/components/ConditionsCell.esm.js +48 -0
- package/dist/components/ConditionsCell.esm.js.map +1 -0
- package/dist/components/DisabledAction.esm.js +30 -0
- package/dist/components/DisabledAction.esm.js.map +1 -0
- package/dist/components/EntityMassdriverContent/EntityMassdriverContent.esm.js +80 -0
- package/dist/components/EntityMassdriverContent/EntityMassdriverContent.esm.js.map +1 -0
- package/dist/components/EntityMassdriverContent/index.esm.js +6 -0
- package/dist/components/EntityMassdriverContent/index.esm.js.map +1 -0
- package/dist/components/EntityMassdriverOverviewCard/EntityMassdriverOverviewCard.esm.js +75 -0
- package/dist/components/EntityMassdriverOverviewCard/EntityMassdriverOverviewCard.esm.js.map +1 -0
- package/dist/components/EntityMassdriverOverviewCard/index.esm.js +6 -0
- package/dist/components/EntityMassdriverOverviewCard/index.esm.js.map +1 -0
- package/dist/components/ForkPill.esm.js +84 -0
- package/dist/components/ForkPill.esm.js.map +1 -0
- package/dist/components/InstanceStatusIndicator.esm.js +21 -0
- package/dist/components/InstanceStatusIndicator.esm.js.map +1 -0
- package/dist/components/InstanceStatusPill.esm.js +67 -0
- package/dist/components/InstanceStatusPill.esm.js.map +1 -0
- package/dist/components/MassdriverIcon.esm.js +13 -0
- package/dist/components/MassdriverIcon.esm.js.map +1 -0
- package/dist/components/MassdriverSidebarItem.esm.js +45 -0
- package/dist/components/MassdriverSidebarItem.esm.js.map +1 -0
- package/dist/components/NotFound.esm.js +44 -0
- package/dist/components/NotFound.esm.js.map +1 -0
- package/dist/components/OpenInMassdriverButton.esm.js +24 -0
- package/dist/components/OpenInMassdriverButton.esm.js.map +1 -0
- package/dist/components/PageLayout.esm.js +88 -0
- package/dist/components/PageLayout.esm.js.map +1 -0
- package/dist/components/RouterLinkAdapter.esm.js +12 -0
- package/dist/components/RouterLinkAdapter.esm.js.map +1 -0
- package/dist/components/VersionBadge.esm.js +57 -0
- package/dist/components/VersionBadge.esm.js.map +1 -0
- package/dist/components/grantColumns.esm.js +56 -0
- package/dist/components/grantColumns.esm.js.map +1 -0
- package/dist/components/icons/BundleIcon.esm.js +7 -0
- package/dist/components/icons/BundleIcon.esm.js.map +1 -0
- package/dist/components/icons/FolderOutlinedIcon.esm.js +7 -0
- package/dist/components/icons/FolderOutlinedIcon.esm.js.map +1 -0
- package/dist/components/icons/TokenIcon.esm.js +7 -0
- package/dist/components/icons/TokenIcon.esm.js.map +1 -0
- package/dist/entity.esm.js +23 -0
- package/dist/entity.esm.js.map +1 -0
- package/dist/features/environment/CompareDeploymentsDialog/CompareDeploymentsDialog.esm.js +115 -0
- package/dist/features/environment/CompareDeploymentsDialog/CompareDeploymentsDialog.esm.js.map +1 -0
- package/dist/features/environment/CompareDeploymentsDialog/ResultsStep.esm.js +165 -0
- package/dist/features/environment/CompareDeploymentsDialog/ResultsStep.esm.js.map +1 -0
- package/dist/features/environment/CompareDeploymentsDialog/SelectStep.esm.js +216 -0
- package/dist/features/environment/CompareDeploymentsDialog/SelectStep.esm.js.map +1 -0
- package/dist/features/environment/CompareDeploymentsDialog/compareColumns.esm.js +86 -0
- package/dist/features/environment/CompareDeploymentsDialog/compareColumns.esm.js.map +1 -0
- package/dist/features/environment/CompareDeploymentsDialog/flattenDeploymentComparison.esm.js +57 -0
- package/dist/features/environment/CompareDeploymentsDialog/flattenDeploymentComparison.esm.js.map +1 -0
- package/dist/features/environment/CompareDeploymentsDialog/queries.esm.js +53 -0
- package/dist/features/environment/CompareDeploymentsDialog/queries.esm.js.map +1 -0
- package/dist/features/environment/CompareEnvironmentsDialog/CompareEnvironmentsDialog.esm.js +94 -0
- package/dist/features/environment/CompareEnvironmentsDialog/CompareEnvironmentsDialog.esm.js.map +1 -0
- package/dist/features/environment/CompareEnvironmentsDialog/ComparisonValueCell.esm.js +67 -0
- package/dist/features/environment/CompareEnvironmentsDialog/ComparisonValueCell.esm.js.map +1 -0
- package/dist/features/environment/CompareEnvironmentsDialog/ResultsStep.esm.js +202 -0
- package/dist/features/environment/CompareEnvironmentsDialog/ResultsStep.esm.js.map +1 -0
- package/dist/features/environment/CompareEnvironmentsDialog/SelectStep.esm.js +183 -0
- package/dist/features/environment/CompareEnvironmentsDialog/SelectStep.esm.js.map +1 -0
- package/dist/features/environment/CompareEnvironmentsDialog/compareColumns.esm.js +73 -0
- package/dist/features/environment/CompareEnvironmentsDialog/compareColumns.esm.js.map +1 -0
- package/dist/features/environment/CompareEnvironmentsDialog/flattenComparison.esm.js +70 -0
- package/dist/features/environment/CompareEnvironmentsDialog/flattenComparison.esm.js.map +1 -0
- package/dist/features/environment/CompareEnvironmentsDialog/queries.esm.js +32 -0
- package/dist/features/environment/CompareEnvironmentsDialog/queries.esm.js.map +1 -0
- package/dist/features/environment/EnvironmentGraphPage.esm.js +131 -0
- package/dist/features/environment/EnvironmentGraphPage.esm.js.map +1 -0
- package/dist/features/environment/GraphHeader/EnvironmentDefaults.esm.js +252 -0
- package/dist/features/environment/GraphHeader/EnvironmentDefaults.esm.js.map +1 -0
- package/dist/features/environment/GraphHeader/GraphHeader.esm.js +247 -0
- package/dist/features/environment/GraphHeader/GraphHeader.esm.js.map +1 -0
- package/dist/features/environment/GraphHeader/HeaderActions.esm.js +127 -0
- package/dist/features/environment/GraphHeader/HeaderActions.esm.js.map +1 -0
- package/dist/features/environment/GraphHeader/Switcher.esm.js +75 -0
- package/dist/features/environment/GraphHeader/Switcher.esm.js.map +1 -0
- package/dist/features/environment/GraphHeader/queries.esm.js +60 -0
- package/dist/features/environment/GraphHeader/queries.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/AlarmCard.esm.js +151 -0
- package/dist/features/environment/InstanceDrawer/AlarmCard.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/InstanceDrawer.esm.js +165 -0
- package/dist/features/environment/InstanceDrawer/InstanceDrawer.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/InstanceDrawerHeader.esm.js +241 -0
- package/dist/features/environment/InstanceDrawer/InstanceDrawerHeader.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/InstanceTabs.esm.js +119 -0
- package/dist/features/environment/InstanceDrawer/InstanceTabs.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/TabState.esm.js +30 -0
- package/dist/features/environment/InstanceDrawer/TabState.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/formsDataSource.esm.js +25 -0
- package/dist/features/environment/InstanceDrawer/formsDataSource.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/helpers.esm.js +282 -0
- package/dist/features/environment/InstanceDrawer/helpers.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/queries.esm.js +281 -0
- package/dist/features/environment/InstanceDrawer/queries.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/ConfigTab.esm.js +170 -0
- package/dist/features/environment/InstanceDrawer/tabs/ConfigTab.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/DependenciesTab.esm.js +413 -0
- package/dist/features/environment/InstanceDrawer/tabs/DependenciesTab.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/DeploymentLogsPanel.esm.js +191 -0
- package/dist/features/environment/InstanceDrawer/tabs/DeploymentLogsPanel.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/DeploymentReadOnlyActions.esm.js +63 -0
- package/dist/features/environment/InstanceDrawer/tabs/DeploymentReadOnlyActions.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/GuideTab.esm.js +48 -0
- package/dist/features/environment/InstanceDrawer/tabs/GuideTab.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/HistoryTab.esm.js +446 -0
- package/dist/features/environment/InstanceDrawer/tabs/HistoryTab.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/MonitorTab.esm.js +146 -0
- package/dist/features/environment/InstanceDrawer/tabs/MonitorTab.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/OverviewTab.esm.js +572 -0
- package/dist/features/environment/InstanceDrawer/tabs/OverviewTab.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/ResourcesTab.esm.js +471 -0
- package/dist/features/environment/InstanceDrawer/tabs/ResourcesTab.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/SecretsTab.esm.js +109 -0
- package/dist/features/environment/InstanceDrawer/tabs/SecretsTab.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/ViewDeploymentDetails.esm.js +384 -0
- package/dist/features/environment/InstanceDrawer/tabs/ViewDeploymentDetails.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/tabs/flattenParams.esm.js +23 -0
- package/dist/features/environment/InstanceDrawer/tabs/flattenParams.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/useInstanceApiQuery.esm.js +6 -0
- package/dist/features/environment/InstanceDrawer/useInstanceApiQuery.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/useOverflowMeasure.esm.js +55 -0
- package/dist/features/environment/InstanceDrawer/useOverflowMeasure.esm.js.map +1 -0
- package/dist/features/environment/InstanceDrawer/useResizableWidth.esm.js +44 -0
- package/dist/features/environment/InstanceDrawer/useResizableWidth.esm.js.map +1 -0
- package/dist/features/environment/components/InstanceStatusPill.esm.js +54 -0
- package/dist/features/environment/components/InstanceStatusPill.esm.js.map +1 -0
- package/dist/features/environment/graph/Diagram.esm.js +143 -0
- package/dist/features/environment/graph/Diagram.esm.js.map +1 -0
- package/dist/features/environment/graph/DiagramNode.constants.esm.js +5 -0
- package/dist/features/environment/graph/DiagramNode.constants.esm.js.map +1 -0
- package/dist/features/environment/graph/DiagramNode.esm.js +221 -0
- package/dist/features/environment/graph/DiagramNode.esm.js.map +1 -0
- package/dist/features/environment/graph/NodeMeta.esm.js +182 -0
- package/dist/features/environment/graph/NodeMeta.esm.js.map +1 -0
- package/dist/features/environment/graph/NodeVersionBadges.esm.js +150 -0
- package/dist/features/environment/graph/NodeVersionBadges.esm.js.map +1 -0
- package/dist/features/environment/graph/diagramFactory.esm.js +151 -0
- package/dist/features/environment/graph/diagramFactory.esm.js.map +1 -0
- package/dist/features/environment/graph/handles/ExpandableHandleWrapper.esm.js +174 -0
- package/dist/features/environment/graph/handles/ExpandableHandleWrapper.esm.js.map +1 -0
- package/dist/features/environment/graph/handles/NodeHandle.esm.js +45 -0
- package/dist/features/environment/graph/handles/NodeHandle.esm.js.map +1 -0
- package/dist/features/environment/graph/handles/NodeHandleTooltip.esm.js +134 -0
- package/dist/features/environment/graph/handles/NodeHandleTooltip.esm.js.map +1 -0
- package/dist/features/environment/graph/handles/handleTypes.esm.js +170 -0
- package/dist/features/environment/graph/handles/handleTypes.esm.js.map +1 -0
- package/dist/features/environment/graph/handles/useAnimationFrameSync.esm.js +19 -0
- package/dist/features/environment/graph/handles/useAnimationFrameSync.esm.js.map +1 -0
- package/dist/features/environment/graph/handles/useRadialPositions.esm.js +37 -0
- package/dist/features/environment/graph/handles/useRadialPositions.esm.js.map +1 -0
- package/dist/features/environment/graph/handles/useTransitionLifecycle.esm.js +19 -0
- package/dist/features/environment/graph/handles/useTransitionLifecycle.esm.js.map +1 -0
- package/dist/features/environment/graph/hasUndeployedPlan.esm.js +43 -0
- package/dist/features/environment/graph/hasUndeployedPlan.esm.js.map +1 -0
- package/dist/features/environment/graph/queries.esm.js +103 -0
- package/dist/features/environment/graph/queries.esm.js.map +1 -0
- package/dist/features/environment/graph/useDiagramSnapshot.esm.js +43 -0
- package/dist/features/environment/graph/useDiagramSnapshot.esm.js.map +1 -0
- package/dist/features/environment/realtime/RealtimeProvider.esm.js +43 -0
- package/dist/features/environment/realtime/RealtimeProvider.esm.js.map +1 -0
- package/dist/features/environment/realtime/queries.esm.js +76 -0
- package/dist/features/environment/realtime/queries.esm.js.map +1 -0
- package/dist/features/environment/realtime/useLiveRelayQuery.esm.js +36 -0
- package/dist/features/environment/realtime/useLiveRelayQuery.esm.js.map +1 -0
- package/dist/features/project/ProjectDetailsPage.esm.js +101 -0
- package/dist/features/project/ProjectDetailsPage.esm.js.map +1 -0
- package/dist/features/project/tabs/ComponentsTab.esm.js +149 -0
- package/dist/features/project/tabs/ComponentsTab.esm.js.map +1 -0
- package/dist/features/project/tabs/EnvStatus.esm.js +149 -0
- package/dist/features/project/tabs/EnvStatus.esm.js.map +1 -0
- package/dist/features/project/tabs/EnvironmentsTab.esm.js +199 -0
- package/dist/features/project/tabs/EnvironmentsTab.esm.js.map +1 -0
- package/dist/features/project/tabs/OverviewTab.esm.js +420 -0
- package/dist/features/project/tabs/OverviewTab.esm.js.map +1 -0
- package/dist/features/projects/ProjectsListPage.esm.js +50 -0
- package/dist/features/projects/ProjectsListPage.esm.js.map +1 -0
- package/dist/features/projects/ProjectsListPageLazy.esm.js +12 -0
- package/dist/features/projects/ProjectsListPageLazy.esm.js.map +1 -0
- package/dist/features/projects/projectColumns.esm.js +38 -0
- package/dist/features/projects/projectColumns.esm.js.map +1 -0
- package/dist/features/projects/useProjects.esm.js +48 -0
- package/dist/features/projects/useProjects.esm.js.map +1 -0
- package/dist/features/repo/DeploymentLogsDrawer.esm.js +213 -0
- package/dist/features/repo/DeploymentLogsDrawer.esm.js.map +1 -0
- package/dist/features/repo/DeploymentLogsDrawer.loading.esm.js +43 -0
- package/dist/features/repo/DeploymentLogsDrawer.loading.esm.js.map +1 -0
- package/dist/features/repo/FileTree.esm.js +179 -0
- package/dist/features/repo/FileTree.esm.js.map +1 -0
- package/dist/features/repo/FileViewer.esm.js +115 -0
- package/dist/features/repo/FileViewer.esm.js.map +1 -0
- package/dist/features/repo/FileViewer.helpers.esm.js +54 -0
- package/dist/features/repo/FileViewer.helpers.esm.js.map +1 -0
- package/dist/features/repo/RepoDetailsPage.esm.js +127 -0
- package/dist/features/repo/RepoDetailsPage.esm.js.map +1 -0
- package/dist/features/repo/RepoEmptyState.esm.js +58 -0
- package/dist/features/repo/RepoEmptyState.esm.js.map +1 -0
- package/dist/features/repo/RepoNoVersionsState.esm.js +29 -0
- package/dist/features/repo/RepoNoVersionsState.esm.js.map +1 -0
- package/dist/features/repo/RepoTabHeader.esm.js +30 -0
- package/dist/features/repo/RepoTabHeader.esm.js.map +1 -0
- package/dist/features/repo/RepoTabLayout.esm.js +18 -0
- package/dist/features/repo/RepoTabLayout.esm.js.map +1 -0
- package/dist/features/repo/RepoVersionSelect.esm.js +176 -0
- package/dist/features/repo/RepoVersionSelect.esm.js.map +1 -0
- package/dist/features/repo/ViewDeploymentDetailsDialog.esm.js +427 -0
- package/dist/features/repo/ViewDeploymentDetailsDialog.esm.js.map +1 -0
- package/dist/features/repo/deploymentHelpers.esm.js +74 -0
- package/dist/features/repo/deploymentHelpers.esm.js.map +1 -0
- package/dist/features/repo/fileTreeHelpers.esm.js +45 -0
- package/dist/features/repo/fileTreeHelpers.esm.js.map +1 -0
- package/dist/features/repo/flattenParams.esm.js +23 -0
- package/dist/features/repo/flattenParams.esm.js.map +1 -0
- package/dist/features/repo/queries.esm.js +239 -0
- package/dist/features/repo/queries.esm.js.map +1 -0
- package/dist/features/repo/repoFilter.esm.js +9 -0
- package/dist/features/repo/repoFilter.esm.js.map +1 -0
- package/dist/features/repo/repoTabs.esm.js +22 -0
- package/dist/features/repo/repoTabs.esm.js.map +1 -0
- package/dist/features/repo/resolveVersion.esm.js +22 -0
- package/dist/features/repo/resolveVersion.esm.js.map +1 -0
- package/dist/features/repo/tabs/DeploymentRow.esm.js +201 -0
- package/dist/features/repo/tabs/DeploymentRow.esm.js.map +1 -0
- package/dist/features/repo/tabs/DeploymentsTab.esm.js +188 -0
- package/dist/features/repo/tabs/DeploymentsTab.esm.js.map +1 -0
- package/dist/features/repo/tabs/DeploymentsTab.helpers.esm.js +46 -0
- package/dist/features/repo/tabs/DeploymentsTab.helpers.esm.js.map +1 -0
- package/dist/features/repo/tabs/DeploymentsTab.loading.esm.js +37 -0
- package/dist/features/repo/tabs/DeploymentsTab.loading.esm.js.map +1 -0
- package/dist/features/repo/tabs/FilesTab.esm.js +142 -0
- package/dist/features/repo/tabs/FilesTab.esm.js.map +1 -0
- package/dist/features/repo/tabs/InstanceRow.esm.js +121 -0
- package/dist/features/repo/tabs/InstanceRow.esm.js.map +1 -0
- package/dist/features/repo/tabs/InstancesTab.esm.js +147 -0
- package/dist/features/repo/tabs/InstancesTab.esm.js.map +1 -0
- package/dist/features/repo/tabs/InstancesTab.helpers.esm.js +44 -0
- package/dist/features/repo/tabs/InstancesTab.helpers.esm.js.map +1 -0
- package/dist/features/repo/tabs/InstancesTab.loading.esm.js +33 -0
- package/dist/features/repo/tabs/InstancesTab.loading.esm.js.map +1 -0
- package/dist/features/repo/tabs/OverviewTab.esm.js +77 -0
- package/dist/features/repo/tabs/OverviewTab.esm.js.map +1 -0
- package/dist/features/repo/tabs/PermissionsTab.esm.js +56 -0
- package/dist/features/repo/tabs/PermissionsTab.esm.js.map +1 -0
- package/dist/features/repo/tabs/VersionsTab.esm.js +152 -0
- package/dist/features/repo/tabs/VersionsTab.esm.js.map +1 -0
- package/dist/features/repo/useInfiniteRelayList.esm.js +92 -0
- package/dist/features/repo/useInfiniteRelayList.esm.js.map +1 -0
- package/dist/features/repo/useInfiniteScroll.esm.js +21 -0
- package/dist/features/repo/useInfiniteScroll.esm.js.map +1 -0
- package/dist/features/repos/ReposListPage.esm.js +53 -0
- package/dist/features/repos/ReposListPage.esm.js.map +1 -0
- package/dist/features/repos/queries.esm.js +40 -0
- package/dist/features/repos/queries.esm.js.map +1 -0
- package/dist/features/repos/repoColumns.esm.js +121 -0
- package/dist/features/repos/repoColumns.esm.js.map +1 -0
- package/dist/features/repos/useRepos.esm.js +22 -0
- package/dist/features/repos/useRepos.esm.js.map +1 -0
- package/dist/features/resource/OriginChip.esm.js +42 -0
- package/dist/features/resource/OriginChip.esm.js.map +1 -0
- package/dist/features/resource/ResourceDetailsPage.esm.js +167 -0
- package/dist/features/resource/ResourceDetailsPage.esm.js.map +1 -0
- package/dist/features/resource/queries.esm.js +141 -0
- package/dist/features/resource/queries.esm.js.map +1 -0
- package/dist/features/resource/tabs/GeneralTab.esm.js +247 -0
- package/dist/features/resource/tabs/GeneralTab.esm.js.map +1 -0
- package/dist/features/resource/tabs/GeneralTab.loading.esm.js +76 -0
- package/dist/features/resource/tabs/GeneralTab.loading.esm.js.map +1 -0
- package/dist/features/resource/tabs/PermissionsTab.esm.js +57 -0
- package/dist/features/resource/tabs/PermissionsTab.esm.js.map +1 -0
- package/dist/features/resource/tabs/SettingsTabLayout.esm.js +18 -0
- package/dist/features/resource/tabs/SettingsTabLayout.esm.js.map +1 -0
- package/dist/features/resource/tabs/TabHeader.esm.js +30 -0
- package/dist/features/resource/tabs/TabHeader.esm.js.map +1 -0
- package/dist/features/resource/tabs/UsagePanel.esm.js +35 -0
- package/dist/features/resource/tabs/UsagePanel.esm.js.map +1 -0
- package/dist/features/resource/tabs/UsageTab.esm.js +91 -0
- package/dist/features/resource/tabs/UsageTab.esm.js.map +1 -0
- package/dist/features/resource/tabs/UsageTab.helpers.esm.js +168 -0
- package/dist/features/resource/tabs/UsageTab.helpers.esm.js.map +1 -0
- package/dist/features/resources/ResourcesEmptyState.esm.js +148 -0
- package/dist/features/resources/ResourcesEmptyState.esm.js.map +1 -0
- package/dist/features/resources/ResourcesListPage.esm.js +115 -0
- package/dist/features/resources/ResourcesListPage.esm.js.map +1 -0
- package/dist/features/resources/queries.esm.js +50 -0
- package/dist/features/resources/queries.esm.js.map +1 -0
- package/dist/features/resources/resourceColumns.esm.js +158 -0
- package/dist/features/resources/resourceColumns.esm.js.map +1 -0
- package/dist/features/resources/resourceConstants.esm.js +7 -0
- package/dist/features/resources/resourceConstants.esm.js.map +1 -0
- package/dist/features/resources/toResourceRow.esm.js +29 -0
- package/dist/features/resources/toResourceRow.esm.js.map +1 -0
- package/dist/hooks/useAuthedSvg.esm.js +34 -0
- package/dist/hooks/useAuthedSvg.esm.js.map +1 -0
- package/dist/hooks/useCursorPagination.esm.js +40 -0
- package/dist/hooks/useCursorPagination.esm.js.map +1 -0
- package/dist/hooks/useMassdriverSubscription.esm.js +61 -0
- package/dist/hooks/useMassdriverSubscription.esm.js.map +1 -0
- package/dist/hooks/usePaginatedRelayQuery.esm.js +68 -0
- package/dist/hooks/usePaginatedRelayQuery.esm.js.map +1 -0
- package/dist/index.d.ts +256 -0
- package/dist/index.esm.js +8 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/internalRoutes.esm.js +29 -0
- package/dist/internalRoutes.esm.js.map +1 -0
- package/dist/plugin.esm.js +57 -0
- package/dist/plugin.esm.js.map +1 -0
- package/dist/queries.esm.js +54 -0
- package/dist/queries.esm.js.map +1 -0
- package/dist/routes.esm.js +6 -0
- package/dist/routes.esm.js.map +1 -0
- package/dist/shell/MassdriverHeader.esm.js +37 -0
- package/dist/shell/MassdriverHeader.esm.js.map +1 -0
- package/dist/shell/MassdriverShell.esm.js +30 -0
- package/dist/shell/MassdriverShell.esm.js.map +1 -0
- package/dist/theme/MassdriverThemeScope.esm.js +30 -0
- package/dist/theme/MassdriverThemeScope.esm.js.map +1 -0
- package/dist/theme/ThemeModeContext.esm.js +35 -0
- package/dist/theme/ThemeModeContext.esm.js.map +1 -0
- package/dist/theme/muiClassNameAudit.esm.js +11 -0
- package/dist/theme/muiClassNameAudit.esm.js.map +1 -0
- package/dist/useInstances.esm.js +39 -0
- package/dist/useInstances.esm.js.map +1 -0
- package/dist/utils/attributes.esm.js +28 -0
- package/dist/utils/attributes.esm.js.map +1 -0
- package/dist/utils/conditions.esm.js +20 -0
- package/dist/utils/conditions.esm.js.map +1 -0
- package/dist/utils/formatRelativeTime.esm.js +40 -0
- package/dist/utils/formatRelativeTime.esm.js.map +1 -0
- package/dist/utils/instanceStatuses.esm.js +74 -0
- package/dist/utils/instanceStatuses.esm.js.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<svg version="1.1" id="uuid-9b8b9585-3cbe-4d4e-8f0e-f2a160e67216"
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 401.4 111.2"
|
|
4
|
+
style="enable-background:new 0 0 401.4 111.2;" xml:space="preserve">
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;enable-background:new ;}
|
|
7
|
+
</style>
|
|
8
|
+
<path class="st0" d="M75.1,12.2L57.6,2.1c-2.4-1.4-5-2.1-7.5-2.1S45,0.7,42.6,2.1L25,12.2l0,0L7.5,22.3c-2.4,1.4-4.3,3.2-5.5,5.5
|
|
9
|
+
l0,0c-1.3,2.2-2,4.8-2,7.5v40.5c0,2.7,0.7,5.3,2,7.5l0,0c1.3,2.2,3.2,4.1,5.5,5.5L25,99l0,0l17.5,10.1l0,0c2.4,1.4,4.9,2.1,7.5,2.1
|
|
10
|
+
s5.1-0.7,7.5-2.1l0,0L75.1,99l0,0l17.5-10.1c2.4-1.4,4.3-3.2,5.5-5.5l0,0c1.3-2.2,2-4.8,2-7.5V35.3c0-2.7-0.7-5.3-2-7.5l0,0
|
|
11
|
+
c-1.3-2.2-3.2-4.1-5.5-5.5L75.1,12.2L75.1,12.2L75.1,12.2z M56,4.8L73.5,15l0,0L91,25.1c1.9,1.1,3.4,2.6,4.4,4.3l0,0
|
|
12
|
+
c1,1.7,1.5,3.8,1.5,5.9v40.5c0,2.2-0.5,4.2-1.5,5.9l0,0c-1,1.7-2.5,3.2-4.4,4.3L73.5,96.2l0,0L56,106.3l0,0
|
|
13
|
+
c-1.9,1.1-3.9,1.6-5.9,1.6s-4-0.5-5.9-1.6l0,0L26.6,96.2l0,0L9.1,86.1c-1.9-1.1-3.4-2.6-4.4-4.3l0,0c-1-1.7-1.5-3.8-1.5-5.9V35.3
|
|
14
|
+
c0-2.2,0.5-4.2,1.5-5.9l0,0c1-1.7,2.5-3.2,4.4-4.3L26.6,15l0,0L44.2,4.8c1.9-1.1,3.9-1.6,5.9-1.6S54.1,3.8,56,4.8L56,4.8z
|
|
15
|
+
M50.1,27.1c-7.9,0-15,3.2-20.1,8.4c-5.2,5.2-8.4,12.3-8.4,20.2s3.2,15,8.4,20.2s12.3,8.3,20.1,8.3s15-3.2,20.2-8.3
|
|
16
|
+
c5.2-5.2,8.3-12.3,8.3-20.2s-3.2-15-8.3-20.2S58,27.1,50.1,27.1z M68,87.2c-5.1,2.9-10.8,4.4-16.5,4.7v12.7c1.4-0.2,2.7-0.7,4-1.4
|
|
17
|
+
l16.2-9.4L68,87.2L68,87.2z M65.5,82.7c-4.5,2.6-9.8,4.1-15.4,4.1s-10.9-1.5-15.5-4.1l-1,1.9c5.1,2.9,10.8,4.3,16.5,4.3
|
|
18
|
+
s11.3-1.4,16.5-4.3C66.5,84.6,65.5,82.7,65.5,82.7z M29.4,39.8c8-7.2,33.3-7.2,41.3,0c5.4,4.6,6.2,16.8,2.8,25.3
|
|
19
|
+
c-6.9,17.8-41.8,17.4-47.6-1.9C23.4,54.8,24.4,44,29.4,39.8z M11.8,27.1c-1.8,1-3.1,2.4-4.1,4c-0.9,1.6-1.4,3.5-1.4,5.5v37.9
|
|
20
|
+
c0,2,0.5,3.9,1.4,5.5c0.9,1.6,2.3,3,4.1,4l14,8.1L32,81c-1.4-1-2.8-2.1-4-3.4c-2.7-2.7-5-6-6.5-9.6h-1.8c-1.9,0-3.6-1.3-4.1-3.1
|
|
21
|
+
c-0.8-3-1.2-6.1-1.2-9.3s0.4-6.4,1.2-9.3c0.5-1.9,2.1-3.1,4.1-3.1h1.8c1.6-3.6,3.8-6.8,6.5-9.5c5.6-5.6,13.4-9.1,22-9.1
|
|
22
|
+
s16.4,3.5,22,9.1c2.7,2.7,4.9,6,6.5,9.5h1v-7.7c-0.8-0.4-1.4-1.2-1.4-2.2c0-1.3,1.1-2.4,2.4-2.4s2.4,1.1,2.4,2.4
|
|
23
|
+
c0,1-0.6,1.8-1.4,2.2v7.9c1.4,0.4,2.5,1.5,2.9,3c0.8,3,1.2,6.1,1.2,9.3S85.3,62,84.5,65c-0.5,1.9-2.2,3.1-4.1,3.1h-1.8
|
|
24
|
+
c-1.6,3.6-3.8,6.8-6.5,9.6c-1.3,1.3-2.6,2.4-4.1,3.4l6.4,11.1l14-8.1c1.8-1,3.1-2.4,4.1-4c0.9-1.6,1.4-3.5,1.4-5.5V36.7
|
|
25
|
+
c0-2-0.5-3.9-1.4-5.5c-0.9-1.6-2.3-3-4.1-4L72,17.7l0,0L55.6,8.2c-1.8-1-3.6-1.5-5.5-1.5s-3.8,0.5-5.5,1.5l-16.4,9.5l0,0L11.8,27.1z
|
|
26
|
+
M66.4,40c-4.8-2.1-12.7-3.2-20-2.7c9.8,0.7,15.9,4.3,18.3,10.8c2.4,6.4,2,18.3-2.2,23.9c3.8-1.8,6.8-4.6,8.3-8.3
|
|
27
|
+
c0.9-2.3,1.4-4.9,1.7-7.4c0.2-1.9,0.2-4.7-0.2-7.4C71.5,44.5,69.5,41.4,66.4,40z M392.3,47.3c0.7-1.9,1.9-3.3,3.6-4.3
|
|
28
|
+
c1.6-1,3.5-1.4,5.5-1.4v8.6c-2.4-0.3-4.5,0.2-6.3,1.4c-1.9,1.2-2.8,3.3-2.8,6.2v14.3h-7.7V42.1h7.7V47.3L392.3,47.3z M373.6,54.3
|
|
29
|
+
h-15.2c0.4-1.9,1.3-3.4,2.7-4.5c1.4-1.1,3.1-1.6,5.1-1.6c1.8,0,3.3,0.5,4.7,1.5C372.3,50.8,373.2,52.3,373.6,54.3L373.6,54.3z
|
|
30
|
+
M366.9,65.9c-4.6,0-7.4-1.9-8.4-5.6H381c0.2-1.1,0.3-2.2,0.3-3.2c0-4.5-1.4-8.2-4.3-11.2s-6.5-4.5-10.9-4.5
|
|
31
|
+
c-4.6,0-8.4,1.5-11.4,4.5c-3,3-4.4,6.8-4.4,11.3s1.5,8.3,4.5,11.3c3,3,7,4.5,11.9,4.5c5.7,0,10.1-2.1,13-6.4l-6.2-3.6
|
|
32
|
+
C372.1,64.9,369.9,65.9,366.9,65.9L366.9,65.9z M342.3,42.2h8.5l-11.4,29.9h-8.8l-11.4-29.9h8.5l7.2,20.9L342.3,42.2L342.3,42.2z
|
|
33
|
+
M307.8,42.2v29.9h7.7V42.1C315.5,42.1,307.8,42.1,307.8,42.2z M294.2,47.3c0.7-1.9,1.9-3.3,3.6-4.3c1.6-1,3.5-1.4,5.5-1.4v8.6
|
|
34
|
+
c-2.4-0.3-4.5,0.2-6.3,1.4c-1.9,1.2-2.8,3.3-2.8,6.2v14.3h-7.7V42.1h7.7V47.3L294.2,47.3z M265.3,65.5c-2.4,0-4.4-0.8-6-2.4
|
|
35
|
+
c-1.6-1.6-2.4-3.6-2.4-6.1s0.8-4.5,2.4-6.1c1.6-1.6,3.6-2.4,6-2.4s4.4,0.8,5.9,2.4c1.5,1.6,2.3,3.6,2.3,6.1s-0.8,4.5-2.3,6.1
|
|
36
|
+
C269.6,64.8,267.7,65.5,265.3,65.5z M281.2,30.2l-7.7,2.1v13.4c-2.3-2.9-5.5-4.4-9.7-4.4s-7.5,1.5-10.3,4.6s-4.3,6.8-4.3,11.2
|
|
37
|
+
s1.4,8.2,4.3,11.2s6.3,4.6,10.3,4.6s7.4-1.5,9.7-4.4v3.5h7.7C281.2,72.1,281.2,30.2,281.2,30.2z M230.9,50.7c0,0.8,0.5,1.5,1.6,1.9
|
|
38
|
+
c1.1,0.5,2.3,0.9,3.9,1.3c1.5,0.4,3,0.9,4.5,1.4s2.8,1.5,3.9,2.9c1.1,1.4,1.6,3,1.6,5.1c0,3.1-1.1,5.4-3.4,7.1
|
|
39
|
+
c-2.3,1.7-5.1,2.5-8.6,2.5c-6.1,0-10.3-2.4-12.6-7.1l6.7-3.8c0.9,2.6,2.8,3.9,5.9,3.9c2.8,0,4.1-0.9,4.1-2.6c0-0.8-0.5-1.5-1.6-1.9
|
|
40
|
+
c-1.1-0.5-2.3-1-3.9-1.3c-1.5-0.4-3-0.9-4.5-1.5s-2.8-1.5-3.9-2.8c-1.1-1.3-1.6-2.9-1.6-4.9c0-3,1.1-5.3,3.3-7s4.9-2.5,8.1-2.5
|
|
41
|
+
c2.4,0,4.6,0.5,6.6,1.7c2,1.1,3.6,2.7,4.7,4.7l-6.6,3.6c-1-2-2.6-3-4.8-3c-1,0-1.8,0.2-2.5,0.7C231.2,49.3,230.9,49.9,230.9,50.7
|
|
42
|
+
L230.9,50.7z M206.5,52.6c-1.1-0.5-1.6-1.2-1.6-1.9s0.3-1.4,1-1.8c0.7-0.4,1.5-0.7,2.5-0.7c2.2,0,3.8,1,4.8,3l6.6-3.6
|
|
43
|
+
c-1.2-2-2.7-3.6-4.7-4.7c-2-1.1-4.2-1.7-6.6-1.7c-3.2,0-5.9,0.8-8.1,2.5c-2.2,1.7-3.3,4-3.3,7c0,2,0.5,3.6,1.6,4.9
|
|
44
|
+
c1.1,1.3,2.3,2.2,3.9,2.8c1.5,0.6,3,1.1,4.5,1.5s2.8,0.8,3.9,1.3s1.6,1.2,1.6,1.9c0,1.7-1.4,2.6-4.1,2.6c-3,0-5-1.3-5.9-3.9
|
|
45
|
+
l-6.7,3.8c2.2,4.8,6.4,7.1,12.6,7.1c3.4,0,6.3-0.8,8.6-2.5c2.3-1.7,3.4-4,3.4-7.1c0-2-0.5-3.7-1.6-5.1c-1.1-1.4-2.3-2.3-3.9-2.9
|
|
46
|
+
c-1.5-0.6-3-1.1-4.5-1.4C208.9,53.5,207.6,53.1,206.5,52.6z M170.3,63.2c1.6,1.6,3.5,2.4,5.9,2.4s4.4-0.8,5.9-2.4
|
|
47
|
+
c1.6-1.6,2.4-3.6,2.4-6.1s-0.8-4.5-2.4-6.1c-1.6-1.6-3.6-2.4-5.9-2.4s-4.4,0.8-5.9,2.4c-1.6,1.6-2.3,3.6-2.3,6.1
|
|
48
|
+
S168.7,61.6,170.3,63.2z M184.5,42.2h7.7v29.9h-7.7v-3.5c-2.3,2.9-5.6,4.4-9.8,4.4s-7.4-1.5-10.2-4.6s-4.3-6.8-4.3-11.2
|
|
49
|
+
s1.4-8.2,4.3-11.2c2.9-3,6.3-4.6,10.2-4.6c4.2,0,7.4,1.5,9.8,4.4V42.2L184.5,42.2z M153.4,44.7c-2.1-2.2-4.8-3.3-8.2-3.3
|
|
50
|
+
c-3.9,0-6.9,1.4-8.9,4.3c-1.8-2.9-4.5-4.3-8.1-4.3s-6.5,1.3-8.3,4v-3.2h-7.7v29.9h7.7V55.2c0-2.2,0.5-3.9,1.5-5
|
|
51
|
+
c1-1.2,2.4-1.7,4.1-1.7c1.6,0,2.8,0.5,3.7,1.5s1.3,2.4,1.3,4.2v17.9h7.7V55.3c0-2.2,0.5-3.9,1.5-5c1-1.2,2.3-1.7,4.1-1.7
|
|
52
|
+
c1.6,0,2.8,0.5,3.7,1.5s1.3,2.4,1.3,4.2v17.9h7.7V53.7C156.5,49.9,155.5,46.9,153.4,44.7L153.4,44.7z M307.8,31.5l7.7-1.9v7.7
|
|
53
|
+
l-7.7,1.9C307.8,39.2,307.8,31.5,307.8,31.5z M28.3,93.7l16.2,9.4c1.3,0.8,2.7,1.2,4,1.4V91.8c-5.7-0.2-11.3-1.8-16.5-4.7L28.3,93.7
|
|
54
|
+
L28.3,93.7z" />
|
|
55
|
+
</svg>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<svg version="1.1"
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 401.4 111.2"
|
|
4
|
+
style="enable-background:new 0 0 401.4 111.2;" xml:space="preserve">
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#212121;}
|
|
7
|
+
</style>
|
|
8
|
+
<path class="st0" d="M56,4.8L73.5,15l0,0L91,25.1c1.9,1.1,3.4,2.6,4.4,4.3l0,0c1,1.7,1.5,3.8,1.5,5.9v40.5c0,2.2-0.5,4.2-1.5,5.9
|
|
9
|
+
l0,0c-1,1.7-2.5,3.2-4.4,4.3L73.5,96.2l0,0L56,106.3l0,0c-1.9,1.1-3.9,1.6-5.9,1.6s-4-0.5-5.9-1.6l0,0L26.6,96.2l0,0L9.1,86.1
|
|
10
|
+
c-1.9-1.1-3.4-2.6-4.4-4.3l0,0c-1-1.7-1.5-3.8-1.5-5.9V35.3c0-2.2,0.5-4.2,1.5-5.9l0,0c1-1.7,2.5-3.2,4.4-4.3L26.6,15l0,0L44.2,4.8
|
|
11
|
+
c1.9-1.1,3.9-1.6,5.9-1.6S54.1,3.8,56,4.8L56,4.8z M50.1,27.1c-7.9,0-15,3.2-20.1,8.4c-5.2,5.2-8.4,12.3-8.4,20.2s3.2,15,8.4,20.2
|
|
12
|
+
s12.3,8.3,20.1,8.3s15-3.2,20.2-8.3c5.2-5.2,8.3-12.3,8.3-20.2s-3.2-15-8.3-20.2S58,27.1,50.1,27.1z M68,87.2
|
|
13
|
+
c-5.1,2.9-10.8,4.4-16.5,4.7v12.7c1.4-0.2,2.7-0.7,4-1.4l16.2-9.4L68,87.2L68,87.2z M65.5,82.7c-4.5,2.6-9.8,4.1-15.4,4.1
|
|
14
|
+
s-10.9-1.5-15.5-4.1l-1,1.9c5.1,2.9,10.8,4.3,16.5,4.3s11.3-1.4,16.5-4.3C66.5,84.6,65.5,82.7,65.5,82.7z M29.4,39.8
|
|
15
|
+
c8-7.2,33.3-7.2,41.3,0c5.4,4.6,6.2,16.8,2.8,25.3c-6.9,17.8-41.8,17.4-47.6-1.9C23.4,54.8,24.4,44,29.4,39.8z M11.8,27.1
|
|
16
|
+
c-1.8,1-3.1,2.4-4.1,4c-0.9,1.6-1.4,3.5-1.4,5.5v37.9c0,2,0.5,3.9,1.4,5.5s2.3,3,4.1,4l14,8.1L32,81c-1.4-1-2.8-2.1-4-3.4
|
|
17
|
+
c-2.7-2.7-5-6-6.5-9.6h-1.8c-1.9,0-3.6-1.3-4.1-3.1c-0.8-3-1.2-6.1-1.2-9.3s0.4-6.4,1.2-9.3c0.5-1.9,2.1-3.1,4.1-3.1h1.8
|
|
18
|
+
c1.6-3.6,3.8-6.8,6.5-9.5c5.6-5.6,13.4-9.1,22-9.1s16.4,3.5,22,9.1c2.7,2.7,4.9,6,6.5,9.5h1v-7.7c-0.8-0.4-1.4-1.2-1.4-2.2
|
|
19
|
+
c0-1.3,1.1-2.4,2.4-2.4s2.4,1.1,2.4,2.4c0,1-0.6,1.8-1.4,2.2v7.9c1.4,0.4,2.5,1.5,2.9,3c0.8,3,1.2,6.1,1.2,9.3S85.3,62,84.5,65
|
|
20
|
+
c-0.5,1.9-2.2,3.1-4.1,3.1h-1.8c-1.6,3.6-3.8,6.8-6.5,9.6c-1.3,1.3-2.6,2.4-4.1,3.4l6.4,11.1l14-8.1c1.8-1,3.1-2.4,4.1-4
|
|
21
|
+
c0.9-1.6,1.4-3.5,1.4-5.5V36.7c0-2-0.5-3.9-1.4-5.5c-0.9-1.6-2.3-3-4.1-4L72,17.7l0,0L55.6,8.2c-1.8-1-3.6-1.5-5.5-1.5
|
|
22
|
+
s-3.8,0.5-5.5,1.5l-16.4,9.5l0,0L11.8,27.1z M66.4,40c-4.8-2.1-12.7-3.2-20-2.7c9.8,0.7,15.9,4.3,18.3,10.8c2.4,6.4,2,18.3-2.2,23.9
|
|
23
|
+
c3.8-1.8,6.8-4.6,8.3-8.3c0.9-2.3,1.4-4.9,1.7-7.4c0.2-1.9,0.2-4.7-0.2-7.4C71.5,44.5,69.5,41.4,66.4,40z M392.3,47.3
|
|
24
|
+
c0.7-1.9,1.9-3.3,3.6-4.3c1.6-1,3.5-1.4,5.5-1.4v8.6c-2.4-0.3-4.5,0.2-6.3,1.4c-1.9,1.2-2.8,3.3-2.8,6.2v14.3h-7.7v-30h7.7
|
|
25
|
+
L392.3,47.3L392.3,47.3z M373.6,54.3h-15.2c0.4-1.9,1.3-3.4,2.7-4.5c1.4-1.1,3.1-1.6,5.1-1.6c1.8,0,3.3,0.5,4.7,1.5
|
|
26
|
+
C372.3,50.8,373.2,52.3,373.6,54.3L373.6,54.3z M366.9,65.9c-4.6,0-7.4-1.9-8.4-5.6H381c0.2-1.1,0.3-2.2,0.3-3.2
|
|
27
|
+
c0-4.5-1.4-8.2-4.3-11.2s-6.5-4.5-10.9-4.5c-4.6,0-8.4,1.5-11.4,4.5s-4.4,6.8-4.4,11.3s1.5,8.3,4.5,11.3s7,4.5,11.9,4.5
|
|
28
|
+
c5.7,0,10.1-2.1,13-6.4l-6.2-3.6C372.1,64.9,369.9,65.9,366.9,65.9L366.9,65.9z M342.3,42.2h8.5l-11.4,29.9h-8.8l-11.4-29.9h8.5
|
|
29
|
+
l7.2,20.9L342.3,42.2L342.3,42.2z M307.8,42.2v29.9h7.7v-30C315.5,42.1,307.8,42.1,307.8,42.2z M294.2,47.3c0.7-1.9,1.9-3.3,3.6-4.3
|
|
30
|
+
c1.6-1,3.5-1.4,5.5-1.4v8.6c-2.4-0.3-4.5,0.2-6.3,1.4c-1.9,1.2-2.8,3.3-2.8,6.2v14.3h-7.7v-30h7.7L294.2,47.3L294.2,47.3z
|
|
31
|
+
M265.3,65.5c-2.4,0-4.4-0.8-6-2.4s-2.4-3.6-2.4-6.1s0.8-4.5,2.4-6.1s3.6-2.4,6-2.4s4.4,0.8,5.9,2.4c1.5,1.6,2.3,3.6,2.3,6.1
|
|
32
|
+
s-0.8,4.5-2.3,6.1C269.6,64.8,267.7,65.5,265.3,65.5z M281.2,30.2l-7.7,2.1v13.4c-2.3-2.9-5.5-4.4-9.7-4.4s-7.5,1.5-10.3,4.6
|
|
33
|
+
s-4.3,6.8-4.3,11.2s1.4,8.2,4.3,11.2s6.3,4.6,10.3,4.6s7.4-1.5,9.7-4.4V72h7.7C281.2,72.1,281.2,30.2,281.2,30.2z M230.9,50.7
|
|
34
|
+
c0,0.8,0.5,1.5,1.6,1.9c1.1,0.5,2.3,0.9,3.9,1.3c1.5,0.4,3,0.9,4.5,1.4s2.8,1.5,3.9,2.9c1.1,1.4,1.6,3,1.6,5.1
|
|
35
|
+
c0,3.1-1.1,5.4-3.4,7.1c-2.3,1.7-5.1,2.5-8.6,2.5c-6.1,0-10.3-2.4-12.6-7.1l6.7-3.8c0.9,2.6,2.8,3.9,5.9,3.9c2.8,0,4.1-0.9,4.1-2.6
|
|
36
|
+
c0-0.8-0.5-1.5-1.6-1.9c-1.1-0.5-2.3-1-3.9-1.3c-1.5-0.4-3-0.9-4.5-1.5s-2.8-1.5-3.9-2.8c-1.1-1.3-1.6-2.9-1.6-4.9
|
|
37
|
+
c0-3,1.1-5.3,3.3-7s4.9-2.5,8.1-2.5c2.4,0,4.6,0.5,6.6,1.7c2,1.1,3.6,2.7,4.7,4.7l-6.6,3.6c-1-2-2.6-3-4.8-3c-1,0-1.8,0.2-2.5,0.7
|
|
38
|
+
C231.2,49.3,230.9,49.9,230.9,50.7L230.9,50.7z M206.5,52.6c-1.1-0.5-1.6-1.2-1.6-1.9s0.3-1.4,1-1.8c0.7-0.4,1.5-0.7,2.5-0.7
|
|
39
|
+
c2.2,0,3.8,1,4.8,3l6.6-3.6c-1.2-2-2.7-3.6-4.7-4.7c-2-1.1-4.2-1.7-6.6-1.7c-3.2,0-5.9,0.8-8.1,2.5c-2.2,1.7-3.3,4-3.3,7
|
|
40
|
+
c0,2,0.5,3.6,1.6,4.9c1.1,1.3,2.3,2.2,3.9,2.8c1.5,0.6,3,1.1,4.5,1.5s2.8,0.8,3.9,1.3s1.6,1.2,1.6,1.9c0,1.7-1.4,2.6-4.1,2.6
|
|
41
|
+
c-3,0-5-1.3-5.9-3.9l-6.7,3.8c2.2,4.8,6.4,7.1,12.6,7.1c3.4,0,6.3-0.8,8.6-2.5s3.4-4,3.4-7.1c0-2-0.5-3.7-1.6-5.1
|
|
42
|
+
c-1.1-1.4-2.3-2.3-3.9-2.9c-1.5-0.6-3-1.1-4.5-1.4C208.9,53.5,207.6,53.1,206.5,52.6z M170.3,63.2c1.6,1.6,3.5,2.4,5.9,2.4
|
|
43
|
+
s4.4-0.8,5.9-2.4c1.6-1.6,2.4-3.6,2.4-6.1s-0.8-4.5-2.4-6.1c-1.6-1.6-3.6-2.4-5.9-2.4s-4.4,0.8-5.9,2.4c-1.6,1.6-2.3,3.6-2.3,6.1
|
|
44
|
+
S168.7,61.6,170.3,63.2z M184.5,42.2h7.7v29.9h-7.7v-3.5c-2.3,2.9-5.6,4.4-9.8,4.4s-7.4-1.5-10.2-4.6s-4.3-6.8-4.3-11.2
|
|
45
|
+
s1.4-8.2,4.3-11.2c2.9-3,6.3-4.6,10.2-4.6c4.2,0,7.4,1.5,9.8,4.4V42.2L184.5,42.2z M153.4,44.7c-2.1-2.2-4.8-3.3-8.2-3.3
|
|
46
|
+
c-3.9,0-6.9,1.4-8.9,4.3c-1.8-2.9-4.5-4.3-8.1-4.3s-6.5,1.3-8.3,4v-3.2h-7.7v29.9h7.7V55.2c0-2.2,0.5-3.9,1.5-5
|
|
47
|
+
c1-1.2,2.4-1.7,4.1-1.7c1.6,0,2.8,0.5,3.7,1.5s1.3,2.4,1.3,4.2v17.9h7.7V55.3c0-2.2,0.5-3.9,1.5-5c1-1.2,2.3-1.7,4.1-1.7
|
|
48
|
+
c1.6,0,2.8,0.5,3.7,1.5s1.3,2.4,1.3,4.2v17.9h7.7V53.7C156.5,49.9,155.5,46.9,153.4,44.7L153.4,44.7z M307.8,31.5l7.7-1.9v7.7
|
|
49
|
+
l-7.7,1.9V31.5z M28.3,93.7l16.2,9.4c1.3,0.8,2.7,1.2,4,1.4V91.8C42.8,91.6,37.2,90,32,87.1L28.3,93.7L28.3,93.7z"/>
|
|
50
|
+
</svg>
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import Box from '@massdriver/ui/Box';
|
|
3
|
+
import { col } from '@massdriver/ui/DataList';
|
|
4
|
+
import { HelpIconButton } from '@massdriver/ui/IconButton';
|
|
5
|
+
import stylin from '@massdriver/ui/stylin';
|
|
6
|
+
import { AttributesSummaryCell } from './AttributesSummaryCell.esm.js';
|
|
7
|
+
|
|
8
|
+
const Code = stylin("code")(({ theme }) => ({
|
|
9
|
+
fontFamily: theme.typography.fontFamilyMono ?? "monospace",
|
|
10
|
+
fontSize: "0.85em",
|
|
11
|
+
padding: "0 3px",
|
|
12
|
+
borderRadius: 3,
|
|
13
|
+
backgroundColor: "rgba(255,255,255,0.12)"
|
|
14
|
+
}));
|
|
15
|
+
const AttributesColumnHeader = ({
|
|
16
|
+
directText,
|
|
17
|
+
effectiveText
|
|
18
|
+
}) => /* @__PURE__ */ jsxs(HeaderRow, { children: [
|
|
19
|
+
"Attributes",
|
|
20
|
+
/* @__PURE__ */ jsx(
|
|
21
|
+
SmallHelpButton,
|
|
22
|
+
{
|
|
23
|
+
tooltip: /* @__PURE__ */ jsxs(HelpBody, { children: [
|
|
24
|
+
/* @__PURE__ */ jsxs(HelpSection, { children: [
|
|
25
|
+
/* @__PURE__ */ jsx(HelpHeading, { children: "Direct" }),
|
|
26
|
+
/* @__PURE__ */ jsx(HelpText, { children: directText })
|
|
27
|
+
] }),
|
|
28
|
+
/* @__PURE__ */ jsxs(HelpSection, { children: [
|
|
29
|
+
/* @__PURE__ */ jsx(HelpHeading, { children: "Effective" }),
|
|
30
|
+
/* @__PURE__ */ jsx(HelpText, { children: effectiveText })
|
|
31
|
+
] })
|
|
32
|
+
] }),
|
|
33
|
+
size: "small"
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
] });
|
|
37
|
+
const buildAttributesColumn = ({
|
|
38
|
+
directText,
|
|
39
|
+
effectiveText,
|
|
40
|
+
...options
|
|
41
|
+
}) => col.custom(
|
|
42
|
+
"attributes",
|
|
43
|
+
/* @__PURE__ */ jsx(
|
|
44
|
+
AttributesColumnHeader,
|
|
45
|
+
{
|
|
46
|
+
directText,
|
|
47
|
+
effectiveText
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
(_value, row) => /* @__PURE__ */ jsx(
|
|
51
|
+
AttributesSummaryCell,
|
|
52
|
+
{
|
|
53
|
+
direct: row.attributes,
|
|
54
|
+
effective: row.effectiveAttributes
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
{ flex: 2, minWidth: 200, sortable: false, searchable: false, ...options }
|
|
58
|
+
);
|
|
59
|
+
const HeaderRow = stylin(Box)(({ theme }) => ({
|
|
60
|
+
display: "inline-flex",
|
|
61
|
+
alignItems: "center",
|
|
62
|
+
gap: theme.spacing(0.5)
|
|
63
|
+
}));
|
|
64
|
+
const SmallHelpButton = stylin(HelpIconButton)({
|
|
65
|
+
padding: "2px",
|
|
66
|
+
"& svg": { fontSize: 14 }
|
|
67
|
+
});
|
|
68
|
+
const HelpBody = stylin(Box)(({ theme }) => ({
|
|
69
|
+
display: "flex",
|
|
70
|
+
flexDirection: "column",
|
|
71
|
+
gap: theme.spacing(1),
|
|
72
|
+
maxWidth: 280,
|
|
73
|
+
color: "inherit"
|
|
74
|
+
}));
|
|
75
|
+
const HelpSection = stylin(Box)(({ theme }) => ({
|
|
76
|
+
display: "flex",
|
|
77
|
+
flexDirection: "column",
|
|
78
|
+
gap: theme.spacing(0.25),
|
|
79
|
+
color: "inherit"
|
|
80
|
+
}));
|
|
81
|
+
const HelpHeading = stylin("div")(({ theme }) => ({
|
|
82
|
+
fontSize: theme.typography.pxToRem(11),
|
|
83
|
+
fontWeight: theme.typography.fontWeightBold,
|
|
84
|
+
textTransform: "uppercase",
|
|
85
|
+
letterSpacing: "0.06em",
|
|
86
|
+
opacity: 0.7
|
|
87
|
+
}));
|
|
88
|
+
const HelpText = stylin("div")(({ theme }) => ({
|
|
89
|
+
fontSize: theme.typography.pxToRem(12),
|
|
90
|
+
lineHeight: 1.5,
|
|
91
|
+
opacity: 0.9
|
|
92
|
+
}));
|
|
93
|
+
|
|
94
|
+
export { Code, buildAttributesColumn };
|
|
95
|
+
//# sourceMappingURL=AttributesColumn.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributesColumn.esm.js","sources":["../../src/components/AttributesColumn.tsx"],"sourcesContent":["import Box from '@massdriver/ui/Box';\nimport { col } from '@massdriver/ui/DataList';\nimport { HelpIconButton } from '@massdriver/ui/IconButton';\nimport stylin from '@massdriver/ui/stylin';\nimport { ReactNode } from 'react';\nimport { AttributesSummaryCell } from './AttributesSummaryCell';\n\n/** Inline `<code>`-style span, mirroring the web app's `Code`. */\nexport const Code = stylin('code')(({ theme }: { theme: any }) => ({\n fontFamily: theme.typography.fontFamilyMono ?? 'monospace',\n fontSize: '0.85em',\n padding: '0 3px',\n borderRadius: 3,\n backgroundColor: 'rgba(255,255,255,0.12)',\n}));\n\nconst AttributesColumnHeader = ({\n directText,\n effectiveText,\n}: {\n directText: ReactNode;\n effectiveText: ReactNode;\n}) => (\n <HeaderRow>\n Attributes\n <SmallHelpButton\n tooltip={\n <HelpBody>\n <HelpSection>\n <HelpHeading>Direct</HelpHeading>\n <HelpText>{directText}</HelpText>\n </HelpSection>\n <HelpSection>\n <HelpHeading>Effective</HelpHeading>\n <HelpText>{effectiveText}</HelpText>\n </HelpSection>\n </HelpBody>\n }\n size=\"small\"\n />\n </HeaderRow>\n);\n\n/** Attributes column mirroring the web app's `buildAttributesColumn`. */\nexport const buildAttributesColumn = ({\n directText,\n effectiveText,\n ...options\n}: {\n directText: ReactNode;\n effectiveText: ReactNode;\n [key: string]: unknown;\n}) =>\n col.custom(\n 'attributes',\n <AttributesColumnHeader\n directText={directText}\n effectiveText={effectiveText}\n />,\n (\n _value: unknown,\n row: { attributes?: unknown; effectiveAttributes?: unknown },\n ) => (\n <AttributesSummaryCell\n direct={row.attributes}\n effective={row.effectiveAttributes}\n />\n ),\n { flex: 2, minWidth: 200, sortable: false, searchable: false, ...options },\n );\n\nconst HeaderRow = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n}));\n\nconst SmallHelpButton = stylin(HelpIconButton)({\n padding: '2px',\n '& svg': { fontSize: 14 },\n});\n\nconst HelpBody = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n maxWidth: 280,\n color: 'inherit',\n}));\n\nconst HelpSection = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.25),\n color: 'inherit',\n}));\n\nconst HelpHeading = stylin('div')(({ theme }: { theme: any }) => ({\n fontSize: theme.typography.pxToRem(11),\n fontWeight: theme.typography.fontWeightBold,\n textTransform: 'uppercase',\n letterSpacing: '0.06em',\n opacity: 0.7,\n}));\n\nconst HelpText = stylin('div')(({ theme }: { theme: any }) => ({\n fontSize: theme.typography.pxToRem(12),\n lineHeight: 1.5,\n opacity: 0.9,\n}));\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import Box from '@massdriver/ui/Box';
|
|
3
|
+
import Chip from '@massdriver/ui/Chip';
|
|
4
|
+
import Tooltip from '@massdriver/ui/Tooltip';
|
|
5
|
+
import Typography from '@massdriver/ui/Typography';
|
|
6
|
+
import stylin from '@massdriver/ui/stylin';
|
|
7
|
+
import { parseMap, formatAttributeValue } from '../utils/attributes.esm.js';
|
|
8
|
+
|
|
9
|
+
const toEntries = (value) => {
|
|
10
|
+
const parsed = parseMap(value);
|
|
11
|
+
return parsed ? Object.entries(parsed) : [];
|
|
12
|
+
};
|
|
13
|
+
const Group = ({
|
|
14
|
+
label,
|
|
15
|
+
entries
|
|
16
|
+
}) => /* @__PURE__ */ jsxs(Section, { children: [
|
|
17
|
+
/* @__PURE__ */ jsxs(SectionHeader, { children: [
|
|
18
|
+
label,
|
|
19
|
+
" (",
|
|
20
|
+
entries.length,
|
|
21
|
+
")"
|
|
22
|
+
] }),
|
|
23
|
+
entries.length === 0 ? /* @__PURE__ */ jsx(EmptyNote, { children: "None" }) : /* @__PURE__ */ jsx(BulletList, { children: entries.map(([key, value]) => /* @__PURE__ */ jsx(BulletItem, { children: `${key}: ${formatAttributeValue(
|
|
24
|
+
value
|
|
25
|
+
)}` }, key)) })
|
|
26
|
+
] });
|
|
27
|
+
const AttributesSummaryCell = ({
|
|
28
|
+
direct,
|
|
29
|
+
effective
|
|
30
|
+
}) => {
|
|
31
|
+
const directEntries = toEntries(direct);
|
|
32
|
+
const effectiveEntries = toEntries(effective);
|
|
33
|
+
if (directEntries.length === 0 && effectiveEntries.length === 0) {
|
|
34
|
+
return /* @__PURE__ */ jsx(MutedText, { variant: "body2", children: "\u2014" });
|
|
35
|
+
}
|
|
36
|
+
return /* @__PURE__ */ jsx(
|
|
37
|
+
Tooltip,
|
|
38
|
+
{
|
|
39
|
+
arrow: true,
|
|
40
|
+
enterDelay: 400,
|
|
41
|
+
placement: "top",
|
|
42
|
+
title: /* @__PURE__ */ jsxs(TooltipBody, { children: [
|
|
43
|
+
/* @__PURE__ */ jsx(Group, { label: "Direct", entries: directEntries }),
|
|
44
|
+
/* @__PURE__ */ jsx(Group, { label: "Effective", entries: effectiveEntries })
|
|
45
|
+
] }),
|
|
46
|
+
children: /* @__PURE__ */ jsx(Anchor, { children: /* @__PURE__ */ jsx(
|
|
47
|
+
Chip,
|
|
48
|
+
{
|
|
49
|
+
size: "small",
|
|
50
|
+
variant: "outlined",
|
|
51
|
+
label: `${directEntries.length} direct \xB7 ${effectiveEntries.length} effective`
|
|
52
|
+
}
|
|
53
|
+
) })
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
const MutedText = stylin(Typography)(({ theme }) => ({
|
|
58
|
+
color: theme.palette.text.secondary
|
|
59
|
+
}));
|
|
60
|
+
const Anchor = stylin("span")({ display: "inline-flex" });
|
|
61
|
+
const TooltipBody = stylin(Box)(({ theme }) => ({
|
|
62
|
+
display: "flex",
|
|
63
|
+
flexDirection: "column",
|
|
64
|
+
gap: theme.spacing(1),
|
|
65
|
+
minWidth: 200,
|
|
66
|
+
color: "inherit"
|
|
67
|
+
}));
|
|
68
|
+
const Section = stylin(Box)(({ theme }) => ({
|
|
69
|
+
display: "flex",
|
|
70
|
+
flexDirection: "column",
|
|
71
|
+
gap: theme.spacing(0.25),
|
|
72
|
+
color: "inherit"
|
|
73
|
+
}));
|
|
74
|
+
const SectionHeader = stylin("div")(({ theme }) => ({
|
|
75
|
+
fontSize: theme.typography.pxToRem(10),
|
|
76
|
+
fontWeight: theme.typography.fontWeightBold,
|
|
77
|
+
textTransform: "uppercase",
|
|
78
|
+
letterSpacing: "0.06em",
|
|
79
|
+
opacity: 0.7,
|
|
80
|
+
color: "inherit"
|
|
81
|
+
}));
|
|
82
|
+
const BulletList = stylin("ul")(({ theme }) => ({
|
|
83
|
+
margin: 0,
|
|
84
|
+
paddingLeft: theme.spacing(2),
|
|
85
|
+
display: "flex",
|
|
86
|
+
flexDirection: "column",
|
|
87
|
+
gap: theme.spacing(0.25),
|
|
88
|
+
color: "inherit"
|
|
89
|
+
}));
|
|
90
|
+
const BulletItem = stylin("li")(({ theme }) => ({
|
|
91
|
+
fontSize: theme.typography.body2.fontSize,
|
|
92
|
+
lineHeight: 1.5,
|
|
93
|
+
color: "inherit"
|
|
94
|
+
}));
|
|
95
|
+
const EmptyNote = stylin("div")(({ theme }) => ({
|
|
96
|
+
fontSize: theme.typography.pxToRem(12),
|
|
97
|
+
fontStyle: "italic",
|
|
98
|
+
opacity: 0.7,
|
|
99
|
+
color: "inherit"
|
|
100
|
+
}));
|
|
101
|
+
|
|
102
|
+
export { AttributesSummaryCell };
|
|
103
|
+
//# sourceMappingURL=AttributesSummaryCell.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributesSummaryCell.esm.js","sources":["../../src/components/AttributesSummaryCell.tsx"],"sourcesContent":["import Box from '@massdriver/ui/Box';\nimport Chip from '@massdriver/ui/Chip';\nimport Tooltip from '@massdriver/ui/Tooltip';\nimport Typography from '@massdriver/ui/Typography';\nimport stylin from '@massdriver/ui/stylin';\nimport { formatAttributeValue, parseMap } from '../utils/attributes';\n\nconst toEntries = (value: unknown): [string, unknown][] => {\n const parsed = parseMap(value);\n return parsed ? Object.entries(parsed) : [];\n};\n\nconst Group = ({\n label,\n entries,\n}: {\n label: string;\n entries: [string, unknown][];\n}) => (\n <Section>\n <SectionHeader>\n {label} ({entries.length})\n </SectionHeader>\n {entries.length === 0 ? (\n <EmptyNote>None</EmptyNote>\n ) : (\n <BulletList>\n {entries.map(([key, value]) => (\n <BulletItem key={key}>{`${key}: ${formatAttributeValue(\n value,\n )}`}</BulletItem>\n ))}\n </BulletList>\n )}\n </Section>\n);\n\n/**\n * Read-only attributes cell mirroring the web app: a compact\n * \"N direct · M effective\" chip with a tooltip listing the entries.\n */\nexport const AttributesSummaryCell = ({\n direct,\n effective,\n}: {\n direct?: unknown;\n effective?: unknown;\n}) => {\n const directEntries = toEntries(direct);\n const effectiveEntries = toEntries(effective);\n\n if (directEntries.length === 0 && effectiveEntries.length === 0) {\n return <MutedText variant=\"body2\">—</MutedText>;\n }\n\n return (\n <Tooltip\n arrow\n enterDelay={400}\n placement=\"top\"\n title={\n <TooltipBody>\n <Group label=\"Direct\" entries={directEntries} />\n <Group label=\"Effective\" entries={effectiveEntries} />\n </TooltipBody>\n }\n >\n <Anchor>\n <Chip\n size=\"small\"\n variant=\"outlined\"\n label={`${directEntries.length} direct · ${effectiveEntries.length} effective`}\n />\n </Anchor>\n </Tooltip>\n );\n};\n\nconst MutedText = stylin(Typography)(({ theme }: { theme: any }) => ({\n color: theme.palette.text.secondary,\n}));\n\nconst Anchor = stylin('span')({ display: 'inline-flex' });\n\nconst TooltipBody = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n minWidth: 200,\n color: 'inherit',\n}));\n\nconst Section = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.25),\n color: 'inherit',\n}));\n\nconst SectionHeader = stylin('div')(({ theme }: { theme: any }) => ({\n fontSize: theme.typography.pxToRem(10),\n fontWeight: theme.typography.fontWeightBold,\n textTransform: 'uppercase',\n letterSpacing: '0.06em',\n opacity: 0.7,\n color: 'inherit',\n}));\n\nconst BulletList = stylin('ul')(({ theme }: { theme: any }) => ({\n margin: 0,\n paddingLeft: theme.spacing(2),\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.25),\n color: 'inherit',\n}));\n\nconst BulletItem = stylin('li')(({ theme }: { theme: any }) => ({\n fontSize: theme.typography.body2.fontSize,\n lineHeight: 1.5,\n color: 'inherit',\n}));\n\nconst EmptyNote = stylin('div')(({ theme }: { theme: any }) => ({\n fontSize: theme.typography.pxToRem(12),\n fontStyle: 'italic',\n opacity: 0.7,\n color: 'inherit',\n}));\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import IconTile from '@massdriver/ui/IconTile';
|
|
3
|
+
import useAuthedSvg from '../hooks/useAuthedSvg.esm.js';
|
|
4
|
+
|
|
5
|
+
const AuthedIcon = ({
|
|
6
|
+
url,
|
|
7
|
+
alt,
|
|
8
|
+
size = "small",
|
|
9
|
+
variant,
|
|
10
|
+
fallback
|
|
11
|
+
}) => {
|
|
12
|
+
const { svg } = useAuthedSvg(url);
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
IconTile,
|
|
15
|
+
{
|
|
16
|
+
svg,
|
|
17
|
+
alt,
|
|
18
|
+
size,
|
|
19
|
+
variant,
|
|
20
|
+
fallback
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { AuthedIcon, AuthedIcon as default };
|
|
26
|
+
//# sourceMappingURL=AuthedIcon.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthedIcon.esm.js","sources":["../../src/components/AuthedIcon.tsx"],"sourcesContent":["import IconTile from '@massdriver/ui/IconTile';\nimport { ReactNode } from 'react';\nimport useAuthedSvg from '../hooks/useAuthedSvg';\n\n// Ported from apps/web/shared/components/AuthedIcon.js — renders an\n// auth-guarded SVG (e.g. an OCI repo's brand icon) in an IconTile, falling\n// back while loading or when the fetch fails.\nexport const AuthedIcon = ({\n url,\n alt,\n size = 'small',\n variant,\n fallback,\n}: {\n url?: string | null;\n alt?: string;\n size?: string;\n variant?: string;\n fallback?: ReactNode;\n}) => {\n const { svg } = useAuthedSvg(url);\n\n return (\n <IconTile\n svg={svg}\n alt={alt}\n size={size}\n variant={variant}\n fallback={fallback}\n />\n );\n};\n\nexport default AuthedIcon;\n"],"names":[],"mappings":";;;;AAOO,MAAM,aAAa,CAAC;AAAA,EACzB,GAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,OAAA;AAAA,EACA;AACF,CAAA,KAMM;AACJ,EAAA,MAAM,EAAE,GAAA,EAAI,GAAI,YAAA,CAAa,GAAG,CAAA;AAEhC,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import Box from '@massdriver/ui/Box';
|
|
3
|
+
import Typography from '@massdriver/ui/Typography';
|
|
4
|
+
import stylin from '@massdriver/ui/stylin';
|
|
5
|
+
import { denormalizeConditionsFromWire } from '../utils/conditions.esm.js';
|
|
6
|
+
|
|
7
|
+
const ConditionsCell = ({
|
|
8
|
+
conditions,
|
|
9
|
+
wildcardLabel = "Applies to everything"
|
|
10
|
+
}) => {
|
|
11
|
+
const parsed = denormalizeConditionsFromWire(conditions);
|
|
12
|
+
const entries = Object.entries(parsed);
|
|
13
|
+
return entries.length === 0 ? /* @__PURE__ */ jsx(Wildcard, { variant: "body2", color: "text.secondary", children: wildcardLabel }) : /* @__PURE__ */ jsx(Wrapper, { children: entries.map(([key, value]) => /* @__PURE__ */ jsxs(ConditionPiece, { children: [
|
|
14
|
+
/* @__PURE__ */ jsx(Key, { children: key }),
|
|
15
|
+
/* @__PURE__ */ jsx(Equals, { children: Array.isArray(value) ? "\u2208" : "=" }),
|
|
16
|
+
/* @__PURE__ */ jsx(Value, { children: Array.isArray(value) ? `[${value.join(", ")}]` : String(value) })
|
|
17
|
+
] }, key)) });
|
|
18
|
+
};
|
|
19
|
+
const Wrapper = stylin(Box)(({ theme }) => ({
|
|
20
|
+
display: "flex",
|
|
21
|
+
flexDirection: "column",
|
|
22
|
+
gap: theme.spacing(0.25)
|
|
23
|
+
}));
|
|
24
|
+
const ConditionPiece = stylin(Box)(({ theme }) => ({
|
|
25
|
+
display: "inline-flex",
|
|
26
|
+
alignItems: "center",
|
|
27
|
+
gap: theme.spacing(0.5),
|
|
28
|
+
fontSize: theme.typography.body2.fontSize
|
|
29
|
+
}));
|
|
30
|
+
const Key = stylin(Typography)(({ theme }) => ({
|
|
31
|
+
fontFamily: theme.typography.fontFamilyMono ?? "monospace",
|
|
32
|
+
fontSize: theme.typography.body2.fontSize,
|
|
33
|
+
color: theme.palette.text.primary
|
|
34
|
+
}));
|
|
35
|
+
const Equals = stylin(Typography)(({ theme }) => ({
|
|
36
|
+
color: theme.palette.text.secondary,
|
|
37
|
+
fontSize: theme.typography.body2.fontSize
|
|
38
|
+
}));
|
|
39
|
+
const Value = stylin(Typography)(({ theme }) => ({
|
|
40
|
+
color: theme.palette.text.primary,
|
|
41
|
+
fontSize: theme.typography.body2.fontSize
|
|
42
|
+
}));
|
|
43
|
+
const Wildcard = stylin(Typography)({
|
|
44
|
+
fontStyle: "italic"
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export { ConditionsCell };
|
|
48
|
+
//# sourceMappingURL=ConditionsCell.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConditionsCell.esm.js","sources":["../../src/components/ConditionsCell.tsx"],"sourcesContent":["import Box from '@massdriver/ui/Box';\nimport Typography from '@massdriver/ui/Typography';\nimport stylin from '@massdriver/ui/stylin';\nimport { denormalizeConditionsFromWire } from '../utils/conditions';\n\n// Ported from apps/web/shared/components/ConditionsCell.js\n\n/** Renders a grant's recipient conditions as `key = value` / `key ∈ [..]` rows. */\nexport const ConditionsCell = ({\n conditions,\n wildcardLabel = 'Applies to everything',\n}: {\n conditions: unknown;\n wildcardLabel?: string;\n}) => {\n const parsed = denormalizeConditionsFromWire(conditions);\n const entries = Object.entries(parsed);\n\n return entries.length === 0 ? (\n <Wildcard variant=\"body2\" color=\"text.secondary\">\n {wildcardLabel}\n </Wildcard>\n ) : (\n <Wrapper>\n {entries.map(([key, value]) => (\n <ConditionPiece key={key}>\n <Key>{key}</Key>\n <Equals>{Array.isArray(value) ? '∈' : '='}</Equals>\n <Value>\n {Array.isArray(value) ? `[${value.join(', ')}]` : String(value)}\n </Value>\n </ConditionPiece>\n ))}\n </Wrapper>\n );\n};\n\nconst Wrapper = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.25),\n}));\n\nconst ConditionPiece = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n fontSize: theme.typography.body2.fontSize,\n}));\n\nconst Key = stylin(Typography)(({ theme }: { theme: any }) => ({\n fontFamily: theme.typography.fontFamilyMono ?? 'monospace',\n fontSize: theme.typography.body2.fontSize,\n color: theme.palette.text.primary,\n}));\n\nconst Equals = stylin(Typography)(({ theme }: { theme: any }) => ({\n color: theme.palette.text.secondary,\n fontSize: theme.typography.body2.fontSize,\n}));\n\nconst Value = stylin(Typography)(({ theme }: { theme: any }) => ({\n color: theme.palette.text.primary,\n fontSize: theme.typography.body2.fontSize,\n}));\n\nconst Wildcard = stylin(Typography)({\n fontStyle: 'italic',\n});\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,UAAA;AAAA,EACA,aAAA,GAAgB;AAClB,CAAA,KAGM;AACJ,EAAA,MAAM,MAAA,GAAS,8BAA8B,UAAU,CAAA;AACvD,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AAErC,EAAA,OAAO,OAAA,CAAQ,WAAW,CAAA,mBACxB,GAAA,CAAC,YAAS,OAAA,EAAQ,OAAA,EAAQ,OAAM,gBAAA,EAC7B,QAAA,EAAA,aAAA,EACH,oBAEA,GAAA,CAAC,OAAA,EAAA,EACE,kBAAQ,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,qBACvB,IAAA,CAAC,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,OAAK,QAAA,EAAA,GAAA,EAAI,CAAA;AAAA,wBACT,MAAA,EAAA,EAAQ,QAAA,EAAA,KAAA,CAAM,QAAQ,KAAK,CAAA,GAAI,WAAM,GAAA,EAAI,CAAA;AAAA,oBAC1C,GAAA,CAAC,KAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,CAAA,CAAA,EAAI,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA,GAAM,MAAA,CAAO,KAAK,CAAA,EAChE;AAAA,GAAA,EAAA,EALmB,GAMrB,CACD,CAAA,EACH,CAAA;AAEJ;AAEA,MAAM,UAAU,MAAA,CAAO,GAAG,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EAC1D,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,IAAI;AACzB,CAAA,CAAE,CAAA;AAEF,MAAM,iBAAiB,MAAA,CAAO,GAAG,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EACjE,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,EACtB,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM;AACnC,CAAA,CAAE,CAAA;AAEF,MAAM,MAAM,MAAA,CAAO,UAAU,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EAC7D,UAAA,EAAY,KAAA,CAAM,UAAA,CAAW,cAAA,IAAkB,WAAA;AAAA,EAC/C,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,QAAA;AAAA,EACjC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK;AAC5B,CAAA,CAAE,CAAA;AAEF,MAAM,SAAS,MAAA,CAAO,UAAU,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EAChE,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,EAC1B,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM;AACnC,CAAA,CAAE,CAAA;AAEF,MAAM,QAAQ,MAAA,CAAO,UAAU,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EAC/D,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,EAC1B,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM;AACnC,CAAA,CAAE,CAAA;AAEF,MAAM,QAAA,GAAW,MAAA,CAAO,UAAU,CAAA,CAAE;AAAA,EAClC,SAAA,EAAW;AACb,CAAC,CAAA;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import Button from '@massdriver/ui/Button';
|
|
3
|
+
import Tooltip from '@massdriver/ui/Tooltip';
|
|
4
|
+
import stylin from '@massdriver/ui/stylin';
|
|
5
|
+
|
|
6
|
+
const DisabledAction = ({
|
|
7
|
+
label,
|
|
8
|
+
tooltip,
|
|
9
|
+
variant = "outlined",
|
|
10
|
+
size,
|
|
11
|
+
color,
|
|
12
|
+
startIcon,
|
|
13
|
+
children
|
|
14
|
+
}) => /* @__PURE__ */ jsx(Tooltip, { title: tooltip, placement: "top", children: /* @__PURE__ */ jsx(Wrap, { children: /* @__PURE__ */ jsx(
|
|
15
|
+
Button,
|
|
16
|
+
{
|
|
17
|
+
variant,
|
|
18
|
+
size,
|
|
19
|
+
color,
|
|
20
|
+
startIcon,
|
|
21
|
+
disabled: true,
|
|
22
|
+
children: label ?? children
|
|
23
|
+
}
|
|
24
|
+
) }) });
|
|
25
|
+
const Wrap = stylin("span")({
|
|
26
|
+
display: "inline-flex"
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export { DisabledAction, DisabledAction as default };
|
|
30
|
+
//# sourceMappingURL=DisabledAction.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisabledAction.esm.js","sources":["../../src/components/DisabledAction.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport Button from '@massdriver/ui/Button';\nimport Tooltip from '@massdriver/ui/Tooltip';\nimport stylin from '@massdriver/ui/stylin';\n\n/**\n * A greyed-out (disabled) action control with an explanatory tooltip, for\n * mutating actions the app offers that this read-only mini-app cannot perform.\n * Mirrors the disabled \"Propose\" button pattern — the affordance stays visible\n * so the UI matches the web app, but it's non-interactive and the tooltip points\n * the user to Massdriver. The span wrapper lets the tooltip fire on a disabled\n * button (MUI swallows events on disabled elements otherwise).\n */\nexport const DisabledAction = ({\n label,\n tooltip,\n variant = 'outlined',\n size,\n color,\n startIcon,\n children,\n}: {\n label?: ReactNode;\n tooltip: string;\n variant?: 'text' | 'outlined' | 'contained';\n size?: 'small' | 'medium' | 'large';\n color?: string;\n startIcon?: ReactNode;\n children?: ReactNode;\n}) => (\n <Tooltip title={tooltip} placement=\"top\">\n <Wrap>\n <Button\n variant={variant}\n size={size}\n color={color}\n startIcon={startIcon}\n disabled\n >\n {label ?? children}\n </Button>\n </Wrap>\n </Tooltip>\n);\n\nexport default DisabledAction;\n\nconst Wrap = stylin('span')({\n display: 'inline-flex',\n});\n"],"names":[],"mappings":";;;;;AAaO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,UAAA;AAAA,EACV,IAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,yBASG,OAAA,EAAA,EAAQ,KAAA,EAAO,SAAS,SAAA,EAAU,KAAA,EACjC,8BAAC,IAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,OAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA,EAAQ,IAAA;AAAA,IAEP,QAAA,EAAA,KAAA,IAAS;AAAA;AACZ,CAAA,EACF,CAAA,EACF;AAKF,MAAM,IAAA,GAAO,MAAA,CAAO,MAAM,CAAA,CAAE;AAAA,EAC1B,OAAA,EAAS;AACX,CAAC,CAAA;;;;"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { EmptyState, Progress, ResponseErrorPanel, Table, Link } from '@backstage/core-components';
|
|
3
|
+
import { useApi } from '@backstage/frontend-plugin-api';
|
|
4
|
+
import { useEntity } from '@backstage/plugin-catalog-react';
|
|
5
|
+
import { instanceUrl, environmentUrl, projectUrl } from '@massdriver/backstage-plugin-common';
|
|
6
|
+
import { massdriverApiRef } from '../../api.esm.js';
|
|
7
|
+
import { getMassdriverScope } from '../../entity.esm.js';
|
|
8
|
+
import { useMassdriverInstances } from '../../useInstances.esm.js';
|
|
9
|
+
import { InstanceStatusIndicator } from '../InstanceStatusIndicator.esm.js';
|
|
10
|
+
|
|
11
|
+
const columns = (appUrl, orgId) => [
|
|
12
|
+
{
|
|
13
|
+
title: "Instance",
|
|
14
|
+
field: "id",
|
|
15
|
+
render: (row) => /* @__PURE__ */ jsx(Link, { to: instanceUrl(appUrl, orgId, row.id), children: row.id })
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
title: "Status",
|
|
19
|
+
field: "status",
|
|
20
|
+
render: (row) => /* @__PURE__ */ jsx(InstanceStatusIndicator, { status: row.status })
|
|
21
|
+
},
|
|
22
|
+
{ title: "Resolved version", field: "resolvedVersion" },
|
|
23
|
+
{ title: "Deployed version", field: "deployedVersion" }
|
|
24
|
+
];
|
|
25
|
+
const scopeDeepLink = (scope, appUrl, orgId) => {
|
|
26
|
+
switch (scope.kind) {
|
|
27
|
+
case "project":
|
|
28
|
+
return projectUrl(appUrl, orgId, scope.projectId);
|
|
29
|
+
case "environment":
|
|
30
|
+
return environmentUrl(appUrl, orgId, scope.environmentId);
|
|
31
|
+
case "instance":
|
|
32
|
+
return instanceUrl(appUrl, orgId, scope.instanceId);
|
|
33
|
+
default:
|
|
34
|
+
return appUrl;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const EntityMassdriverContent = () => {
|
|
38
|
+
const { entity } = useEntity();
|
|
39
|
+
const api = useApi(massdriverApiRef);
|
|
40
|
+
const scope = getMassdriverScope(entity);
|
|
41
|
+
const orgId = scope?.orgId || api.organizationId;
|
|
42
|
+
const { value: instances, loading, error } = useMassdriverInstances(scope);
|
|
43
|
+
if (!scope) {
|
|
44
|
+
return /* @__PURE__ */ jsx(
|
|
45
|
+
EmptyState,
|
|
46
|
+
{
|
|
47
|
+
missing: "info",
|
|
48
|
+
title: "Not a Massdriver entity",
|
|
49
|
+
description: "This entity has no Massdriver annotations."
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
if (loading) {
|
|
54
|
+
return /* @__PURE__ */ jsx(Progress, {});
|
|
55
|
+
}
|
|
56
|
+
if (error) {
|
|
57
|
+
return /* @__PURE__ */ jsx(ResponseErrorPanel, { error });
|
|
58
|
+
}
|
|
59
|
+
return /* @__PURE__ */ jsx(
|
|
60
|
+
Table,
|
|
61
|
+
{
|
|
62
|
+
title: "Massdriver instances",
|
|
63
|
+
options: { search: true, paging: (instances?.length ?? 0) > 20 },
|
|
64
|
+
columns: columns(api.appUrl, orgId),
|
|
65
|
+
data: instances ?? [],
|
|
66
|
+
emptyContent: /* @__PURE__ */ jsx(
|
|
67
|
+
EmptyState,
|
|
68
|
+
{
|
|
69
|
+
missing: "data",
|
|
70
|
+
title: "No instances",
|
|
71
|
+
description: "No Massdriver instances were found for this entity.",
|
|
72
|
+
action: /* @__PURE__ */ jsx(Link, { to: scopeDeepLink(scope, api.appUrl, orgId), children: "Open in Massdriver" })
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export { EntityMassdriverContent };
|
|
80
|
+
//# sourceMappingURL=EntityMassdriverContent.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityMassdriverContent.esm.js","sources":["../../../src/components/EntityMassdriverContent/EntityMassdriverContent.tsx"],"sourcesContent":["import {\n EmptyState,\n Link,\n Progress,\n ResponseErrorPanel,\n Table,\n TableColumn,\n} from '@backstage/core-components';\nimport { useApi } from '@backstage/frontend-plugin-api';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport {\n environmentUrl,\n instanceUrl,\n projectUrl,\n} from '@massdriver/backstage-plugin-common';\nimport { massdriverApiRef } from '../../api';\nimport { getMassdriverScope, MassdriverScope } from '../../entity';\nimport { InstanceRow } from '../../queries';\nimport { useMassdriverInstances } from '../../useInstances';\nimport { InstanceStatusIndicator } from '../InstanceStatusIndicator';\n\nconst columns = (appUrl: string, orgId: string): TableColumn<InstanceRow>[] => [\n {\n title: 'Instance',\n field: 'id',\n render: row => (\n <Link to={instanceUrl(appUrl, orgId, row.id)}>{row.id}</Link>\n ),\n },\n {\n title: 'Status',\n field: 'status',\n render: row => <InstanceStatusIndicator status={row.status} />,\n },\n { title: 'Resolved version', field: 'resolvedVersion' },\n { title: 'Deployed version', field: 'deployedVersion' },\n];\n\nconst scopeDeepLink = (\n scope: MassdriverScope,\n appUrl: string,\n orgId: string,\n): string => {\n switch (scope.kind) {\n case 'project':\n return projectUrl(appUrl, orgId, scope.projectId);\n case 'environment':\n return environmentUrl(appUrl, orgId, scope.environmentId);\n case 'instance':\n return instanceUrl(appUrl, orgId, scope.instanceId);\n default:\n return appUrl;\n }\n};\n\n/**\n * Entity content tab that lists the Massdriver instances for the entity's\n * scope (project or environment) or the details of a single instance.\n *\n * @public\n */\nexport const EntityMassdriverContent = () => {\n const { entity } = useEntity();\n const api = useApi(massdriverApiRef);\n const scope = getMassdriverScope(entity);\n const orgId = scope?.orgId || api.organizationId;\n const { value: instances, loading, error } = useMassdriverInstances(scope);\n\n if (!scope) {\n return (\n <EmptyState\n missing=\"info\"\n title=\"Not a Massdriver entity\"\n description=\"This entity has no Massdriver annotations.\"\n />\n );\n }\n\n if (loading) {\n return <Progress />;\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n return (\n <Table<InstanceRow>\n title=\"Massdriver instances\"\n options={{ search: true, paging: (instances?.length ?? 0) > 20 }}\n columns={columns(api.appUrl, orgId)}\n data={instances ?? []}\n emptyContent={\n <EmptyState\n missing=\"data\"\n title=\"No instances\"\n description=\"No Massdriver instances were found for this entity.\"\n action={\n <Link to={scopeDeepLink(scope, api.appUrl, orgId)}>\n Open in Massdriver\n </Link>\n }\n />\n }\n />\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|