@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,30 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import Box from '@massdriver/ui/Box';
|
|
3
|
+
import Stack from '@massdriver/ui/Stack';
|
|
4
|
+
import Typography from '@massdriver/ui/Typography';
|
|
5
|
+
import stylin from '@massdriver/ui/stylin';
|
|
6
|
+
|
|
7
|
+
const RepoTabHeader = ({
|
|
8
|
+
title,
|
|
9
|
+
description,
|
|
10
|
+
actions
|
|
11
|
+
}) => /* @__PURE__ */ jsxs(Wrapper, { children: [
|
|
12
|
+
/* @__PURE__ */ jsxs(Heading, { children: [
|
|
13
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: title }),
|
|
14
|
+
description ? /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "text.secondary", children: description }) : null
|
|
15
|
+
] }),
|
|
16
|
+
actions ? /* @__PURE__ */ jsx(Stack, { direction: "row", spacing: 1.5, flexWrap: "wrap", useFlexGap: true, children: actions }) : null
|
|
17
|
+
] });
|
|
18
|
+
const Wrapper = stylin(Box)(({ theme }) => ({
|
|
19
|
+
display: "flex",
|
|
20
|
+
flexDirection: "column",
|
|
21
|
+
gap: theme.spacing(2)
|
|
22
|
+
}));
|
|
23
|
+
const Heading = stylin(Box)(({ theme }) => ({
|
|
24
|
+
display: "flex",
|
|
25
|
+
flexDirection: "column",
|
|
26
|
+
gap: theme.spacing(0.5)
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
export { RepoTabHeader };
|
|
30
|
+
//# sourceMappingURL=RepoTabHeader.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepoTabHeader.esm.js","sources":["../../../src/features/repo/RepoTabHeader.tsx"],"sourcesContent":["import Box from '@massdriver/ui/Box';\nimport Stack from '@massdriver/ui/Stack';\nimport Typography from '@massdriver/ui/Typography';\nimport stylin from '@massdriver/ui/stylin';\nimport { ReactNode } from 'react';\n\n// Ported from apps/web/shared/components/TabHeader.js — a tab's title, optional\n// description, and optional trailing actions row.\nexport const RepoTabHeader = ({\n title,\n description,\n actions,\n}: {\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n}) => (\n <Wrapper>\n <Heading>\n <Typography variant=\"h6\">{title}</Typography>\n {description ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {description}\n </Typography>\n ) : null}\n </Heading>\n {actions ? (\n <Stack direction=\"row\" spacing={1.5} flexWrap=\"wrap\" useFlexGap>\n {actions}\n </Stack>\n ) : null}\n </Wrapper>\n);\n\nexport default RepoTabHeader;\n\nconst Wrapper = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n}));\n\nconst Heading = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.5),\n}));\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,KAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,0BAKG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAA,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,IAAA,EAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC/B,WAAA,uBACE,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAQ,KAAA,EAAM,gBAAA,EAC/B,uBACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAAA,EACC,OAAA,mBACC,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,KAAA,EAAM,OAAA,EAAS,GAAA,EAAK,QAAA,EAAS,MAAA,EAAO,UAAA,EAAU,IAAA,EAC5D,QAAA,EAAA,OAAA,EACH,CAAA,GACE;AAAA,CAAA,EACN;AAKF,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,CAAC;AACtB,CAAA,CAAE,CAAA;AAEF,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,GAAG;AACxB,CAAA,CAAE,CAAA;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import Box from '@massdriver/ui/Box';
|
|
3
|
+
import stylin from '@massdriver/ui/stylin';
|
|
4
|
+
|
|
5
|
+
const RepoTabLayout = ({ children }) => /* @__PURE__ */ jsx(Wrapper, { children });
|
|
6
|
+
const Wrapper = stylin(Box)(({ theme }) => ({
|
|
7
|
+
padding: theme.spacing(4),
|
|
8
|
+
maxWidth: theme.spacing(160),
|
|
9
|
+
marginLeft: "auto",
|
|
10
|
+
marginRight: "auto",
|
|
11
|
+
width: "100%",
|
|
12
|
+
display: "flex",
|
|
13
|
+
flexDirection: "column",
|
|
14
|
+
gap: theme.spacing(3)
|
|
15
|
+
}));
|
|
16
|
+
|
|
17
|
+
export { RepoTabLayout };
|
|
18
|
+
//# sourceMappingURL=RepoTabLayout.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepoTabLayout.esm.js","sources":["../../../src/features/repo/RepoTabLayout.tsx"],"sourcesContent":["import Box from '@massdriver/ui/Box';\nimport stylin from '@massdriver/ui/stylin';\nimport { ReactNode } from 'react';\n\n// Ported from apps/web/shared/components/SettingsTabLayout.js — the padded,\n// max-width, vertically-stacked wrapper every repo tab section renders inside.\nexport const RepoTabLayout = ({ children }: { children: ReactNode }) => (\n <Wrapper>{children}</Wrapper>\n);\n\nexport default RepoTabLayout;\n\nconst Wrapper = stylin(Box)(({ theme }: { theme: any }) => ({\n padding: theme.spacing(4),\n maxWidth: theme.spacing(160),\n marginLeft: 'auto',\n marginRight: 'auto',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(3),\n}));\n"],"names":[],"mappings":";;;;AAMO,MAAM,gBAAgB,CAAC,EAAE,UAAS,qBACvC,GAAA,CAAC,WAAS,QAAA,EAAS;AAKrB,MAAM,UAAU,MAAA,CAAO,GAAG,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EAC1D,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,EACxB,QAAA,EAAU,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,UAAA,EAAY,MAAA;AAAA,EACZ,WAAA,EAAa,MAAA;AAAA,EACb,KAAA,EAAO,MAAA;AAAA,EACP,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AACtB,CAAA,CAAE,CAAA;;;;"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useMemo } from 'react';
|
|
3
|
+
import Box from '@massdriver/ui/Box';
|
|
4
|
+
import Button from '@massdriver/ui/Button';
|
|
5
|
+
import Divider from '@massdriver/ui/Divider';
|
|
6
|
+
import Menu, { MenuItem } from '@massdriver/ui/Menu';
|
|
7
|
+
import Switch from '@massdriver/ui/Switch';
|
|
8
|
+
import Typography from '@massdriver/ui/Typography';
|
|
9
|
+
import ExpandMoreIcon from '@massdriver/ui/icons/ExpandMoreIcon';
|
|
10
|
+
import stylin from '@massdriver/ui/stylin';
|
|
11
|
+
import { ALL_VERSIONS } from './resolveVersion.esm.js';
|
|
12
|
+
|
|
13
|
+
const isDevTag = (tag) => /-dev\./.test(tag);
|
|
14
|
+
const isDevChannel = (channel) => Boolean(channel?.name?.includes("+dev"));
|
|
15
|
+
const buildTriggerLabel = (currentVersion, releaseChannels) => {
|
|
16
|
+
if (!currentVersion) return "\u2014";
|
|
17
|
+
if (currentVersion === ALL_VERSIONS) return "All versions";
|
|
18
|
+
const matchingChannel = releaseChannels.find(
|
|
19
|
+
(channel) => channel.tag === currentVersion
|
|
20
|
+
);
|
|
21
|
+
return matchingChannel ? `${matchingChannel.name} (v${currentVersion})` : `v${currentVersion}`;
|
|
22
|
+
};
|
|
23
|
+
const RepoVersionSelect = ({
|
|
24
|
+
repo,
|
|
25
|
+
currentVersion,
|
|
26
|
+
onChange,
|
|
27
|
+
disabled = false
|
|
28
|
+
}) => {
|
|
29
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
|
30
|
+
const [showDevChannels, setShowDevChannels] = useState(false);
|
|
31
|
+
const [showDevVersions, setShowDevVersions] = useState(false);
|
|
32
|
+
const allChannels = useMemo(
|
|
33
|
+
() => (repo?.releaseChannels?.items ?? []).filter(Boolean),
|
|
34
|
+
[repo]
|
|
35
|
+
);
|
|
36
|
+
const releaseChannels = useMemo(
|
|
37
|
+
() => showDevChannels ? allChannels : allChannels.filter((channel) => !isDevChannel(channel)),
|
|
38
|
+
[allChannels, showDevChannels]
|
|
39
|
+
);
|
|
40
|
+
const allTags = useMemo(
|
|
41
|
+
() => (repo?.tags?.items ?? []).filter(Boolean),
|
|
42
|
+
[repo]
|
|
43
|
+
);
|
|
44
|
+
const tags = useMemo(
|
|
45
|
+
() => showDevVersions ? allTags : allTags.filter((tag) => !isDevTag(tag.tag)),
|
|
46
|
+
[allTags, showDevVersions]
|
|
47
|
+
);
|
|
48
|
+
const triggerLabel = buildTriggerLabel(currentVersion, allChannels);
|
|
49
|
+
const open = Boolean(anchorEl);
|
|
50
|
+
const onSelect = (nextVersion) => {
|
|
51
|
+
setAnchorEl(null);
|
|
52
|
+
if (nextVersion !== currentVersion) onChange?.(nextVersion);
|
|
53
|
+
};
|
|
54
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
55
|
+
/* @__PURE__ */ jsx(
|
|
56
|
+
TriggerButton,
|
|
57
|
+
{
|
|
58
|
+
variant: "outlined",
|
|
59
|
+
color: "inherit",
|
|
60
|
+
onClick: (event) => setAnchorEl(event.currentTarget),
|
|
61
|
+
endIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
|
|
62
|
+
disabled: disabled || !repo,
|
|
63
|
+
"aria-haspopup": "menu",
|
|
64
|
+
"aria-expanded": open || void 0,
|
|
65
|
+
children: triggerLabel
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
/* @__PURE__ */ jsxs(
|
|
69
|
+
Menu,
|
|
70
|
+
{
|
|
71
|
+
anchorEl,
|
|
72
|
+
open,
|
|
73
|
+
onClose: () => setAnchorEl(null),
|
|
74
|
+
MenuListProps: { dense: true },
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ jsx(
|
|
77
|
+
AllVersionsItem,
|
|
78
|
+
{
|
|
79
|
+
selected: currentVersion === ALL_VERSIONS,
|
|
80
|
+
onClick: () => onSelect(ALL_VERSIONS),
|
|
81
|
+
children: "All versions"
|
|
82
|
+
}
|
|
83
|
+
),
|
|
84
|
+
/* @__PURE__ */ jsx(Divider, {}),
|
|
85
|
+
/* @__PURE__ */ jsx(SectionHeader, { variant: "caption", color: "text.secondary", children: "Release Channels" }),
|
|
86
|
+
/* @__PURE__ */ jsxs(ToggleRow, { children: [
|
|
87
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body2", color: "text.secondary", children: "Show development channels" }),
|
|
88
|
+
/* @__PURE__ */ jsx(
|
|
89
|
+
Switch,
|
|
90
|
+
{
|
|
91
|
+
size: "small",
|
|
92
|
+
checked: showDevChannels,
|
|
93
|
+
onChange: (event) => setShowDevChannels(event.target.checked),
|
|
94
|
+
inputProps: { "aria-label": "Show development channels" }
|
|
95
|
+
}
|
|
96
|
+
)
|
|
97
|
+
] }),
|
|
98
|
+
releaseChannels.length > 0 ? releaseChannels.map((channel) => /* @__PURE__ */ jsxs(
|
|
99
|
+
IndentedItem,
|
|
100
|
+
{
|
|
101
|
+
selected: currentVersion === channel.tag,
|
|
102
|
+
onClick: () => onSelect(channel.tag),
|
|
103
|
+
children: [
|
|
104
|
+
channel.name,
|
|
105
|
+
" (v",
|
|
106
|
+
channel.tag,
|
|
107
|
+
")"
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
channel.name
|
|
111
|
+
)) : /* @__PURE__ */ jsx(EmptyTag, { variant: "body2", color: "text.secondary", children: "No release channels to show" }),
|
|
112
|
+
/* @__PURE__ */ jsx(Divider, {}),
|
|
113
|
+
/* @__PURE__ */ jsx(SectionHeader, { variant: "caption", color: "text.secondary", children: "Versions" }),
|
|
114
|
+
/* @__PURE__ */ jsxs(ToggleRow, { children: [
|
|
115
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body2", color: "text.secondary", children: "Show development versions" }),
|
|
116
|
+
/* @__PURE__ */ jsx(
|
|
117
|
+
Switch,
|
|
118
|
+
{
|
|
119
|
+
size: "small",
|
|
120
|
+
checked: showDevVersions,
|
|
121
|
+
onChange: (event) => setShowDevVersions(event.target.checked),
|
|
122
|
+
inputProps: { "aria-label": "Show development versions" }
|
|
123
|
+
}
|
|
124
|
+
)
|
|
125
|
+
] }),
|
|
126
|
+
tags.length > 0 ? tags.map((tag) => /* @__PURE__ */ jsxs(
|
|
127
|
+
IndentedItem,
|
|
128
|
+
{
|
|
129
|
+
selected: currentVersion === tag.tag,
|
|
130
|
+
onClick: () => onSelect(tag.tag),
|
|
131
|
+
children: [
|
|
132
|
+
"v",
|
|
133
|
+
tag.tag
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
tag.tag
|
|
137
|
+
)) : /* @__PURE__ */ jsx(EmptyTag, { variant: "body2", color: "text.secondary", children: "No versions to show" })
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
)
|
|
141
|
+
] });
|
|
142
|
+
};
|
|
143
|
+
const TriggerButton = stylin(Button)(({ theme }) => ({
|
|
144
|
+
textTransform: "none",
|
|
145
|
+
borderColor: theme.palette.divider,
|
|
146
|
+
color: theme.palette.text.primary,
|
|
147
|
+
fontWeight: theme.typography.fontWeightMedium,
|
|
148
|
+
minWidth: theme.spacing(20)
|
|
149
|
+
}));
|
|
150
|
+
const AllVersionsItem = stylin(MenuItem)({
|
|
151
|
+
fontWeight: 500
|
|
152
|
+
});
|
|
153
|
+
const IndentedItem = stylin(MenuItem)(({ theme }) => ({
|
|
154
|
+
paddingLeft: theme.spacing(3)
|
|
155
|
+
}));
|
|
156
|
+
const SectionHeader = stylin(Typography)(({ theme }) => ({
|
|
157
|
+
display: "block",
|
|
158
|
+
padding: `${theme.spacing(1)} ${theme.spacing(2)}`,
|
|
159
|
+
textTransform: "uppercase",
|
|
160
|
+
letterSpacing: "0.04em",
|
|
161
|
+
fontWeight: theme.typography.fontWeightBold
|
|
162
|
+
}));
|
|
163
|
+
const ToggleRow = stylin(Box)(({ theme }) => ({
|
|
164
|
+
display: "flex",
|
|
165
|
+
alignItems: "center",
|
|
166
|
+
justifyContent: "space-between",
|
|
167
|
+
padding: `${theme.spacing(0.5)} ${theme.spacing(2)} ${theme.spacing(
|
|
168
|
+
0.5
|
|
169
|
+
)} ${theme.spacing(3)}`
|
|
170
|
+
}));
|
|
171
|
+
const EmptyTag = stylin(Typography)(({ theme }) => ({
|
|
172
|
+
padding: `${theme.spacing(1)} ${theme.spacing(3)}`
|
|
173
|
+
}));
|
|
174
|
+
|
|
175
|
+
export { RepoVersionSelect };
|
|
176
|
+
//# sourceMappingURL=RepoVersionSelect.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepoVersionSelect.esm.js","sources":["../../../src/features/repo/RepoVersionSelect.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport Box from '@massdriver/ui/Box';\nimport Button from '@massdriver/ui/Button';\nimport Divider from '@massdriver/ui/Divider';\nimport Menu, { MenuItem } from '@massdriver/ui/Menu';\nimport Switch from '@massdriver/ui/Switch';\nimport Typography from '@massdriver/ui/Typography';\nimport ExpandMoreIcon from '@massdriver/ui/icons/ExpandMoreIcon';\nimport stylin from '@massdriver/ui/stylin';\nimport { ALL_VERSIONS } from './resolveVersion';\n\n// Ported from apps/web/features/repos/components/RepoVersionSelect/ (container +\n// view merged into one component, matching this plugin's single-file style).\n// Selecting a version calls `onChange`; the page navigates.\n\ninterface Channel {\n name: string;\n tag: string;\n}\ninterface Tag {\n tag: string;\n createdAt?: string;\n}\ninterface Repo {\n releaseChannels?: { items?: Array<Channel | null> | null } | null;\n tags?: { items?: Array<Tag | null> | null } | null;\n}\n\nconst isDevTag = (tag: string): boolean => /-dev\\./.test(tag);\nconst isDevChannel = (channel: Channel): boolean =>\n Boolean(channel?.name?.includes('+dev'));\n\nconst buildTriggerLabel = (\n currentVersion: string | null | undefined,\n releaseChannels: Channel[],\n): string => {\n if (!currentVersion) return '—';\n if (currentVersion === ALL_VERSIONS) return 'All versions';\n const matchingChannel = releaseChannels.find(\n channel => channel.tag === currentVersion,\n );\n return matchingChannel\n ? `${matchingChannel.name} (v${currentVersion})`\n : `v${currentVersion}`;\n};\n\nexport const RepoVersionSelect = ({\n repo,\n currentVersion,\n onChange,\n disabled = false,\n}: {\n repo?: Repo | null;\n currentVersion?: string | null;\n onChange?: (version: string) => void;\n disabled?: boolean;\n}) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [showDevChannels, setShowDevChannels] = useState(false);\n const [showDevVersions, setShowDevVersions] = useState(false);\n\n const allChannels = useMemo(\n () => (repo?.releaseChannels?.items ?? []).filter(Boolean) as Channel[],\n [repo],\n );\n const releaseChannels = useMemo(\n () =>\n showDevChannels\n ? allChannels\n : allChannels.filter(channel => !isDevChannel(channel)),\n [allChannels, showDevChannels],\n );\n const allTags = useMemo(\n () => (repo?.tags?.items ?? []).filter(Boolean) as Tag[],\n [repo],\n );\n const tags = useMemo(\n () =>\n showDevVersions ? allTags : allTags.filter(tag => !isDevTag(tag.tag)),\n [allTags, showDevVersions],\n );\n\n const triggerLabel = buildTriggerLabel(currentVersion, allChannels);\n const open = Boolean(anchorEl);\n\n const onSelect = (nextVersion: string) => {\n setAnchorEl(null);\n if (nextVersion !== currentVersion) onChange?.(nextVersion);\n };\n\n return (\n <>\n <TriggerButton\n variant=\"outlined\"\n color=\"inherit\"\n onClick={(event: { currentTarget: HTMLElement }) =>\n setAnchorEl(event.currentTarget)\n }\n endIcon={<ExpandMoreIcon />}\n disabled={disabled || !repo}\n aria-haspopup=\"menu\"\n aria-expanded={open || undefined}\n >\n {triggerLabel}\n </TriggerButton>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{ dense: true }}\n >\n <AllVersionsItem\n selected={currentVersion === ALL_VERSIONS}\n onClick={() => onSelect(ALL_VERSIONS)}\n >\n All versions\n </AllVersionsItem>\n <Divider />\n\n <SectionHeader variant=\"caption\" color=\"text.secondary\">\n Release Channels\n </SectionHeader>\n <ToggleRow>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Show development channels\n </Typography>\n <Switch\n size=\"small\"\n checked={showDevChannels}\n onChange={(event: { target: { checked: boolean } }) =>\n setShowDevChannels(event.target.checked)\n }\n inputProps={{ 'aria-label': 'Show development channels' }}\n />\n </ToggleRow>\n {releaseChannels.length > 0 ? (\n releaseChannels.map(channel => (\n <IndentedItem\n key={channel.name}\n selected={currentVersion === channel.tag}\n onClick={() => onSelect(channel.tag)}\n >\n {channel.name} (v{channel.tag})\n </IndentedItem>\n ))\n ) : (\n <EmptyTag variant=\"body2\" color=\"text.secondary\">\n No release channels to show\n </EmptyTag>\n )}\n <Divider />\n\n <SectionHeader variant=\"caption\" color=\"text.secondary\">\n Versions\n </SectionHeader>\n <ToggleRow>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Show development versions\n </Typography>\n <Switch\n size=\"small\"\n checked={showDevVersions}\n onChange={(event: { target: { checked: boolean } }) =>\n setShowDevVersions(event.target.checked)\n }\n inputProps={{ 'aria-label': 'Show development versions' }}\n />\n </ToggleRow>\n {tags.length > 0 ? (\n tags.map(tag => (\n <IndentedItem\n key={tag.tag}\n selected={currentVersion === tag.tag}\n onClick={() => onSelect(tag.tag)}\n >\n v{tag.tag}\n </IndentedItem>\n ))\n ) : (\n <EmptyTag variant=\"body2\" color=\"text.secondary\">\n No versions to show\n </EmptyTag>\n )}\n </Menu>\n </>\n );\n};\n\nexport default RepoVersionSelect;\n\nconst TriggerButton = stylin(Button)(({ theme }: { theme: any }) => ({\n textTransform: 'none',\n borderColor: theme.palette.divider,\n color: theme.palette.text.primary,\n fontWeight: theme.typography.fontWeightMedium,\n minWidth: theme.spacing(20),\n}));\n\nconst AllVersionsItem = stylin(MenuItem)({\n fontWeight: 500,\n});\n\nconst IndentedItem = stylin(MenuItem)(({ theme }: { theme: any }) => ({\n paddingLeft: theme.spacing(3),\n}));\n\nconst SectionHeader = stylin(Typography)(({ theme }: { theme: any }) => ({\n display: 'block',\n padding: `${theme.spacing(1)} ${theme.spacing(2)}`,\n textTransform: 'uppercase',\n letterSpacing: '0.04em',\n fontWeight: theme.typography.fontWeightBold,\n}));\n\nconst ToggleRow = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: `${theme.spacing(0.5)} ${theme.spacing(2)} ${theme.spacing(\n 0.5,\n )} ${theme.spacing(3)}`,\n}));\n\nconst EmptyTag = stylin(Typography)(({ theme }: { theme: any }) => ({\n padding: `${theme.spacing(1)} ${theme.spacing(3)}`,\n}));\n"],"names":[],"mappings":";;;;;;;;;;;;AA4BA,MAAM,QAAA,GAAW,CAAC,GAAA,KAAyB,QAAA,CAAS,KAAK,GAAG,CAAA;AAC5D,MAAM,YAAA,GAAe,CAAC,OAAA,KACpB,OAAA,CAAQ,SAAS,IAAA,EAAM,QAAA,CAAS,MAAM,CAAC,CAAA;AAEzC,MAAM,iBAAA,GAAoB,CACxB,cAAA,EACA,eAAA,KACW;AACX,EAAA,IAAI,CAAC,gBAAgB,OAAO,QAAA;AAC5B,EAAA,IAAI,cAAA,KAAmB,cAAc,OAAO,cAAA;AAC5C,EAAA,MAAM,kBAAkB,eAAA,CAAgB,IAAA;AAAA,IACtC,CAAA,OAAA,KAAW,QAAQ,GAAA,KAAQ;AAAA,GAC7B;AACA,EAAA,OAAO,eAAA,GACH,GAAG,eAAA,CAAgB,IAAI,MAAM,cAAc,CAAA,CAAA,CAAA,GAC3C,IAAI,cAAc,CAAA,CAAA;AACxB,CAAA;AAEO,MAAM,oBAAoB,CAAC;AAAA,EAChC,IAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAKM;AACJ,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAA6B,IAAI,CAAA;AACjE,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5D,EAAA,MAAM,WAAA,GAAc,OAAA;AAAA,IAClB,OAAO,IAAA,EAAM,eAAA,EAAiB,SAAS,EAAC,EAAG,OAAO,OAAO,CAAA;AAAA,IACzD,CAAC,IAAI;AAAA,GACP;AACA,EAAA,MAAM,eAAA,GAAkB,OAAA;AAAA,IACtB,MACE,kBACI,WAAA,GACA,WAAA,CAAY,OAAO,CAAA,OAAA,KAAW,CAAC,YAAA,CAAa,OAAO,CAAC,CAAA;AAAA,IAC1D,CAAC,aAAa,eAAe;AAAA,GAC/B;AACA,EAAA,MAAM,OAAA,GAAU,OAAA;AAAA,IACd,OAAO,IAAA,EAAM,IAAA,EAAM,SAAS,EAAC,EAAG,OAAO,OAAO,CAAA;AAAA,IAC9C,CAAC,IAAI;AAAA,GACP;AACA,EAAA,MAAM,IAAA,GAAO,OAAA;AAAA,IACX,MACE,eAAA,GAAkB,OAAA,GAAU,OAAA,CAAQ,MAAA,CAAO,SAAO,CAAC,QAAA,CAAS,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,IACtE,CAAC,SAAS,eAAe;AAAA,GAC3B;AAEA,EAAA,MAAM,YAAA,GAAe,iBAAA,CAAkB,cAAA,EAAgB,WAAW,CAAA;AAClE,EAAA,MAAM,IAAA,GAAO,QAAQ,QAAQ,CAAA;AAE7B,EAAA,MAAM,QAAA,GAAW,CAAC,WAAA,KAAwB;AACxC,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,IAAI,WAAA,KAAgB,cAAA,EAAgB,QAAA,GAAW,WAAW,CAAA;AAAA,EAC5D,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,UAAA;AAAA,QACR,KAAA,EAAM,SAAA;AAAA,QACN,OAAA,EAAS,CAAC,KAAA,KACR,WAAA,CAAY,MAAM,aAAa,CAAA;AAAA,QAEjC,OAAA,sBAAU,cAAA,EAAA,EAAe,CAAA;AAAA,QACzB,QAAA,EAAU,YAAY,CAAC,IAAA;AAAA,QACvB,eAAA,EAAc,MAAA;AAAA,QACd,iBAAe,IAAA,IAAQ,MAAA;AAAA,QAEtB,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBACA,IAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,QAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA,EAAS,MAAM,WAAA,CAAY,IAAI,CAAA;AAAA,QAC/B,aAAA,EAAe,EAAE,KAAA,EAAO,IAAA,EAAK;AAAA,QAE7B,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,UAAU,cAAA,KAAmB,YAAA;AAAA,cAC7B,OAAA,EAAS,MAAM,QAAA,CAAS,YAAY,CAAA;AAAA,cACrC,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,8BACC,OAAA,EAAA,EAAQ,CAAA;AAAA,8BAER,aAAA,EAAA,EAAc,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,kBAAiB,QAAA,EAAA,kBAAA,EAExD,CAAA;AAAA,+BACC,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,KAAA,EAAM,kBAAiB,QAAA,EAAA,2BAAA,EAEnD,CAAA;AAAA,4BACA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,OAAA,EAAS,eAAA;AAAA,gBACT,UAAU,CAAC,KAAA,KACT,kBAAA,CAAmB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,gBAEzC,UAAA,EAAY,EAAE,YAAA,EAAc,2BAAA;AAA4B;AAAA;AAC1D,WAAA,EACF,CAAA;AAAA,UACC,eAAA,CAAgB,MAAA,GAAS,CAAA,GACxB,eAAA,CAAgB,IAAI,CAAA,OAAA,qBAClB,IAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cAEC,QAAA,EAAU,mBAAmB,OAAA,CAAQ,GAAA;AAAA,cACrC,OAAA,EAAS,MAAM,QAAA,CAAS,OAAA,CAAQ,GAAG,CAAA;AAAA,cAElC,QAAA,EAAA;AAAA,gBAAA,OAAA,CAAQ,IAAA;AAAA,gBAAK,KAAA;AAAA,gBAAI,OAAA,CAAQ,GAAA;AAAA,gBAAI;AAAA;AAAA,aAAA;AAAA,YAJzB,OAAA,CAAQ;AAAA,WAMhB,oBAED,GAAA,CAAC,QAAA,EAAA,EAAS,SAAQ,OAAA,EAAQ,KAAA,EAAM,kBAAiB,QAAA,EAAA,6BAAA,EAEjD,CAAA;AAAA,8BAED,OAAA,EAAA,EAAQ,CAAA;AAAA,8BAER,aAAA,EAAA,EAAc,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,kBAAiB,QAAA,EAAA,UAAA,EAExD,CAAA;AAAA,+BACC,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,KAAA,EAAM,kBAAiB,QAAA,EAAA,2BAAA,EAEnD,CAAA;AAAA,4BACA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,OAAA,EAAS,eAAA;AAAA,gBACT,UAAU,CAAC,KAAA,KACT,kBAAA,CAAmB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,gBAEzC,UAAA,EAAY,EAAE,YAAA,EAAc,2BAAA;AAA4B;AAAA;AAC1D,WAAA,EACF,CAAA;AAAA,UACC,IAAA,CAAK,MAAA,GAAS,CAAA,GACb,IAAA,CAAK,IAAI,CAAA,GAAA,qBACP,IAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cAEC,QAAA,EAAU,mBAAmB,GAAA,CAAI,GAAA;AAAA,cACjC,OAAA,EAAS,MAAM,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AAAA,cAChC,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBACG,GAAA,CAAI;AAAA;AAAA,aAAA;AAAA,YAJD,GAAA,CAAI;AAAA,WAMZ,oBAED,GAAA,CAAC,QAAA,EAAA,EAAS,SAAQ,OAAA,EAAQ,KAAA,EAAM,kBAAiB,QAAA,EAAA,qBAAA,EAEjD;AAAA;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;AAIA,MAAM,gBAAgB,MAAA,CAAO,MAAM,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EACnE,aAAA,EAAe,MAAA;AAAA,EACf,WAAA,EAAa,MAAM,OAAA,CAAQ,OAAA;AAAA,EAC3B,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,EAC1B,UAAA,EAAY,MAAM,UAAA,CAAW,gBAAA;AAAA,EAC7B,QAAA,EAAU,KAAA,CAAM,OAAA,CAAQ,EAAE;AAC5B,CAAA,CAAE,CAAA;AAEF,MAAM,eAAA,GAAkB,MAAA,CAAO,QAAQ,CAAA,CAAE;AAAA,EACvC,UAAA,EAAY;AACd,CAAC,CAAA;AAED,MAAM,eAAe,MAAA,CAAO,QAAQ,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EACpE,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,CAAC;AAC9B,CAAA,CAAE,CAAA;AAEF,MAAM,gBAAgB,MAAA,CAAO,UAAU,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EACvE,OAAA,EAAS,OAAA;AAAA,EACT,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,EAChD,aAAA,EAAe,WAAA;AAAA,EACf,aAAA,EAAe,QAAA;AAAA,EACf,UAAA,EAAY,MAAM,UAAA,CAAW;AAC/B,CAAA,CAAE,CAAA;AAEF,MAAM,YAAY,MAAA,CAAO,GAAG,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EAC5D,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB,eAAA;AAAA,EAChB,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA;AAAA,IAC1D;AAAA,GACD,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AACvB,CAAA,CAAE,CAAA;AAEF,MAAM,WAAW,MAAA,CAAO,UAAU,EAAE,CAAC,EAAE,OAAM,MAAuB;AAAA,EAClE,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAClD,CAAA,CAAE,CAAA;;;;"}
|